diff options
| author | Ian McFarlane <i.mcfarlane2002@gmail.com> | 2025-04-17 14:19:40 -0400 |
|---|---|---|
| committer | Ian McFarlane <i.mcfarlane2002@gmail.com> | 2025-04-17 14:19:40 -0400 |
| commit | 7108e7c951f7cff79ce4992f1c7d8d0af0bb5af6 (patch) | |
| tree | e99684b87952bded5e51c83848a5d35ab53d9ab0 /kernel/memory/memory.c | |
| parent | starting on ata (diff) | |
| parent | clang 18 in flake instead of zig (diff) | |
| download | comus-7108e7c951f7cff79ce4992f1c7d8d0af0bb5af6.tar.gz comus-7108e7c951f7cff79ce4992f1c7d8d0af0bb5af6.tar.bz2 comus-7108e7c951f7cff79ce4992f1c7d8d0af0bb5af6.zip | |
Merge branch 'main' into ata
Diffstat (limited to '')
| -rw-r--r-- | kernel/memory/memory.c | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/kernel/memory/memory.c b/kernel/memory/memory.c index 145ce2b..2d560f4 100644 --- a/kernel/memory/memory.c +++ b/kernel/memory/memory.c @@ -1,21 +1,82 @@ +#include "lib/klib.h" #include <comus/memory.h> #include <comus/asm.h> #include <comus/mboot.h> #include <lib.h> +#include "memory.h" #include "paging.h" #include "virtalloc.h" #include "physalloc.h" +mem_ctx_t kernel_mem_ctx; +struct mem_ctx_s _kernel_mem_ctx; +extern volatile char kernel_pml4[]; +extern struct virt_ctx kernel_virt_ctx; + +void *kmapaddr(void *phys, void *virt, size_t len, unsigned int flags) +{ + return mem_mapaddr(kernel_mem_ctx, phys, virt, len, flags); +} + +void kunmapaddr(void *virt) +{ + mem_unmapaddr(kernel_mem_ctx, virt); +} + +void *kalloc_page(void) +{ + return mem_alloc_page(kernel_mem_ctx); +} + +void *kalloc_pages(size_t count) +{ + return mem_alloc_pages(kernel_mem_ctx, count); +} + +void kfree_pages(void *ptr) +{ + mem_free_pages(kernel_mem_ctx, ptr); +} + +int kload_page(void *virt) +{ + return mem_load_page(kernel_mem_ctx, virt); +} + +mem_ctx_t mem_ctx_alloc(void) +{ + panic("not yet implemented"); +} + +mem_ctx_t mem_ctx_clone(mem_ctx_t ctx, bool cow) +{ + (void)ctx; + (void)cow; + + panic("not yet implemented"); +} + +void mem_ctx_free(mem_ctx_t ctx) +{ + (void)ctx; + + panic("not yet implemented"); +} + void memory_init(void) { struct memory_map mmap; if (mboot_get_mmap(&mmap)) panic("failed to load memory map"); + kernel_mem_ctx = &_kernel_mem_ctx; + kernel_mem_ctx->pml4 = kernel_pml4; + kernel_mem_ctx->virtctx = &kernel_virt_ctx; + cli(); paging_init(); - virtaddr_init(); + virtaddr_init(kernel_mem_ctx->virtctx); physalloc_init(&mmap); sti(); } |