Move include/malloc.h to include/gpxe/malloc.h, since everything in there
authorMichael Brown <mcb30@etherboot.org>
Thu, 18 Jan 2007 20:11:04 +0000 (20:11 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 18 Jan 2007 20:11:04 +0000 (20:11 +0000)
is now gPXE-specific.  (The standard malloc() et al have been in stdlib.h
for a while).

Add free memory counter.

src/core/heap.c
src/core/malloc.c
src/include/gpxe/malloc.h [moved from src/include/malloc.h with 84% similarity]
src/net/pkbuff.c

index f2c7e80..4afd270 100644 (file)
@@ -1,4 +1,4 @@
-#include <malloc.h>
+#include <gpxe/malloc.h>
 #include <gpxe/heap.h>
 
 /**
index db2b500..448080b 100644 (file)
@@ -22,7 +22,7 @@
 #include <strings.h>
 #include <io.h>
 #include <gpxe/list.h>
-#include <malloc.h>
+#include <gpxe/malloc.h>
 
 /** @file
  *
@@ -69,6 +69,9 @@ struct autosized_block {
 /** List of free memory blocks */
 static LIST_HEAD ( free_blocks );
 
+/** Total amount of free memory */
+size_t freemem;
+
 /**
  * Allocate a memory block
  *
@@ -134,6 +137,9 @@ void * alloc_memblock ( size_t size, size_t align ) {
                         */
                        if ( pre_size < MIN_MEMBLOCK_SIZE )
                                list_del ( &pre->list );
+                       /* Update total free memory */
+                       freemem -= size;
+                       /* Return allocated block */
                        DBG ( "Allocated [%p,%p)\n", block,
                              ( ( ( void * ) block ) + size ) );
                        return block;
@@ -206,6 +212,9 @@ void free_memblock ( void *ptr, size_t size ) {
                freeing->size += block->size;
                list_del ( &block->list );
        }
+
+       /* Update free memory counter */
+       freemem += size;
 }
 
 /**
similarity index 84%
rename from src/include/malloc.h
rename to src/include/gpxe/malloc.h
index b14ec78..0e18f6a 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef _MALLOC_H
-#define _MALLOC_H
+#ifndef _GPXE_MALLOC_H
+#define _GPXE_MALLOC_H
 
 #include <stdint.h>
 
 
 /*
  * Prototypes for the standard functions (malloc() et al) are in
- * stdlib.h.  Include <malloc.h> only if you need the non-standard
- * functions, such as malloc_dma().
+ * stdlib.h.  Include <gpxe/malloc.h> only if you need the
+ * non-standard functions, such as malloc_dma().
  *
  */
 #include <stdlib.h>
 
+extern size_t freemem;
+
 extern void * alloc_memblock ( size_t size, size_t align );
 extern void free_memblock ( void *ptr, size_t size );
 extern void mpopulate ( void *start, size_t len );
@@ -52,4 +54,4 @@ static inline void free_dma ( void *ptr, size_t size ) {
        free_memblock ( ptr, size );
 }
 
-#endif /* _MALLOC_H */
+#endif /* _GPXE_MALLOC_H */
index ac30883..63bc95f 100644 (file)
@@ -17,7 +17,7 @@
  */
 
 #include <stdint.h>
-#include <malloc.h>
+#include <gpxe/malloc.h>
 #include <gpxe/pkbuff.h>
 
 /** @file