From 291ed652489af3e261ea8a362c2bcbecf1721306 Mon Sep 17 00:00:00 2001 From: ngiddings Date: Sat, 17 Apr 2021 06:25:11 -0500 Subject: [PATCH] Fixed wrong pointer type in load_module() Kernel passed a pointer to its own state to get_free_resource_slot(), causing its state to be corrupted. next_process() also now loads the address space of the next process before entering it. --- src/kernel.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/kernel.c b/src/kernel.c index da597c7..4412f8f 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -52,7 +52,7 @@ int load_module(struct kernel_t *kernel, struct module_t *module) } load_offset += page_size; } - int index = get_free_resource_slot(kernel, kernel->page_stack); + int index = get_free_resource_slot(kernel->resource_table, kernel->page_stack); if(index < 0) { panic("no space left in resource table for module"); @@ -73,6 +73,7 @@ struct process_state_t *next_process(struct kernel_t *kernel, struct process_sta queue_insert(kernel->priority_queue, kernel->active_process); } kernel->active_process = extract_min(kernel->priority_queue); + load_address_space(kernel->active_process->page_table); load_context(kernel->active_process->state); }