AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
heap.h
1 
45 #ifndef _AVRIO_HEAP_H_
46 #define _AVRIO_HEAP_H_
47 
48 #include <avrio/defs.h>
49 __BEGIN_C_DECLS
50 /* ========================================================================== */
59 #ifndef __DOXYGEN__
60 /* NOTE: struct size must be a 2's power! */
61 typedef struct xMemChunk {
62  struct xMemChunk *next;
63  size_t size;
64 } xMemChunk;
65 
66 typedef xMemChunk heap_buf_t;
67 
68 #define HEAP_DEFINE_BUF(name, size) \
69  heap_buf_t name[((size) + sizeof(heap_buf_t) - 1) / sizeof(heap_buf_t)]
70 
71 #else
72 
77 #define HEAP_DEFINE_BUF(name, size)
78 #endif
79 
83 typedef struct xHeap {
84  struct xMemChunk * freelist;
85 } xHeap;
86 
94 void vHeapInit (xHeap* heap, void* memory, size_t size);
95 
103 void * pvHeapAllocMem (xHeap* heap, size_t size);
104 
112 void vHeapFreeMem (xHeap* heap, void *mem, size_t size);
113 
123 size_t ulHeapFreeSpace (xHeap* heap);
124 
136 void * pvHeapMalloc (xHeap* heap, size_t size);
137 
150 void * pvHeapCalloc (xHeap* heap, size_t nmemb, size_t size);
151 
160 void vHeapFree (xHeap* heap, void * mem);
161 
167 /* ========================================================================== */
168 __END_C_DECLS
169 #endif /* _AVRIO_HEAP_H_ */
size_t ulHeapFreeSpace(xHeap *heap)
Quantité de mémoire libre d&#39;un tas.
void * pvHeapMalloc(xHeap *heap, size_t size)
Alloue un bloc sur le tas.
Structure pour gérer un tas.
Definition: heap.h:83
void vHeapFree(xHeap *heap, void *mem)
Libère un bloc alloué avec pvHeapMalloc() ou pvHeapCalloc()
void vHeapInit(xHeap *heap, void *memory, size_t size)
Initialise un tas.
void vHeapFreeMem(xHeap *heap, void *mem, size_t size)
Libère un bloc alloué avec pvHeapAllocMem()
void * pvHeapAllocMem(xHeap *heap, size_t size)
Alloue un bloc sur le tas.
void * pvHeapCalloc(xHeap *heap, size_t nmemb, size_t size)
Alloue un bloc sur le tas pour un tableau.
struct xHeap xHeap
Structure pour gérer un tas.
struct xMemChunk * freelist
Definition: heap.h:84