diff options
author | Artur Grabowski <art@cvs.openbsd.org> | 2000-06-05 11:03:06 +0000 |
---|---|---|
committer | Artur Grabowski <art@cvs.openbsd.org> | 2000-06-05 11:03:06 +0000 |
commit | a9373777186bac0acc8148d4108429a9fc82c3c7 (patch) | |
tree | 42ea358aca2501d0078055c9026a71cb55ab667c /sys/arch/alpha | |
parent | 7f0672f1404b8202f54f66098bec7fd4b3e6725b (diff) |
Changes to exit handling.
cpu_exit no longer frees the vmspace and u-area. This is now handled by a
separate kernel thread "reaper". This is to avoid sleeping locks in the
critical path of cpu_exit where we're not allowed to sleep.
From NetBSD
Diffstat (limited to 'sys/arch/alpha')
-rw-r--r-- | sys/arch/alpha/alpha/locore.s | 10 | ||||
-rw-r--r-- | sys/arch/alpha/alpha/vm_machdep.c | 4 |
2 files changed, 5 insertions, 9 deletions
diff --git a/sys/arch/alpha/alpha/locore.s b/sys/arch/alpha/alpha/locore.s index 5567c507053..3ec60e37fec 100644 --- a/sys/arch/alpha/alpha/locore.s +++ b/sys/arch/alpha/alpha/locore.s @@ -1,4 +1,4 @@ -/* $OpenBSD: locore.s,v 1.11 1999/11/13 21:33:44 deraadt Exp $ */ +/* $OpenBSD: locore.s,v 1.12 2000/06/05 11:02:54 art Exp $ */ /* $NetBSD: locore.s,v 1.27 1996/12/03 19:54:16 cgd Exp $ */ /* @@ -833,11 +833,9 @@ LEAF(switch_exit, 1) * the saved regs. */ - /* blow away the old user struct */ - ldq a0, kernel_map - ldq a1, P_ADDR(s2) - ldiq a2, (UPAGES * NBPG) - CALL(kmem_free) + /* Schedule the vmspace and stack to be freed. */ + mov s2, a0 + CALL(exit2) /* and jump into the middle of cpu_switch. */ #ifdef NEW_PMAP diff --git a/sys/arch/alpha/alpha/vm_machdep.c b/sys/arch/alpha/alpha/vm_machdep.c index 9009bc0cbe2..fe182b2fe0e 100644 --- a/sys/arch/alpha/alpha/vm_machdep.c +++ b/sys/arch/alpha/alpha/vm_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vm_machdep.c,v 1.12 1999/09/14 11:41:18 kstailey Exp $ */ +/* $OpenBSD: vm_machdep.c,v 1.13 2000/06/05 11:02:55 art Exp $ */ /* $NetBSD: vm_machdep.c,v 1.21 1996/11/13 21:13:15 cgd Exp $ */ /* @@ -116,8 +116,6 @@ cpu_exit(p) if (p == fpcurproc) fpcurproc = NULL; - vmspace_free(p->p_vmspace); - (void) splhigh(); switch_exit(p); /* NOTREACHED */ |