void *chCoreTrimI(size_t size) { uint8_t *p; chDbgCheckClassI(); p = (uint8_t *)MEM_ALIGN_PREV(endmem - size); if (p < nextmem) return NULL; endmem = p; return (void *)p; }
/** * @brief Low level memory manager initialization. * * @notapi */ void _core_init(void) { #if CH_MEMCORE_SIZE == 0 extern uint8_t __heap_base__[]; extern uint8_t __heap_end__[]; nextmem = (uint8_t *)MEM_ALIGN_NEXT(__heap_base__); endmem = (uint8_t *)MEM_ALIGN_PREV(__heap_end__); #else static stkalign_t buffer[MEM_ALIGN_NEXT(CH_MEMCORE_SIZE)/MEM_ALIGN_SIZE]; nextmem = (uint8_t *)&buffer[0]; endmem = (uint8_t *)&buffer[MEM_ALIGN_NEXT(CH_MEMCORE_SIZE)/MEM_ALIGN_SIZE]; #endif }
/** * @brief Low level memory manager initialization. * * @notapi */ void _core_init(void) { #if CH_CFG_MEMCORE_SIZE == 0 extern uint8_t __heap_base__[]; extern uint8_t __heap_end__[]; /*lint -save -e9033 [10.8] Required cast operations.*/ nextmem = (uint8_t *)MEM_ALIGN_NEXT(__heap_base__); endmem = (uint8_t *)MEM_ALIGN_PREV(__heap_end__); /*lint restore*/ #else static stkalign_t buffer[MEM_ALIGN_NEXT(CH_CFG_MEMCORE_SIZE) / MEM_ALIGN_SIZE]; nextmem = (uint8_t *)&buffer[0]; endmem = (uint8_t *)&buffer[MEM_ALIGN_NEXT(CH_CFG_MEMCORE_SIZE) / MEM_ALIGN_SIZE]; #endif }