summaryrefslogtreecommitdiff
path: root/kernel/sched/scheduler.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-04-12 14:03:29 +0200
committerAnton Kling <anton@kling.gg>2024-04-12 14:13:08 +0200
commitb450065984b1588966694579230dc40c802212e7 (patch)
treee67a056b1f3d0d2fa9a8f07fd76f925080dfbf44 /kernel/sched/scheduler.c
parentca082f686fd2dc7ee6f0284421f6212d6d4acee8 (diff)
Kernel/MMU: Dellocate pagedirectory when process exits.
Diffstat (limited to 'kernel/sched/scheduler.c')
-rw-r--r--kernel/sched/scheduler.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/sched/scheduler.c b/kernel/sched/scheduler.c
index 52e4848..45969b0 100644
--- a/kernel/sched/scheduler.c
+++ b/kernel/sched/scheduler.c
@@ -191,9 +191,6 @@ void free_process(process_t *p) {
mmu_remove_virtual_physical_address_mapping(m->u_address, m->length);
}
- // NOTE: Kernel stuff begins at 0x90000000
- mmu_free_address_range((void *)0x1000, 0x90000000, p->cr3);
-
list_free(&p->read_list);
list_free(&p->write_list);
list_free(&p->disconnect_list);
@@ -202,9 +199,12 @@ void free_process(process_t *p) {
list_free(&p->event_queue);
list_free(&p->file_descriptors);
kfree(p->tcb);
+
+ mmu_free_pagedirectory(p->cr3);
}
void exit_process(process_t *p, int status) {
+ disable_interrupts();
assert(p->pid != 1);
if (p->parent) {
p->parent->halts[WAIT_CHILD_HALT] = 0;