aboutsummaryrefslogtreecommitdiff
path: root/common/vmem.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2021-12-29 23:23:36 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2021-12-29 23:53:06 +0200
commit4f4d9fdc89c27aa3346467a24b621954f4564d3b (patch)
treec4ba4fb583a43b8fb27730b4cdb9b4b1395da91c /common/vmem.c
parent4e5595a089c815febd7a0d42ab62940bf13f73ac (diff)
downloadkmi-4f4d9fdc89c27aa3346467a24b621954f4564d3b.tar.gz
kmi-4f4d9fdc89c27aa3346467a24b621954f4564d3b.zip
Refactoring
+ Mainly just moving stuff out or arch/riscv/ that should be handled in common/ + Prepared separate process stack/call stack for server callbacks, rest to be implemeted soon ish
Diffstat (limited to 'common/vmem.c')
-rw-r--r--common/vmem.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/common/vmem.c b/common/vmem.c
index ffe9b32..9ff3b96 100644
--- a/common/vmem.c
+++ b/common/vmem.c
@@ -182,6 +182,9 @@ static struct sp_mem *sp_find_used_closest(struct sp_reg_root *r, vm_t start)
struct sp_mem *closest = 0;
size_t md = (size_t)(-1);
struct sp_node *n = sp_root(r->used_regions);
+ if(!n)
+ return mem_container(sp_root(r->free_regions));
+
while(n){
struct sp_mem *t = mem_container(n);
size_t d = ABS((ssize_t)start - (ssize_t)t->start);
@@ -415,12 +418,12 @@ size_t uvmem_size()
* NOTE: not actually optimal, this doesn't bother to go through possible
* permutations etc. which would be slow and I don't want to implement it.
*/
-vm_t map_fill_region(struct vm_branch_t *b, vm_t start, size_t bytes, uint8_t flags)
+vm_t map_fill_region(struct vm_branch *b, vm_t start, size_t bytes, uint8_t flags)
{
pm_t offset = 0;
pm_t runner = __page(start);
size_t pages = __pages(bytes);
- enum mm_order_t top = __mm_max_order;
+ enum mm_order top = __mm_max_order;
/* actual start might not be the same as the user specified start */
start = __addr(runner);