From 20345264aa4ab2bd9ad73ffe02f0b8b7db8da5a2 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sun, 22 Feb 2026 02:25:49 +0100 Subject: [PATCH] kill app on pagefault --- kernel/interrupt/handlers.cc | 6 +++++- kernel/main.cc | 2 ++ user/app1/appl.cc | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel/interrupt/handlers.cc b/kernel/interrupt/handlers.cc index bad3fcc..c919dfc 100644 --- a/kernel/interrupt/handlers.cc +++ b/kernel/interrupt/handlers.cc @@ -46,13 +46,17 @@ static void printContext(const InterruptContext *context) { kernelpanic("General protection fault!"); } + +#include "syscall/skeleton.h" [[gnu::interrupt]] static void handle_page_fault(InterruptContext *context, uint64_t error) { DBG << "Page fault encountered at linear address " << hex << Core::CR<2>::read() << endl << PageFaultError(error) << endl; printContext(context); - kernelpanic("Page fault!"); + + Syscall::Skeleton::exit(Guard::enter().vault()); + //kernelpanic("Page fault!"); } /*! \brief Assembly interrupt handler for the keyboard. diff --git a/kernel/main.cc b/kernel/main.cc index d945fac..8dd9d1c 100644 --- a/kernel/main.cc +++ b/kernel/main.cc @@ -92,6 +92,8 @@ extern "C" int main() { g.vault().scheduler.ready(new Thread(false, (void*)appstart, (appsize/4096)+1)); //TODO fix edgecase on size=4096 offset += 1+(appsize/4096); } + + g.vault().scheduler.ready(new Thread(false, (void*)0x4001000, 1)); //for(void* p=Multiboot::getModule(0)->getStartAddress(); pgetEndAddress(); p=(void*)((uintptr_t)p+4096)){ // DBG << "module at: " << hex << p << endl; // g.vault().scheduler.ready(new Thread(false, p)); diff --git a/user/app1/appl.cc b/user/app1/appl.cc index c1fdd04..10f08ac 100644 --- a/user/app1/appl.cc +++ b/user/app1/appl.cc @@ -14,6 +14,7 @@ extern "C" void main() { for (unsigned i = 1;; ++i) { write(1, text, sizeof(text)); void* ptr= map(512); + //sprintf(&buf, "ptr address: %x \n" , ptr); //unmap(ptr, 512);