summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormjg <mjg@FreeBSD.org>2016-01-20 23:22:36 +0000
committermjg <mjg@FreeBSD.org>2016-01-20 23:22:36 +0000
commit1a52d1b25e27972a26ec2fa156565d67a997e2db (patch)
treea335cec317942df061929eabcef264b40fc5c831
parentdfe3d695334e1300d01e5e4db90e19733c4ac470 (diff)
downloadFreeBSD-src-1a52d1b25e27972a26ec2fa156565d67a997e2db.zip
FreeBSD-src-1a52d1b25e27972a26ec2fa156565d67a997e2db.tar.gz
session: tidy up fixjobc
This stops abusing the 'p' pointer for iteration over children processes and gets rid of useless locking around PRS_ZOMBIE check. Suggested by: kib
-rw-r--r--sys/kern/kern_proc.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index bbedd9b..6937fb4 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -650,13 +650,11 @@ pgadjustjobc(pgrp, entering)
* entering == 1 => p is entering specified group.
*/
void
-fixjobc(p, pgrp, entering)
- register struct proc *p;
- register struct pgrp *pgrp;
- int entering;
+fixjobc(struct proc *p, struct pgrp *pgrp, int entering)
{
- register struct pgrp *hispgrp;
- register struct session *mysession;
+ struct pgrp *hispgrp;
+ struct session *mysession;
+ struct proc *q;
sx_assert(&proctree_lock, SX_LOCKED);
PROC_LOCK_ASSERT(p, MA_NOTOWNED);
@@ -677,17 +675,13 @@ fixjobc(p, pgrp, entering)
* their process groups; if so, adjust counts for children's
* process groups.
*/
- LIST_FOREACH(p, &p->p_children, p_sibling) {
- hispgrp = p->p_pgrp;
+ LIST_FOREACH(q, &p->p_children, p_sibling) {
+ hispgrp = q->p_pgrp;
if (hispgrp == pgrp ||
hispgrp->pg_session != mysession)
continue;
- PROC_LOCK(p);
- if (p->p_state == PRS_ZOMBIE) {
- PROC_UNLOCK(p);
+ if (q->p_state == PRS_ZOMBIE)
continue;
- }
- PROC_UNLOCK(p);
pgadjustjobc(hispgrp, entering);
}
}
OpenPOWER on IntegriCloud