svn commit: r294468 - head/sys/kern

Mateusz Guzik mjg at FreeBSD.org
Wed Jan 20 23:22:37 UTC 2016


Author: mjg
Date: Wed Jan 20 23:22:36 2016
New Revision: 294468
URL: https://svnweb.freebsd.org/changeset/base/294468

Log:
  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

Modified:
  head/sys/kern/kern_proc.c

Modified: head/sys/kern/kern_proc.c
==============================================================================
--- head/sys/kern/kern_proc.c	Wed Jan 20 23:11:58 2016	(r294467)
+++ head/sys/kern/kern_proc.c	Wed Jan 20 23:22:36 2016	(r294468)
@@ -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);
 	}
 }


More information about the svn-src-head mailing list