47 #define MM_FREE 0x0000 48 #define MM_RESERVED 0xffff 53 #define MM_HEADER_SIZE 2 54 #define MM_SPLIT_THRESH (MM_HEADER_SIZE+8) 68 #define MM_BLOCK_FREE(addr) \ 69 next=(size_t*)(addr); \ 70 *current=((((size_t)next)-(size_t)current)-2)>>1; \ 79 #define MM_BLOCK_RESERVED(addr) \ 80 next=(size_t*)(((size_t)addr)-4); \ 81 *current=((((size_t)next)-(size_t)current)-2)>>1; \ 82 *(next++)=MM_RESERVED; \ 107 #endif // __sys_mm_h__ int mm_free_mem(void)
how many bytes of memory are free?
Interface: memory data types.
kernel configuration file
void mm_reaper()
free all blocks allocated by the current process
size_t mm_start
end of kernel code + data
size_t * mm_first_free
ptr to first free block.
Interface: reduced standard C library.
void mm_init()
initialize memory management