31 #if (CH_CFG_USE_HEAP == TRUE) || defined(__DOXYGEN__) 41 #if (SIZEOF_PTR == 4) || defined(__DOXYGEN__) 42 #define CH_HEAP_ALIGNMENT 8U 43 #elif (SIZEOF_PTR == 2) 44 #define CH_HEAP_ALIGNMENT 4U 46 #error "unsupported pointer size" 57 #if CH_CFG_USE_MEMCORE == FALSE 58 #error "CH_CFG_USE_HEAP requires CH_CFG_USE_MEMCORE" 61 #if (CH_CFG_USE_MUTEXES == FALSE) && (CH_CFG_USE_SEMAPHORES == FALSE) 62 #error "CH_CFG_USE_HEAP requires CH_CFG_USE_MUTEXES and/or CH_CFG_USE_SEMAPHORES" 100 #if (CH_CFG_USE_MUTEXES == TRUE) || defined(__DOXYGEN__) 114 #define CH_HEAP_AREA(name, size) \ 115 ALIGNED_VAR(CH_HEAP_ALIGNMENT) \ 116 uint8_t name[MEM_ALIGN_NEXT((size), CH_HEAP_ALIGNMENT)] void chHeapFree(void *p)
Frees a previously allocated memory block.
memgetfunc2_t provider
Memory blocks provider for this heap.
static void * chHeapAlloc(memory_heap_t *heapp, size_t size)
Allocates a block of memory from the heap by using the first-fit algorithm.
heap_header_t header
Free blocks list header.
static size_t chHeapGetSize(const void *p)
Returns the size of an allocated block.
void *(* memgetfunc2_t)(size_t size, unsigned align, size_t offset)
Enhanced memory get function.
void * chHeapAllocAligned(memory_heap_t *heapp, size_t size, unsigned align)
Allocates a block of memory from the heap by using the first-fit algorithm.
mutex_t mtx
Heap access mutex.
size_t chHeapStatus(memory_heap_t *heapp, size_t *totalp, size_t *largestp)
Reports the heap status.
void chHeapObjectInit(memory_heap_t *heapp, void *buf, size_t size)
Initializes a memory heap from a static memory area.
#define CH_HEAP_ALIGNMENT
Minimum alignment used for heap.
void _heap_init(void)
Initializes the default heap.
Structure describing a memory heap.