summaryrefslogtreecommitdiff
path: root/kernel/memory.c
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2021-06-02 13:52:02 +0000
committerAda Christine <adachristine18@gmail.com>2021-06-02 13:52:02 +0000
commit4971aa814d0ef52707503cc2138c67c4c5662b54 (patch)
tree7c794e50f9dd5ad680b0bccde0a8eed29b499f5d /kernel/memory.c
parent298ff8e784769588c9e39ffa5b50a8391216c43d (diff)
cast address and offset calculations
Diffstat (limited to 'kernel/memory.c')
-rw-r--r--kernel/memory.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/kernel/memory.c b/kernel/memory.c
index 31dd6f1..62f3a38 100644
--- a/kernel/memory.c
+++ b/kernel/memory.c
@@ -101,10 +101,11 @@ static struct memory_range init_grab_pages(struct memory_range *ranges,
request.base = ranges[i].base;
ranges[i].base += request.size;
ranges[i].size -= request.size;
- break;
+ return request;
}
}
+ request.type = INVALID_MEMORY;
return request;
}
@@ -286,12 +287,6 @@ static struct memory_space init_anonymous_space(void *base, void *head)
return space;
}
-static void init_heap_space(struct memory_space *heap)
-{
- // the heap is anonymous space that will grow as-needed.
- (void)heap;
-}
-
void memory_init(struct memory_range *ranges, int count)
{
init_create_page_array(ranges, count);
@@ -316,8 +311,6 @@ void memory_init(struct memory_range *ranges, int count)
kernel_pagemap_space.prev = &kernel_stack_space;
root_memory_space = &kernel_image_space;
-
- init_heap_space(&kernel_heap_space);
}
static void *page_map_at(void *vaddr,
@@ -417,6 +410,28 @@ void page_free(phys_addr_t paddr)
free_pages++;
}
+void *heap_alloc(size_t size)
+{
+ (void)size;
+ return NULL;
+}
+
+void heap_free(void *block)
+{
+ (void)block;
+}
+
+void *memory_alloc(size_t size)
+{
+ (void)size;
+ return NULL;
+}
+
+void memory_free(void *block)
+{
+ (void)block;
+}
+
static uint64_t *get_kernel_pm1e(void *vaddr)
{
return &kernel_pm1[kpm1_index(vaddr)];
@@ -492,6 +507,8 @@ int anonymous_page_handler(uint32_t code, void *address)
if (page_phys)
{
*pm1e = page_address(page_phys, 1)|PAGE_WR|PAGE_PR;
+ // clear a potentially dirty page.
+ memset((void *)page_address(address, 1), 0, page_size(1));
}
}
}