PERFORCE change 29215 for review
John Baldwin
jhb at FreeBSD.org
Fri Apr 18 13:26:14 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=29215
Change 29215 by jhb at 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);
More information about the p4-projects
mailing list