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>