#pragma once #include #define KMALLOC_MAX_ALLOCATOR_SIZE 256 typedef struct kmalloc_header { size_t unit; size_t left; void *begin; struct kmalloc_header *page_prev, *page_next; }__attribute__((packed)) kmalloc_header_t; typedef struct { size_t left; kmalloc_header_t *page_begin; } kmalloc_allocator_t; void init_mman_kmalloc(); void *simple_alloc(size_t size); void *mman_alloc(size_t size); void mman_free(void *ptr); extern void *(*kmalloc)(size_t size); extern void (*kfree)(void *ptr); extern kmalloc_allocator_t mman_kmalloc_pool[KMALLOC_MAX_ALLOCATOR_SIZE + 1];