aboutsummaryrefslogtreecommitdiff
path: root/kernel/l0/region.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/l0/region.c')
-rw-r--r--kernel/l0/region.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/kernel/l0/region.c b/kernel/l0/region.c
index 956ec07..3127048 100644
--- a/kernel/l0/region.c
+++ b/kernel/l0/region.c
@@ -215,7 +215,7 @@ void region_allocator_init(void* kernel_data_end) {
descriptor_t *u0 = get_unused_descriptor();
u0->used.i.addr = (void*)K_HIGHHALF_ADDR;
u0->used.i.size = PAGE_ALIGN_UP(kernel_data_end) - K_HIGHHALF_ADDR;
- u0->used.i.type = REGION_T_KERNEL_BASE;
+ u0->used.i.type = "Kernel code & data";
u0->used.i.pf = 0;
u0->used.next_by_addr = 0;
first_used_region = u0;
@@ -238,7 +238,7 @@ void region_free(void* addr) {
mutex_unlock(&ra_mutex);
}
-static void* region_alloc_inner(size_t size, uint32_t type, page_fault_handler_t pf, bool use_reserve) {
+static void* region_alloc_inner(size_t size, char* type, page_fault_handler_t pf, bool use_reserve) {
size = PAGE_ALIGN_UP(size);
for (descriptor_t *i = first_free_region_by_size; i != 0; i = i->free.first_bigger) {
@@ -282,7 +282,7 @@ static void* region_alloc_inner(size_t size, uint32_t type, page_fault_handler_t
return 0; //No big enough block found
}
-void* region_alloc(size_t size, uint32_t type, page_fault_handler_t pf) {
+void* region_alloc(size_t size, char* type, page_fault_handler_t pf) {
void* result = 0;
mutex_lock(&ra_mutex);
@@ -290,7 +290,7 @@ void* region_alloc(size_t size, uint32_t type, page_fault_handler_t pf) {
uint32_t frame = frame_alloc(1);
if (frame == 0) goto try_anyway;
- void* descriptor_region = region_alloc_inner(PAGE_SIZE, REGION_T_DESCRIPTORS, 0, true);
+ void* descriptor_region = region_alloc_inner(PAGE_SIZE, "Region descriptors", 0, true);
ASSERT(descriptor_region != 0);
int error = pd_map_page(descriptor_region, frame, 1);
@@ -386,16 +386,7 @@ void dbg_print_region_info() {
}
dbg_printf("- Used kernel regions:\n");
for (descriptor_t *d = first_used_region; d != 0; d = d->used.next_by_addr) {
- dbg_printf("| 0x%p - 0x%p", d->used.i.addr, d->used.i.addr + d->used.i.size);
- if (d->used.i.type & REGION_T_KERNEL_BASE) dbg_printf(" Kernel code & base data");
- if (d->used.i.type & REGION_T_DESCRIPTORS) dbg_printf(" Region descriptors");
- if (d->used.i.type & REGION_T_CORE_HEAP) dbg_printf(" Core heap");
- if (d->used.i.type & REGION_T_KPROC_HEAP) dbg_printf(" Kernel process heap");
- if (d->used.i.type & REGION_T_KPROC_STACK) dbg_printf(" Kernel process stack");
- if (d->used.i.type & REGION_T_PROC_KSTACK) dbg_printf(" Process kernel stack");
- if (d->used.i.type & REGION_T_CACHE) dbg_printf(" Cache");
- if (d->used.i.type & REGION_T_HW) dbg_printf(" Hardware");
- dbg_printf("\n");
+ dbg_printf("| 0x%p - 0x%p %s\n", d->used.i.addr, d->used.i.addr + d->used.i.size, d->used.i.type);
ASSERT(d != d->used.next_by_addr);
}
dbg_printf("\\\n");