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.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user