From ffd7628d3f22571b9142302ef1141e13062f38ae Mon Sep 17 00:00:00 2001 From: Shiroko <hhx.xxm@gmail.com> Date: Thu, 2 Jun 2022 15:45:06 +0800 Subject: [PATCH] 1 --- kernel/memory/paging.c | 4 +++- kernel/proc/execve.c | 2 -- kernel/syscall/syscalls.c | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/kernel/memory/paging.c b/kernel/memory/paging.c index b2c42b7..4bded2e 100644 --- a/kernel/memory/paging.c +++ b/kernel/memory/paging.c @@ -194,7 +194,9 @@ pde_t alloc_page_dir() { int vm_copy(pde_t dst, pde_t src, char *start, char *end) { // debug #if PAGING_DEBUG - kprintf("do vm copy at va 0x%lx ~ 0x%lx.\n", start, end); + proc_t *proc = myproc(); + kprintf("do vm copy at va 0x%lx ~ 0x%lx for [%d]%s.\n", start, end, + proc->pid, proc->name); #endif char *a; diff --git a/kernel/proc/execve.c b/kernel/proc/execve.c index 592a0e2..00a97df 100644 --- a/kernel/proc/execve.c +++ b/kernel/proc/execve.c @@ -124,8 +124,6 @@ int do_execve(proc_t *old, dentry_t *cwd, const char *path, const char *argv[], } char *process_stack_top = (char *)(PROC_STACK_BASE - stack_pages * PG_SIZE); - // unload original stack - unmap_pages(old->page_dir, (void *)(process_stack_top), stack_pages, true); // load new stack map_pages(old->page_dir, (void *)(process_stack_top), process_stack, PROC_STACK_SIZE, PTE_TYPE_RW, true, false); diff --git a/kernel/syscall/syscalls.c b/kernel/syscall/syscalls.c index 450c40e..5739b26 100644 --- a/kernel/syscall/syscalls.c +++ b/kernel/syscall/syscalls.c @@ -589,7 +589,8 @@ void do_syscall(struct trap_context *trapframe) { assert(myproc(), "Proc invalid."); kprintf("PID %d calls invalid syscall with id %d.\n", myproc()->pid, syscall_id); - trapframe->a0 = -1; + do_exit(myproc(), -1); + // trapframe->a0 = -1; return; } // TODO: strace -- GitLab