Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Apr 2003 13:26:09 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 29215 for review
Message-ID:  <200304182026.h3IKQ9LA035767@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29215

Change 29215 by jhb@jhb_laptop on 2003/04/18 13:25:33

	IFC @29213 loop back in more proc locking commits.

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/machdep.c#54 integrate
.. //depot/projects/smpng/sys/alpha/alpha/sys_machdep.c#14 integrate
.. //depot/projects/smpng/sys/alpha/alpha/trap.c#45 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.c#19 integrate
.. //depot/projects/smpng/sys/i386/i386/machdep.c#57 integrate
.. //depot/projects/smpng/sys/i386/i386/trap.c#52 integrate
.. //depot/projects/smpng/sys/ia64/ia64/trap.c#44 integrate
.. //depot/projects/smpng/sys/kern/kern_mac.c#22 integrate
.. //depot/projects/smpng/sys/kern/kern_proc.c#49 integrate
.. //depot/projects/smpng/sys/kern/kern_resource.c#34 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#59 integrate
.. //depot/projects/smpng/sys/kern/kern_thread.c#26 integrate
.. //depot/projects/smpng/sys/pc98/i386/machdep.c#51 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/trap.c#48 integrate
.. //depot/projects/smpng/sys/sys/cdefs.h#18 integrate
.. //depot/projects/smpng/sys/sys/mac.h#16 integrate
.. //depot/projects/smpng/sys/sys/mac_policy.h#14 integrate
.. //depot/projects/smpng/sys/sys/proc.h#79 integrate
.. //depot/projects/smpng/sys/sys/syscallsubr.h#5 integrate

Differences ...

==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#54 (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/alpha/alpha/machdep.c,v 1.199 2003/04/01 00:18:54 jeff Exp $
+ * $FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.200 2003/04/18 20:09:03 jhb Exp $
  */
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -1132,11 +1132,11 @@
 
 	td = curthread;
 	p = td->td_proc;
+	PROC_LOCK_ASSERT(p, MA_OWNED);
 	frame = td->td_frame;
 	oonstack = sigonstack(alpha_pal_rdusp());
 	fsize = sizeof ksi;
 	rndfsize = ((fsize + 15) / 16) * 16;
-	PROC_LOCK_ASSERT(p, MA_OWNED);
 	psp = p->p_sigacts;
 
 	/*
@@ -1993,7 +1993,9 @@
 		mcp->mc_regs[FRAME_SP] = alpha_pal_rdusp();
 
 	mcp->mc_format = _MC_REV0_TRAPFRAME;
+	PROC_LOCK(curthread->td_proc);
 	mcp->mc_onstack = sigonstack(alpha_pal_rdusp()) ? 1 : 0;
+	PROC_UNLOCK(curthread->td_proc);
 	get_fpcontext(td, mcp);
 	return (0);
 }

==== //depot/projects/smpng/sys/alpha/alpha/sys_machdep.c#14 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)sys_machdep.c	5.5 (Berkeley) 1/19/91
- * $FreeBSD: src/sys/alpha/alpha/sys_machdep.c,v 1.22 2003/03/06 04:47:47 rwatson Exp $
+ * $FreeBSD: src/sys/alpha/alpha/sys_machdep.c,v 1.23 2003/04/18 18:06:32 jhb Exp $
  *
  */
 
@@ -209,7 +209,7 @@
 	pp = p->p_pptr;
 	if (pp != NULL) {
 		PROC_LOCK(pp);
-		uac = p->p_md.md_uac;
+		uac = pp->p_md.md_uac;
 		PROC_UNLOCK(pp);
 		PROC_UNLOCK(p);
 		error = copyout(&uac, args, sizeof(uac));

==== //depot/projects/smpng/sys/alpha/alpha/trap.c#45 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/alpha/alpha/trap.c,v 1.110 2003/03/31 22:02:36 jeff Exp $ */
+/* $FreeBSD: src/sys/alpha/alpha/trap.c,v 1.111 2003/04/18 20:19:59 jhb Exp $ */
 /* $NetBSD: trap.c,v 1.31 1998/03/26 02:21:46 thorpej Exp $ */
 
 /*
@@ -298,12 +298,13 @@
 		td->td_frame = framep;
 		if (td->td_ucred != p->p_ucred)
 			cred_update_thread(td);
+		PROC_LOCK(p);
 		if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) {
-			PROC_LOCK(p);
 			mtx_lock_spin(&sched_lock);
 			thread_exit();
 			/* NOTREACHED */
 		}
+		PROC_UNLOCK(p);
 	} else {
 		sticks = 0;		/* XXX bogus -Wuninitialized warning */
 		KASSERT(cold || td->td_ucred != NULL,

==== //depot/projects/smpng/sys/dev/em/if_em.c#19 (text+ko) ====

@@ -31,7 +31,7 @@
 
 ***************************************************************************/
 
-/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.21 2003/04/15 06:37:23 mdodd Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.22 2003/04/18 17:36:13 pdeuskar Exp $*/
 
 #include <dev/em/if_em.h>
 
@@ -1609,6 +1609,10 @@
 		ifp->if_capenable = ifp->if_capabilities;
 	}
 
+	/*
+	 * Tell the upper layer(s) we support long frames.
+	 */
+	ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
 #if __FreeBSD_version >= 500000
         ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
 #endif

==== //depot/projects/smpng/sys/i386/i386/machdep.c#57 (text+ko) ====

@@ -35,7 +35,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)machdep.c	7.4 (Berkeley) 6/3/91
- * $FreeBSD: src/sys/i386/i386/machdep.c,v 1.561 2003/04/02 23:53:28 peter Exp $
+ * $FreeBSD: src/sys/i386/i386/machdep.c,v 1.562 2003/04/18 20:09:03 jhb Exp $
  */
 
 #include "opt_atalk.h"
@@ -2368,7 +2368,9 @@
 
 	tp = td->td_frame;
 
+	PROC_LOCK(curthread->td_proc);
 	mcp->mc_onstack = sigonstack(tp->tf_esp);
+	PROC_UNLOCK(curthread->td_proc);
 	mcp->mc_gs = td->td_pcb->pcb_gs;
 	mcp->mc_fs = tp->tf_fs;
 	mcp->mc_es = tp->tf_es;

==== //depot/projects/smpng/sys/i386/i386/trap.c#52 (text+ko) ====

@@ -35,7 +35,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)trap.c	7.4 (Berkeley) 5/13/91
- * $FreeBSD: src/sys/i386/i386/trap.c,v 1.245 2003/03/31 22:41:32 jeff Exp $
+ * $FreeBSD: src/sys/i386/i386/trap.c,v 1.246 2003/04/18 20:19:59 jhb Exp $
  */
 
 /*
@@ -271,14 +271,14 @@
 		/*
 		 * First check that we shouldn't just abort.
 		 * But check if we are the single thread first!
-		 * XXX p_singlethread not locked, but should be safe.
 		 */
+		PROC_LOCK(p);
 		if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) {
-			PROC_LOCK(p);
 			mtx_lock_spin(&sched_lock);
 			thread_exit();
 			/* NOTREACHED */
 		}
+		PROC_UNLOCK(p);
 
 		switch (type) {
 		case T_PRIVINFLT:	/* privileged instruction fault */

==== //depot/projects/smpng/sys/ia64/ia64/trap.c#44 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/ia64/ia64/trap.c,v 1.72 2003/03/31 22:02:37 jeff Exp $ */
+/* $FreeBSD: src/sys/ia64/ia64/trap.c,v 1.73 2003/04/18 20:19:59 jhb Exp $ */
 /* From: src/sys/alpha/alpha/trap.c,v 1.33 */
 /* $NetBSD: trap.c,v 1.31 1998/03/26 02:21:46 thorpej Exp $ */
 
@@ -334,11 +334,13 @@
 		td->td_frame = framep;
 		if (td->td_ucred != p->p_ucred)
 			cred_update_thread(td);
+		PROC_LOCK(p);
 		if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) {
 			mtx_lock_spin(&sched_lock);
-			thread_exit(); /* XXXKSE need proc lock? */
+			thread_exit();
 			/* NOTREACHED */
 		}
+		PROC_UNLOCK(p);
 	} else {
 		sticks = 0;		/* XXX bogus -Wuninitialized warning */
 		KASSERT(cold || td->td_ucred != NULL,

==== //depot/projects/smpng/sys/kern/kern_mac.c#22 (text+ko) ====

@@ -1,7 +1,7 @@
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
  * Copyright (c) 2001 Ilmar S. Habibulin
- * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.
+ * Copyright (c) 2001, 2002, 2003 Networks Associates Technology, Inc.
  * All rights reserved.
  *
  * This software was developed by Robert Watson and Ilmar Habibulin for the
@@ -33,7 +33,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/kern/kern_mac.c,v 1.86 2003/04/15 19:33:23 rwatson Exp $
+ * $FreeBSD: src/sys/kern/kern_mac.c,v 1.87 2003/04/18 19:57:37 rwatson Exp $
  */
 /*
  * Developed by the TrustedBSD Project.

==== //depot/projects/smpng/sys/kern/kern_proc.c#49 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kern_proc.c	8.7 (Berkeley) 2/14/95
- * $FreeBSD: src/sys/kern/kern_proc.c,v 1.178 2003/04/10 17:35:44 julian Exp $
+ * $FreeBSD: src/sys/kern/kern_proc.c,v 1.179 2003/04/18 20:17:05 jhb Exp $
  */
 
 #include "opt_ktrace.h"
@@ -72,11 +72,9 @@
 MALLOC_DEFINE(M_SUBPROC, "subproc", "Proc sub-structures");
 
 static void doenterpgrp(struct proc *, struct pgrp *);
-
+static void orphanpg(struct pgrp *pg);
+static void pgadjustjobc(struct pgrp *pgrp, int entering);
 static void pgdelete(struct pgrp *);
-
-static void orphanpg(struct pgrp *pg);
-
 static void proc_ctor(void *mem, int size, void *arg);
 static void proc_dtor(void *mem, int size, void *arg);
 static void proc_init(void *mem, int size);
@@ -476,6 +474,23 @@
 	FREE(pgrp, M_PGRP);
 }
 
+static void
+pgadjustjobc(pgrp, entering)
+	struct pgrp *pgrp;
+	int entering;
+{
+
+	PGRP_LOCK(pgrp);
+	if (entering)
+		pgrp->pg_jobc++;
+	else {
+		--pgrp->pg_jobc;
+		if (pgrp->pg_jobc == 0)
+			orphanpg(pgrp);
+	}
+	PGRP_UNLOCK(pgrp);
+}
+
 /*
  * Adjust pgrp jobc counters when specified process changes process group.
  * We count the number of processes in each process group that "qualify"
@@ -506,17 +521,8 @@
 	 */
 	mysession = pgrp->pg_session;
 	if ((hispgrp = p->p_pptr->p_pgrp) != pgrp &&
-	    hispgrp->pg_session == mysession) {
-		PGRP_LOCK(pgrp);
-		if (entering)
-			pgrp->pg_jobc++;
-		else {
-			--pgrp->pg_jobc;
-			if (pgrp->pg_jobc == 0)
-				orphanpg(pgrp);
-		}
-		PGRP_UNLOCK(pgrp);
-	}
+	    hispgrp->pg_session == mysession)
+		pgadjustjobc(pgrp, entering);
 
 	/*
 	 * Check this process' children to see whether they qualify
@@ -524,19 +530,17 @@
 	 * process groups.
 	 */
 	LIST_FOREACH(p, &p->p_children, p_sibling) {
-		if ((hispgrp = p->p_pgrp) != pgrp &&
-		    hispgrp->pg_session == mysession &&
-		    p->p_state != PRS_ZOMBIE) {
-			PGRP_LOCK(hispgrp);
-			if (entering)
-				hispgrp->pg_jobc++;
-			else {
-				--hispgrp->pg_jobc;
-				if (hispgrp->pg_jobc == 0)
-					orphanpg(hispgrp);
-			}
-			PGRP_UNLOCK(hispgrp);
+		hispgrp = p->p_pgrp;
+		if (hispgrp == pgrp ||
+		    hispgrp->pg_session != mysession)
+			continue;
+		PROC_LOCK(p);
+		if (p->p_state == PRS_ZOMBIE) {
+			PROC_UNLOCK(p);
+			continue;
 		}
+		PROC_UNLOCK(p);
+		pgadjustjobc(hispgrp, entering);
 	}
 }
 
@@ -553,10 +557,10 @@
 
 	PGRP_LOCK_ASSERT(pg, MA_OWNED);
 
-	mtx_lock_spin(&sched_lock);
 	LIST_FOREACH(p, &pg->pg_members, p_pglist) {
+		PROC_LOCK(p);
 		if (P_SHOULDSTOP(p)) {
-			mtx_unlock_spin(&sched_lock);
+			PROC_UNLOCK(p);
 			LIST_FOREACH(p, &pg->pg_members, p_pglist) {
 				PROC_LOCK(p);
 				psignal(p, SIGHUP);
@@ -565,8 +569,8 @@
 			}
 			return;
 		}
+		PROC_UNLOCK(p);
 	}
-	mtx_unlock_spin(&sched_lock);
 }
 
 #include "opt_ddb.h"
@@ -897,18 +901,20 @@
 		else
 			p = LIST_FIRST(&zombproc);
 		for (; p != 0; p = LIST_NEXT(p, p_list)) {
-			PROC_LOCK(p);
 			/*
-			 * Show a user only appropriate processes.
+			 * Skip embryonic processes.
 			 */
-			if (p_cansee(curthread, p)) {
-				PROC_UNLOCK(p);
+			mtx_lock_spin(&sched_lock);
+			if (p->p_state == PRS_NEW) {
+				mtx_unlock_spin(&sched_lock);
 				continue;
 			}
+			mtx_unlock_spin(&sched_lock);
+			PROC_LOCK(p);
 			/*
-			 * Skip embryonic processes.
+			 * Show a user only appropriate processes.
 			 */
-			if (p->p_state == PRS_NEW) {
+			if (p_cansee(curthread, p)) {
 				PROC_UNLOCK(p);
 				continue;
 			}

==== //depot/projects/smpng/sys/kern/kern_resource.c#34 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kern_resource.c	8.5 (Berkeley) 1/21/94
- * $FreeBSD: src/sys/kern/kern_resource.c,v 1.122 2003/04/11 03:39:07 jeff Exp $
+ * $FreeBSD: src/sys/kern/kern_resource.c,v 1.123 2003/04/18 20:17:47 jhb Exp $
  */
 
 #include "opt_compat.h"
@@ -392,6 +392,7 @@
 rtp_to_pri(struct rtprio *rtp, struct ksegrp *kg)
 {
 
+	mtx_assert(&sched_lock, MA_OWNED);
 	if (rtp->prio > RTP_PRIO_MAX)
 		return (EINVAL);
 	switch (RTP_PRIO_BASE(rtp->type)) {
@@ -419,6 +420,7 @@
 pri_to_rtp(struct ksegrp *kg, struct rtprio *rtp)
 {
 
+	mtx_assert(&sched_lock, MA_OWNED);
 	switch (PRI_BASE(kg->kg_pri_class)) {
 	case PRI_REALTIME:
 		rtp->prio = kg->kg_user_pri - PRI_MIN_REALTIME;

==== //depot/projects/smpng/sys/kern/kern_sig.c#59 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kern_sig.c	8.7 (Berkeley) 4/18/94
- * $FreeBSD: src/sys/kern/kern_sig.c,v 1.226 2003/04/17 22:07:56 jhb Exp $
+ * $FreeBSD: src/sys/kern/kern_sig.c,v 1.227 2003/04/18 20:18:44 jhb Exp $
  */
 
 #include "opt_compat.h"
@@ -89,8 +89,6 @@
 static void	filt_sigdetach(struct knote *kn);
 static int	filt_signal(struct knote *kn, long hint);
 static struct thread *sigtd(struct proc *p, int sig, int prop);
-static int	do_sigprocmask(struct thread *td, int how,
-				sigset_t *set, sigset_t *oset, int old);
 static int	kern_sigtimedwait(struct thread *td, sigset_t set,
 				siginfo_t *info, struct timespec *timeout);
 
@@ -590,12 +588,12 @@
 }
 
 /*
- * do_sigprocmask()
+ * kern_sigprocmask()
  *
  *	Manipulate signal mask.
  */
-static int
-do_sigprocmask(td, how, set, oset, old)
+int
+kern_sigprocmask(td, how, set, oset, old)
 	struct thread *td;
 	int how;
 	sigset_t *set, *oset;
@@ -636,7 +634,7 @@
 }
 
 /*
- * sigprocmask() - MP SAFE (XXXKSE not under KSE it isn't)
+ * sigprocmask() - MP SAFE
  */
 
 #ifndef _SYS_SYSPROTO_H_
@@ -662,7 +660,7 @@
 		if (error)
 			return (error);
 	}
-	error = do_sigprocmask(td, uap->how, setp, osetp, 0);
+	error = kern_sigprocmask(td, uap->how, setp, osetp, 0);
 	if (osetp && !error) {
 		error = copyout(osetp, uap->oset, sizeof(oset));
 	}
@@ -688,7 +686,7 @@
 	int error;
 
 	OSIG2SIG(uap->mask, set);
-	error = do_sigprocmask(td, uap->how, &set, &oset, 1);
+	error = kern_sigprocmask(td, uap->how, &set, &oset, 1);
 	SIG2OSIG(oset, td->td_retval[0]);
 	return (error);
 }

==== //depot/projects/smpng/sys/kern/kern_thread.c#26 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  * DAMAGE.
  *
- * $FreeBSD: src/sys/kern/kern_thread.c,v 1.116 2003/04/18 00:16:13 julian Exp $
+ * $FreeBSD: src/sys/kern/kern_thread.c,v 1.117 2003/04/18 20:19:59 jhb Exp $
  */
 
 #include <sys/param.h>
@@ -1544,15 +1544,15 @@
 	/*
 	 * First check that we shouldn't just abort.
 	 * But check if we are the single thread first!
-	 * XXX p_singlethread not locked, but should be safe.
 	 */
+	PROC_LOCK(p);
 	if ((p->p_flag & P_SINGLE_EXIT) && (p->p_singlethread != td)) {
-		PROC_LOCK(p);
 		mtx_lock_spin(&sched_lock);
 		thread_stopped(p);
 		thread_exit();
 		/* NOTREACHED */
 	}
+	PROC_UNLOCK(p);
 
 	/*
 	 * If we are doing a syscall in a KSE environment,

==== //depot/projects/smpng/sys/pc98/i386/machdep.c#51 (text+ko) ====

@@ -35,7 +35,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)machdep.c	7.4 (Berkeley) 6/3/91
- * $FreeBSD: src/sys/pc98/i386/machdep.c,v 1.314 2003/04/03 12:39:18 nyan Exp $
+ * $FreeBSD: src/sys/pc98/i386/machdep.c,v 1.315 2003/04/18 20:09:04 jhb Exp $
  */
 
 #include "opt_atalk.h"
@@ -2434,7 +2434,9 @@
 
 	tp = td->td_frame;
 
+	PROC_LOCK(curthread->td_proc);
 	mcp->mc_onstack = sigonstack(tp->tf_esp);
+	PROC_UNLOCK(curthread->td_proc);
 	mcp->mc_gs = td->td_pcb->pcb_gs;
 	mcp->mc_fs = tp->tf_fs;
 	mcp->mc_es = tp->tf_es;

==== //depot/projects/smpng/sys/sparc64/sparc64/trap.c#48 (text+ko) ====

@@ -37,7 +37,7 @@
  *
  *      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.58 2003/03/31 22:02:38 jeff Exp $
+ * $FreeBSD: src/sys/sparc64/sparc64/trap.c,v 1.59 2003/04/18 20:20:00 jhb Exp $
  */
 
 #include "opt_ddb.h"
@@ -245,12 +245,13 @@
 		td->td_frame = tf;
 		if (td->td_ucred != p->p_ucred)
 			cred_update_thread(td);
+		PROC_LOCK(p);
 		if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) {
-			PROC_LOCK(p);
 			mtx_lock_spin(&sched_lock);
 			thread_exit();
 			/* NOTREACHED */
 		}
+		PROC_UNLOCK(p);
 
 		switch (tf->tf_type) {
 		case T_DATA_MISS:

==== //depot/projects/smpng/sys/sys/cdefs.h#18 (text+ko) ====

@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/sys/cdefs.h,v 1.68 2002/10/21 20:50:30 mike Exp $
+ * $FreeBSD: src/sys/sys/cdefs.h,v 1.69 2003/04/18 18:59:34 bde Exp $
  */
 
 #ifndef	_SYS_CDEFS_H_
@@ -189,7 +189,7 @@
 #endif
 
 /* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
-#if __FreeBSD_cc_version >= 300001 && __FreeBSD_cc_version < 500003
+#if __FreeBSD_cc_version >= 300001
 #define	__printf0like(fmtarg, firstvararg) \
 	    __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
 #else
@@ -232,7 +232,7 @@
  * Embed the rcs id of a source file in the resulting library.  Note that in
  * more recent ELF binutils, we use .ident allowing the ID to be stripped.
  * Usage:
- *	__FBSDID("$FreeBSD: src/sys/sys/cdefs.h,v 1.68 2002/10/21 20:50:30 mike Exp $");
+ *	__FBSDID("$FreeBSD: src/sys/sys/cdefs.h,v 1.69 2003/04/18 18:59:34 bde Exp $");
  */
 #ifndef	__FBSDID
 #if !defined(lint) && !defined(STRIP_FBSDID)

==== //depot/projects/smpng/sys/sys/mac.h#16 (text+ko) ====

@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
- * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.
+ * Copyright (c) 2001, 2002, 2003 Networks Associates Technology, Inc.
  * All rights reserved.
  *
  * This software was developed by Robert Watson for the TrustedBSD Project.
@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/mac.h,v 1.39 2003/04/14 20:39:06 rwatson Exp $
+ * $FreeBSD: src/sys/sys/mac.h,v 1.40 2003/04/18 19:57:37 rwatson Exp $
  */
 /*
  * Userland/kernel interface for Mandatory Access Control.

==== //depot/projects/smpng/sys/sys/mac_policy.h#14 (text+ko) ====

@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
- * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.
+ * Copyright (c) 2001, 2002, 2003 Networks Associates Technology, Inc.
  * All rights reserved.
  *
  * This software was developed by Robert Watson for the TrustedBSD Project.
@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/mac_policy.h,v 1.38 2003/04/14 20:39:06 rwatson Exp $
+ * $FreeBSD: src/sys/sys/mac_policy.h,v 1.39 2003/04/18 19:57:37 rwatson Exp $
  */
 /*
  * Kernel interface for MAC policy modules.

==== //depot/projects/smpng/sys/sys/proc.h#79 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)proc.h	8.15 (Berkeley) 5/19/95
- * $FreeBSD: src/sys/sys/proc.h,v 1.315 2003/04/18 00:16:13 julian Exp $
+ * $FreeBSD: src/sys/sys/proc.h,v 1.316 2003/04/18 18:51:52 julian Exp $
  */
 
 #ifndef _SYS_PROC_H_
@@ -567,11 +567,12 @@
 	struct vnode	*p_tracevp;	/* (c + o) Trace to vnode. */
 	struct ucred	*p_tracecred;	/* (o) Credentials to trace with. */
 	struct vnode	*p_textvp;	/* (b) Vnode of executable. */
-	sigset_t	p_siglist;	/* (c) Sigs not delivered to a td. */
+	sigset_t	p_siglist;	/* (c) Sigs held for the process */
 	char		p_lock;		/* (c) Proclock (prevent swap) count. */
 	struct klist	p_klist;	/* (c) Knotes attached to this proc. */
 	struct sigiolst	p_sigiolst;	/* (c) List of sigio sources. */
 	int		p_sigparent;	/* (c) Signal to parent on exit. */
+	sigset_t 	p_oldsigmask;	/* (c) Saved mask from pre-sigpause. */
 	int		p_sig;		/* (n) For core dump/debugger XXX. */
 	u_long		p_code;		/* (n) For core dump/debugger XXX. */
 	u_int		p_stops;	/* (c) Stop event bitmask. */
@@ -583,10 +584,11 @@
 	struct thread	*p_singlethread;/* (j) If single threading this is it */
 	int		p_suspcount;	/* (j) # threads in suspended mode */
 /* End area that is zeroed on creation. */
-#define	p_endzero	p_sigstk
+#define	p_endzero	p_sigmask
 
 /* The following fields are all copied upon creation in fork. */
 #define	p_startcopy	p_endzero
+	sigset_t 	p_sigmask; 	/* (c) Current signal mask. */
 	stack_t		p_sigstk;	/* (c) Stack ptr and on-stack flag. */
 	u_int		p_magic;	/* (b) Magic number. */
 	char		p_comm[MAXCOMLEN + 1];	/* (b) Process name. */
@@ -634,7 +636,7 @@
 #define	P_WAITED	0x01000	/* Someone is waiting for us */
 #define	P_WEXIT		0x02000	/* Working on exiting. */
 #define	P_EXEC		0x04000	/* Process called exec. */
-#define	P_THREADED	0x08000	/* Process is using threads. */
+#define	P_THREADED	0x08000	/* Process is using M:N threads. */
 #define	P_CONTINUED	0x10000	/* Proc has continued from a stopped state. */
 #define	P_PROTECTED	0x20000	/* Do not kill on memory overcommit. */
 
@@ -654,8 +656,9 @@
 #define	P_COWINPROGRESS	0x400000 /* Snapshot copy-on-write in progress. */
 
 #define	P_JAILED	0x1000000 /* Process is in jail. */
-#define	P_ALTSTACK	0x2000000 /* Have alternate signal stack. */
-#define	P_INEXEC	0x4000000 /* Process is in execve(). */
+#define	P_OLDMASK	0x2000000 /* Need to restore mask after suspend. */
+#define	P_ALTSTACK	0x4000000 /* Have alternate signal stack. */
+#define	P_INEXEC	0x8000000 /* Process is in execve(). */
 
 /* These flags are kept in p_sflag and are protected with sched_lock. */
 #define	PS_INMEM	0x00001	/* Loaded into memory. */
@@ -666,6 +669,7 @@
 #define	PS_PROFPEND	0x00040	/* Pending SIGPROF needs to be posted. */
 #define	PS_SWAPINREQ	0x00100	/* Swapin request due to wakeup. */
 #define	PS_SWAPPING	0x00200	/* Process is being swapped. */
+#define	PS_NEEDSIGCHK	0x02000	/* Process may need signal delivery. */
 #define	PS_SWAPPINGIN	0x04000	/* Swapin in progress. */
 #define	PS_MACPEND	0x08000	/* Ast()-based MAC event pending. */
 

==== //depot/projects/smpng/sys/sys/syscallsubr.h#5 (text+ko) ====

@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/syscallsubr.h,v 1.6 2003/02/03 17:36:52 ume Exp $
+ * $FreeBSD: src/sys/sys/syscallsubr.h,v 1.7 2003/04/18 20:18:44 jhb Exp $
  */
 
 #ifndef _SYS_SYSCALLSUBR_H_
@@ -73,6 +73,8 @@
 int	kern_sigaction(struct thread *td, int sig, struct sigaction *act,
 	    struct sigaction *oact, int flags);
 int	kern_sigaltstack(struct thread *td, stack_t *ss, stack_t *oss);
+int	kern_sigprocmask(struct thread *td, int how,
+	    sigset_t *set, sigset_t *oset, int old);
 int	kern_sigsuspend(struct thread *td, sigset_t mask);
 int	kern_symlink(struct thread *td, char *path, char *link,
 	    enum uio_seg segflg);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304182026.h3IKQ9LA035767>