X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/61bcf0c65dac58d2f29ab40e016489c89ec8eec0..9d62069fd52fa2108b677ffadc7f6138c7641757:/lunaix-os/kernel/mm/kalloc.c diff --git a/lunaix-os/kernel/mm/kalloc.c b/lunaix-os/kernel/mm/kalloc.c index 3aba61e..ba00b09 100644 --- a/lunaix-os/kernel/mm/kalloc.c +++ b/lunaix-os/kernel/mm/kalloc.c @@ -13,6 +13,7 @@ */ #include #include +#include #include #include @@ -64,9 +65,18 @@ static heap_context_t kheap; int kalloc_init() { - kheap.start = &__kernel_heap_start; + kheap.start = KHEAP_START; kheap.brk = NULL; - kheap.max_addr = (void*)KSTACK_START; + kheap.max_addr = + (void*)PROC_START; // 在新的布局中,堆结束的地方即为进程表开始的地方 + + for (size_t i = 0; i < KHEAP_SIZE_MB >> 2; i++) { + vmm_set_mapping(PD_REFERENCED, + (uintptr_t)kheap.start + (i << 22), + 0, + PG_PREM_RW, + VMAP_NOMAP); + } if (!dmm_init(&kheap)) { return 0;