Date: Mon, 3 Apr 2006 21:45:30 GMT From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 94563 for review Message-ID: <200604032145.k33LjUtQ064606@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=94563 Change 94563 by peter@peter_daintree on 2006/04/03 21:44:50 IFC @94562 Affected files ... .. //depot/projects/hammer/share/man/man9/pmap_remove.9#3 integrate .. //depot/projects/hammer/sys/alpha/alpha/pmap.c#51 integrate .. //depot/projects/hammer/sys/amd64/amd64/pmap.c#150 integrate .. //depot/projects/hammer/sys/amd64/include/pmap.h#61 integrate .. //depot/projects/hammer/sys/arm/arm/pmap.c#33 integrate .. //depot/projects/hammer/sys/i386/i386/pmap.c#83 integrate .. //depot/projects/hammer/sys/ia64/ia64/pmap.c#53 integrate .. //depot/projects/hammer/sys/kern/kern_exec.c#63 integrate .. //depot/projects/hammer/sys/kern/kern_exit.c#60 integrate .. //depot/projects/hammer/sys/powerpc/powerpc/mmu_if.m#4 integrate .. //depot/projects/hammer/sys/powerpc/powerpc/pmap_dispatch.c#5 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/machdep.c#45 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/pmap.c#41 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/trap.c#20 integrate .. //depot/projects/hammer/sys/vm/pmap.h#25 integrate .. //depot/projects/hammer/usr.bin/find/find.1#18 integrate Differences ... ==== //depot/projects/hammer/share/man/man9/pmap_remove.9#3 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/pmap_remove.9,v 1.2 2004/07/06 07:02:31 ru Exp $ +.\" $FreeBSD: src/share/man/man9/pmap_remove.9,v 1.3 2006/04/03 21:17:36 peter Exp $ .\" .Dd July 21, 2003 .Dt PMAP_REMOVE 9 @@ -42,7 +42,7 @@ .Ft void .Fn pmap_remove_all "vm_page_t m" .Ft void -.Fn pmap_remove_pages "pmap_t pmap" "vm_offset_t sva" "vm_offset_t eva" +.Fn pmap_remove_pages "pmap_t pmap" .Sh DESCRIPTION The .Fn pmap_remove @@ -72,12 +72,8 @@ .Pp The .Fn pmap_remove_pages -function removes all pages from the physical map -.Fa pmap , -within the range of physical addresses bounded by -.Fa sva -and -.Fa eva . +function removes all user pages from the physical map +.Fa pmap . This function is called when a process exits to run down its address space more quickly than would be the case for calling .Fn pmap_remove . ==== //depot/projects/hammer/sys/alpha/alpha/pmap.c#51 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.187 2005/12/02 18:02:54 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.188 2006/04/03 21:16:07 peter Exp $"); #include <sys/param.h> #include <sys/systm.h> ==== //depot/projects/hammer/sys/amd64/amd64/pmap.c#150 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.540 2006/04/02 05:45:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.542 2006/04/03 21:36:00 peter Exp $"); /* * Manages physical address maps. ==== //depot/projects/hammer/sys/amd64/include/pmap.h#61 (text+ko) ==== @@ -39,7 +39,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.129 2006/03/14 00:01:56 peter Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.130 2006/04/03 21:36:01 peter Exp $ */ #ifndef _MACHINE_PMAP_H_ ==== //depot/projects/hammer/sys/arm/arm/pmap.c#33 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.45 2006/03/26 22:03:43 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.46 2006/04/03 21:16:07 peter Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> ==== //depot/projects/hammer/sys/i386/i386/pmap.c#83 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.547 2006/04/02 05:45:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.548 2006/04/03 21:16:07 peter Exp $"); /* * Manages physical address maps. ==== //depot/projects/hammer/sys/ia64/ia64/pmap.c#53 (text+ko) ==== @@ -46,7 +46,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.172 2005/11/20 06:09:48 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.173 2006/04/03 21:16:08 peter Exp $"); #include <sys/param.h> #include <sys/kernel.h> ==== //depot/projects/hammer/sys/kern/kern_exec.c#63 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.290 2006/03/08 20:21:54 ups Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.291 2006/04/03 21:16:08 peter Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_ktrace.h" ==== //depot/projects/hammer/sys/kern/kern_exit.c#60 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.286 2006/03/14 04:00:21 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.287 2006/04/03 21:16:09 peter Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" ==== //depot/projects/hammer/sys/powerpc/powerpc/mmu_if.m#4 (text+ko) ==== @@ -23,7 +23,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/sys/powerpc/powerpc/mmu_if.m,v 1.2 2005/11/20 06:09:49 alc Exp $ +# $FreeBSD: src/sys/powerpc/powerpc/mmu_if.m,v 1.3 2006/04/03 21:16:09 peter Exp $ # #include <sys/param.h> ==== //depot/projects/hammer/sys/powerpc/powerpc/pmap_dispatch.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/pmap_dispatch.c,v 1.3 2005/11/20 06:09:49 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/pmap_dispatch.c,v 1.4 2006/04/03 21:16:09 peter Exp $"); /* * Dispatch MI pmap calls to the appropriate MMU implementation ==== //depot/projects/hammer/sys/sparc64/sparc64/machdep.c#45 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/machdep.c,v 1.128 2006/03/28 20:28:31 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/machdep.c,v 1.129 2006/04/03 21:27:01 marius Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -464,14 +464,12 @@ int oonstack; u_long sp; int sig; - int code; oonstack = 0; td = curthread; p = td->td_proc; PROC_LOCK_ASSERT(p, MA_OWNED); sig = ksi->ksi_signo; - code = ksi->ksi_code; psp = p->p_sigacts; mtx_assert(&psp->ps_mtx, MA_OWNED); tf = td->td_frame; @@ -484,7 +482,7 @@ /* Make sure we have a signal trampoline to return to. */ if (p->p_md.md_sigtramp == NULL) { /* - * No signal tramoline... kill the process. + * No signal trampoline... kill the process. */ CTR0(KTR_SIG, "sendsig: no sigtramp"); printf("sendsig: %s is too old, rebuild it\n", p->p_comm); @@ -518,12 +516,20 @@ /* Build the argument list for the signal handler. */ tf->tf_out[0] = sig; - tf->tf_out[1] = (register_t)&sfp->sf_si; tf->tf_out[2] = (register_t)&sfp->sf_uc; tf->tf_out[4] = (register_t)catcher; - /* Fill siginfo structure. */ - sf.sf_si = ksi->ksi_info; - sf.sf_si.si_addr = (void *)tf->tf_sfar; /* XXX */ + if (SIGISMEMBER(psp->ps_siginfo, sig)) { + /* Signal handler installed with SA_SIGINFO. */ + tf->tf_out[1] = (register_t)&sfp->sf_si; + + /* Fill in POSIX parts. */ + sf.sf_si = ksi->ksi_info; + sf.sf_si.si_signo = sig; /* maybe a translated signal */ + } else { + /* Old FreeBSD-style arguments. */ + tf->tf_out[1] = ksi->ksi_code; + tf->tf_out[3] = (register_t)ksi->ksi_addr; + } /* Copy the sigframe out to the user's stack. */ if (rwindow_save(td) != 0 || copyout(&sf, sfp, sizeof(*sfp)) != 0 || ==== //depot/projects/hammer/sys/sparc64/sparc64/pmap.c#41 (text+ko) ==== @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.152 2006/01/01 22:52:21 scottl Exp $ + * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.153 2006/04/03 21:16:09 peter Exp $ */ /* ==== //depot/projects/hammer/sys/sparc64/sparc64/trap.c#20 (text+ko) ==== @@ -37,9 +37,11 @@ * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 * from: FreeBSD: src/sys/i386/i386/trap.c,v 1.197 2001/07/19 - * $FreeBSD: src/sys/sparc64/sparc64/trap.c,v 1.79 2006/02/28 21:25:00 brueffer Exp $ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/trap.c,v 1.80 2006/04/03 21:27:01 marius Exp $"); + #include "opt_ddb.h" #include "opt_ktr.h" #include "opt_ktrace.h" @@ -165,7 +167,7 @@ "kernel stack fault", }; -const int trap_sig[] = { +static const int trap_sig[] = { SIGILL, /* reserved */ SIGILL, /* instruction access exception */ SIGILL, /* instruction access error */ @@ -233,6 +235,7 @@ struct proc *p; int error; int sig; + register_t addr; ksiginfo_t ksi; td = PCPU_GET(curthread); @@ -250,12 +253,15 @@ p = td->td_proc; td->td_pticks = 0; td->td_frame = tf; + addr = tf->tf_tpc; if (td->td_ucred != p->p_ucred) cred_update_thread(td); switch (tf->tf_type) { case T_DATA_MISS: case T_DATA_PROTECTION: + addr = tf->tf_sfar; + /* FALLTHROUGH */ case T_INSTRUCTION_MISS: sig = trap_pfault(td, tf); break; @@ -288,7 +294,7 @@ ksiginfo_init_trap(&ksi); ksi.ksi_signo = sig; ksi.ksi_code = (int)tf->tf_type; /* XXX not POSIX */ - /* ksi.ksi_addr = ? */ + ksi.ksi_addr = (void *)addr; ksi.ksi_trapno = (int)tf->tf_type; trapsignal(td, &ksi); } ==== //depot/projects/hammer/sys/vm/pmap.h#25 (text+ko) ==== @@ -57,7 +57,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $FreeBSD: src/sys/vm/pmap.h,v 1.74 2005/11/20 06:09:49 alc Exp $ + * $FreeBSD: src/sys/vm/pmap.h,v 1.75 2006/04/03 21:16:10 peter Exp $ */ /* ==== //depot/projects/hammer/usr.bin/find/find.1#18 (text+ko) ==== @@ -33,9 +33,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)find.1 8.7 (Berkeley) 5/9/95 -.\" $FreeBSD: src/usr.bin/find/find.1,v 1.74 2006/04/03 20:36:37 ceri Exp $ +.\" $FreeBSD: src/usr.bin/find/find.1,v 1.75 2006/04/03 20:53:34 ceri Exp $ .\" -.Dd April 2, 2005 +.Dd April 3, 2006 .Dt FIND 1 .Os .Sh NAME
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200604032145.k33LjUtQ064606>