diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-10-30 02:18:12 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-10-30 02:18:12 +0200 |
| commit | e7b5881903ad81efee63966e7d2c42524d465dfc (patch) | |
| tree | 86753586a7be933685c313c172545bdaf9086dd1 /src | |
| parent | 44a73ecab6e91519627786a5101cd4f1a2f2b0d7 (diff) | |
| download | kmi-e7b5881903ad81efee63966e7d2c42524d465dfc.tar.gz kmi-e7b5881903ad81efee63966e7d2c42524d465dfc.zip | |
tests pass
Diffstat (limited to 'src')
| -rw-r--r-- | src/pmem.c | 8 | ||||
| -rw-r--r-- | src/tcb.c | 8 |
2 files changed, 9 insertions, 7 deletions
@@ -277,7 +277,7 @@ static pm_t __alloc_page(enum mm_order order) __get_bit(bucket, a, &set, &bit); bmap = __get_set(bucket, set); - bmap->size = order_width(order + 1); + assert(bmap->size != 0 && bmap->size <= order_width(order + 1)); bmap->next = NULL; bmap->prev = NULL; @@ -491,6 +491,9 @@ static void __mark_area_used(pm_t base, pm_t top) return; } + top = align_up(top, BASE_PAGE_SIZE); + base = align_down(base, BASE_PAGE_SIZE); + size_t area_left = top - base; pm_t runner = base; while (area_left >= BASE_PAGE_SIZE) { @@ -501,6 +504,8 @@ static void __mark_area_used(pm_t base, pm_t top) if (area_left != 0) mark_used(BASE_PAGE, runner); + + info("marked [%lx - %lx] reserved\n", base, top); } /** Helper for keeping track of which memory regions to avoid placing data into. */ @@ -548,7 +553,6 @@ static void __mark_reserved(pm_t ram_base, pm_t ram_size, size_t avoid_count, pm_t top = base + size; __mark_area_used(base, top); - info("marked [%lx - %lx] reserved\n", base, top); } } @@ -107,7 +107,7 @@ static stat_t __init_free_thread(struct tcb *t) if (setup_rpc_stack(t)) { destroy_rpc_stack(t); - destroy_vmem(t->rpc.vmem); + destroy_rpcmem(t->rpc.vmem); destroy_vmem(t->proc.vmem); return ERR_OOMEM; } @@ -135,7 +135,7 @@ static stat_t __init_owned_thread(struct tcb *p, struct tcb *t) if (setup_rpc_stack(t)) { destroy_rpc_stack(t); - destroy_vmem(t->rpc.vmem); + destroy_rpcmem(t->rpc.vmem); return ERR_OOMEM; } @@ -252,9 +252,7 @@ stat_t destroy_thread(struct tcb *t) /* free memory backing rpc stack */ destroy_rpc_stack(t); - - /* free rpc vmem */ - destroy_vmem(t->rpc.vmem); + destroy_rpcmem(t->rpc.vmem); unqueue_ipi(t); |
