28 lines
600 B
C
28 lines
600 B
C
#pragma once
|
|
|
|
#include <stddef.h>
|
|
|
|
#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];
|