heap.h

Go to the documentation of this file.
00001 
00046 /*#*
00047  *#* $Log$
00048  *#* Revision 1.7  2006/07/19 12:56:27  bernie
00049  *#* Convert to new Doxygen style.
00050  *#*
00051  *#* Revision 1.6  2005/11/27 23:36:19  bernie
00052  *#* Use appconfig.h instead of cfg/config.h.
00053  *#*
00054  *#* Revision 1.5  2005/11/04 16:20:02  bernie
00055  *#* Fix reference to README.devlib in header.
00056  *#*
00057  *#* Revision 1.4  2005/04/11 19:10:28  bernie
00058  *#* Include top-level headers from cfg/ subdir.
00059  *#*
00060  *#* Revision 1.3  2004/08/25 14:12:09  rasky
00061  *#* Aggiornato il comment block dei log RCS
00062  *#*
00063  *#* Revision 1.2  2004/08/04 15:54:18  rasky
00064  *#* Merge da SC: prima versione veramente funzionante
00065  *#*
00066  *#* Revision 1.1  2004/07/31 16:33:58  rasky
00067  *#* Spostato lo heap da kern/ a mware/
00068  *#*
00069  *#* Revision 1.2  2004/06/03 11:27:09  bernie
00070  *#* Add dual-license information.
00071  *#*
00072  *#* Revision 1.1  2004/05/23 17:27:00  bernie
00073  *#* Import kern/ subdirectory.
00074  *#*
00075  *#*/
00076 
00077 #ifndef MWARE_HEAP_H
00078 #define MWARE_HEAP_H
00079 
00080 #include <cfg/compiler.h>
00081 #include <appconfig.h>
00082 
00083 struct _MemChunk;
00084 
00086 struct Heap
00087 {
00088     struct _MemChunk *FreeList;     
00089 };
00090 
00091 
00093 void heap_init(struct Heap* heap, void* memory, size_t size);
00094 
00096 void *heap_allocmem(struct Heap* heap, size_t size);
00097 
00099 void heap_freemem(struct Heap* heap, void *mem, size_t size);
00100 
00101 
00102 #define HNEW(heap, type) \
00103     (type*)heap_allocmem(heap, sizeof(type))
00104 
00105 #define HNEWVEC(heap, type, nelem) \
00106     (type*)heap_allocmem(heap, sizeof(type) * (nelem))
00107 
00108 #define HDELETE(heap, type, mem) \
00109     heap_freemem(heap, mem, sizeof(type))
00110 
00111 #define HDELETEVEC(heap, type, nelem, mem) \
00112     heap_freemem(heap, mem, sizeof(type) * (nelem))
00113 
00114 
00115 #if CONFIG_HEAP_MALLOC
00116 
00117 void *heap_malloc(struct Heap* heap, size_t size);
00118 void *heap_calloc(struct Heap* heap, size_t size);
00119 void heap_free(struct Heap* heap, void * mem);
00120 
00121 #endif
00122 
00123 #endif /* MWARE_HEAP_H */