diff options
Diffstat (limited to 'kernel/memory')
-rw-r--r-- | kernel/memory/paging.c | 15 | ||||
-rw-r--r-- | kernel/memory/physalloc.c | 17 | ||||
-rw-r--r-- | kernel/memory/virtalloc.c | 4 |
3 files changed, 15 insertions, 21 deletions
diff --git a/kernel/memory/paging.c b/kernel/memory/paging.c index d10cf6d..5c4fa5c 100644 --- a/kernel/memory/paging.c +++ b/kernel/memory/paging.c @@ -514,7 +514,7 @@ static inline void *page_align(void *addr) return (void *)a; } -void *mapaddr(void *addr, size_t len) +void *kmapaddr(void *addr, size_t len) { void *phys = page_align(addr); ptrdiff_t error = (char *)addr - (char *)phys; @@ -531,7 +531,7 @@ void *mapaddr(void *addr, size_t len) return (char *)virt + error; } -void unmapaddr(void *addr) +void kunmapaddr(void *addr) { long pages = virtaddr_free(addr); if (pages < 1) @@ -539,7 +539,7 @@ void unmapaddr(void *addr) unmap_pages(kernel_pml4, addr, pages); } -void *alloc_pages(size_t count) +void *kalloc_pages(size_t count) { void *virt = virtaddr_alloc(count); if (virt == NULL) @@ -559,13 +559,12 @@ void *alloc_pages(size_t count) return virt; } -void free_page(void *virt) +void *kalloc_page(void) { - (void)virt; - panic("free_page is not yet implemented"); + return kalloc_pages(1); } -void free_pages(void *virt) +void kfree_pages(void *virt) { long pages = virtaddr_free(virt); if (pages < 1) @@ -573,7 +572,7 @@ void free_pages(void *virt) unmap_pages(kernel_pml4, virt, pages); } -int load_page(void *virt_addr) +int kload_page(void *virt_addr) { volatile struct pte *page = get_page(kernel_pml4, virt_addr); if (page == NULL) diff --git a/kernel/memory/physalloc.c b/kernel/memory/physalloc.c index 53f8aaf..a907077 100644 --- a/kernel/memory/physalloc.c +++ b/kernel/memory/physalloc.c @@ -185,9 +185,9 @@ void physalloc_init(struct memory_map *map) memory_start = page_align((uintptr_t)page_area_addr + page_area_size); - bitmap = mapaddr(bitmap, bitmap_size); + bitmap = kmapaddr(bitmap, bitmap_size); memset(bitmap, 0, bitmap_size); - page_area_addr = mapaddr(page_area_addr, page_area_size); + page_area_addr = kmapaddr(page_area_addr, page_area_size); memset(page_area_addr, 0, page_area_size); page_start = (struct memory_segment *)page_area_addr; @@ -210,15 +210,10 @@ void physalloc_init(struct memory_map *map) free_memory = page_count * PAGE_SIZE; char buf[20]; - printf("\nMEMORY USAGE\n"); - printf("mem total: %s\n", btoa(memory_total(), buf)); - printf("mem free: %s\n", btoa(memory_free(), buf)); - printf("mem used: %s\n\n", btoa(memory_used(), buf)); -} - -void *alloc_page(void) -{ - return alloc_pages(1); + kprintf("\nMEMORY USAGE\n"); + kprintf("mem total: %s\n", btoa(memory_total(), buf)); + kprintf("mem free: %s\n", btoa(memory_free(), buf)); + kprintf("mem used: %s\n\n", btoa(memory_used(), buf)); } uint64_t memory_total(void) diff --git a/kernel/memory/virtalloc.c b/kernel/memory/virtalloc.c index 2b64b72..6b7fd20 100644 --- a/kernel/memory/virtalloc.c +++ b/kernel/memory/virtalloc.c @@ -64,11 +64,11 @@ static struct addr_node *get_node(void) if (new_alloc < 8) new_alloc = 8; struct addr_node *new_nodes; - new_nodes = malloc(sizeof(struct addr_node) * new_alloc); + new_nodes = kalloc(sizeof(struct addr_node) * new_alloc); if (new_nodes == NULL) panic("virt addr alloc nodes is null"); update_node_ptrs(alloc_nodes, new_nodes, alloc_node_count, new_alloc); - free(alloc_nodes); + kfree(alloc_nodes); alloc_nodes = new_nodes; alloc_node_count = new_alloc; is_allocating = false; |