diff --git a/kernel/include/kmalloc.h b/kernel/include/kmalloc.h index 8d76285..7635647 100644 --- a/kernel/include/kmalloc.h +++ b/kernel/include/kmalloc.h @@ -39,4 +39,25 @@ union per_cpu_freelist_cache { }; }; +union partial_list { + void* freelists[KMALLOC_MAX_SIZE]; + struct { + void* kmalloc_8; + void* kmalloc_16; + void* kmalloc_32; + void* kmalloc_64; + void* kmalloc_128; + void* kmalloc_256; + void* kmalloc_512; + void* kmalloc_1024; + void* kmalloc_2048; + void* kmalloc_4096; + void* kmalloc_8192; + void* kmalloc_16384; + void* kmalloc_32768; + void* kmalloc_65536; + void* kmalloc_131072; + }; +}; + #endif \ No newline at end of file diff --git a/kernel/src/kmalloc.c b/kernel/src/kmalloc.c index a5dbbbc..94531d0 100644 --- a/kernel/src/kmalloc.c +++ b/kernel/src/kmalloc.c @@ -35,6 +35,9 @@ void* kzalloc(size_t size) { } void* kmalloc(size_t size) { + if (!size) { + return NULL; + } uint32_t core_id; __asm__ volatile( "rdtscp"