Embedded optimized memory allocator
[BeRTOS core functionality]
Heap subsystem (public interface). More...
Data Structures | |
| struct | Heap |
| A heap. More... | |
Defines | |
| #define | HEAP_DEFINE_BUF(name, size) heap_buf_t name[((size) + sizeof(heap_buf_t) - 1) / sizeof(heap_buf_t)] |
| Utility macro to allocate a heap of size size. | |
Functions | |
| void | heap_init (struct Heap *heap, void *memory, size_t size) |
| Initialize heap within the buffer pointed by memory which is of size bytes. | |
| void * | heap_allocmem (struct Heap *heap, size_t size) |
| Allocate a chunk of memory of size bytes from the heap. | |
| void | heap_freemem (struct Heap *heap, void *mem, size_t size) |
| Free a chunk of memory of size bytes from the heap. | |
| size_t | heap_freeSpace (struct Heap *h) |
| Returns the number of free bytes in a heap. | |
Compatibility interface with C standard library | |
|
| |
| void * | heap_malloc (struct Heap *heap, size_t size) |
| Standard malloc interface. | |
| void * | heap_calloc (struct Heap *heap, size_t size) |
| Standard calloc interface. | |
| void | heap_free (struct Heap *heap, void *mem) |
| Free a block of memory, determining its size automatically. | |
Detailed Description
Heap subsystem (public interface).
Define Documentation
| #define HEAP_DEFINE_BUF | ( | name, | |||
| size | ) | heap_buf_t name[((size) + sizeof(heap_buf_t) - 1) / sizeof(heap_buf_t)] |
Function Documentation
| void heap_free | ( | struct Heap * | h, | |
| void * | mem | |||
| ) |
Free a block of memory, determining its size automatically.
- Parameters:
-
h Heap from which the block was allocated. mem Pointer to a block of memory previously allocated with either heap_malloc() or heap_calloc().
- Note:
- If mem is a NULL pointer, no operation is performed.
- Freeing the same memory block twice has undefined behavior.
- This function works like the ANSI C free().
| size_t heap_freeSpace | ( | struct Heap * | h | ) |
Returns the number of free bytes in a heap.
- Parameters:
-
h the heap to check.
- Note:
- The returned value is the sum of all free memory regions in the heap. Those regions are likely to be *not* contiguous, so a successive allocation may fail even if the requested amount of memory is lower than the current free space.
