summaryrefslogtreecommitdiff
path: root/src/kernel/mem
diff options
context:
space:
mode:
authordzwdz2022-07-16 16:49:55 +0200
committerdzwdz2022-07-16 16:49:55 +0200
commitce80ee8d40b0a2b48bfbbceac9a0baee189c5e1b (patch)
tree2cd86d9205c35286359f62264c4ea5d6ee97a77e /src/kernel/mem
parent912d2e3c7eb1baa71dda2c0a28aa5809eaa96f27 (diff)
amd64: just enough paging support to map init
Diffstat (limited to 'src/kernel/mem')
-rw-r--r--src/kernel/mem/alloc.c6
-rw-r--r--src/kernel/mem/alloc.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/src/kernel/mem/alloc.c b/src/kernel/mem/alloc.c
index 797b018..e0cc5f4 100644
--- a/src/kernel/mem/alloc.c
+++ b/src/kernel/mem/alloc.c
@@ -93,6 +93,12 @@ void *page_alloc(size_t pages) {
panic_unimplemented();
}
+void *page_zalloc(size_t pages) {
+ void *p = page_alloc(pages);
+ memset(p, 0, pages * PAGE_SIZE);
+ return p;
+}
+
// frees `pages` consecutive pages starting from *first
void page_free(void *first_addr, size_t pages) {
size_t first = (uintptr_t)(first_addr - page_bitmap_start) / PAGE_SIZE;
diff --git a/src/kernel/mem/alloc.h b/src/kernel/mem/alloc.h
index a92d866..14c4361 100644
--- a/src/kernel/mem/alloc.h
+++ b/src/kernel/mem/alloc.h
@@ -9,7 +9,10 @@ void mem_init(struct kmain_info *);
void mem_debugprint(void);
// allocates `pages` consecutive pages
+// TODO deprecate
void *page_alloc(size_t pages);
+// zeroes the allocated pages
+void *page_zalloc(size_t pages);
// frees `pages` consecutive pages starting from *first
void page_free(void *first, size_t pages);