summaryrefslogtreecommitdiff
path: root/kernel/memory.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/memory.h')
-rw-r--r--kernel/memory.h25
1 files changed, 22 insertions, 3 deletions
diff --git a/kernel/memory.h b/kernel/memory.h
index 9093985..67b0648 100644
--- a/kernel/memory.h
+++ b/kernel/memory.h
@@ -1,8 +1,11 @@
#pragma once
+#include <kernel/memory/paging.h>
+#include <kernel/memory/range.h>
+
#include <stddef.h>
-#include <kernel/memory/range.h>
+typdef int (*memory_space_handler_func)(uint32_t code, void *vaddr);
enum page_map_flags
{
@@ -17,6 +20,19 @@ enum page_map_flags
SIZE_MASK = 0xc,
};
+enum memory_space_flags
+{
+ SYSTEM_SPACE = 0x1, // memory cannot be swapped
+};
+
+struct memory_space
+{
+ enum memory_space_flags flags;
+ memory_space_handler_func handler;
+ void *base;
+ void *head;
+};
+
void memory_init(struct memory_range *ranges, int count);
void *memcpy(void *dest, const void *src, size_t size);
@@ -30,5 +46,8 @@ void page_unmap(void *vaddr);
phys_addr_t page_alloc(void);
void page_free(phys_addr_t paddr);
-void *malloc(size_t size);
-void free(void *block);
+void *heap_alloc(size_t size);
+void heap_free(void *block);
+
+void *memory_alloc(size_t size);
+void memory_free(void *block);