From 20ae7d56b3545359bf19335dfbba60de7f899da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Fri, 16 Mar 2018 10:23:52 +0100 Subject: [PATCH] TODO - Distribute those changes earlier --- src/kernel/boot/kmain.c | 12 +++++++++--- src/kernel/proc/procmm.c | 8 ++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/kernel/boot/kmain.c b/src/kernel/boot/kmain.c index 4fdbc94..dbbd180 100644 --- a/src/kernel/boot/kmain.c +++ b/src/kernel/boot/kmain.c @@ -10,7 +10,9 @@ void thread_function() { - while(1); + char *p = 0xBADC0FFEE; + while(1) + p[0] = 1; } @@ -29,11 +31,15 @@ void kmain(uint64_t multiboot_magic, void *multiboot_data) cpu_init(); struct process *p1 = new_process((void (*)(void))0x10000); - procmm_brk(p1, (void *)0x10010); + procmm_brk(p1, (void *)0x10100); memcpy_to_p4(p1->P4, (void *)0x10000, (void *)(uintptr_t)thread_function, 100); - ready(p1); + struct process *p2 = new_process((void (*)(void))0x10000); + procmm_brk(p2, (void *)0x10100); + memcpy_to_p4(p2->P4, (void *)0x10000, (void *)(uintptr_t)thread_function, 100); + ready(p2); + debug_ok("Boot \"Complete\"\n"); start_scheduler(); diff --git a/src/kernel/proc/procmm.c b/src/kernel/proc/procmm.c index 80eda43..3c8455c 100644 --- a/src/kernel/proc/procmm.c +++ b/src/kernel/proc/procmm.c @@ -50,6 +50,14 @@ registers *proc_pagefault(registers *r) return r; } + // Very uggly and very temporary way of signaling the kernel from a user mode process. + // TODO: REMOVE THIS CRAP! + if(read_cr2() == 0xBADC0FFEE) + { + debug("Bad signal from process %d\n", cpu->proc->pid); + yield(); + return r; + } PANIC("Page fault in process\n"); return r; }