svn commit: r335441 - head/sys/kern

Bjoern A. Zeeb bz at FreeBSD.org
Wed Jun 20 11:42:08 UTC 2018


Author: bz
Date: Wed Jun 20 11:42:06 2018
New Revision: 335441
URL: https://svnweb.freebsd.org/changeset/base/335441

Log:
  Instead of using hand-rolled loops where not needed switch them
  to FOREACH_PROC_IN_SYSTEM() to have a single pattern to look for.
  
  Reviewed by:	kib
  MFC after:	2 weeks
  Sponsored by:	iXsystems, Inc.
  Differential Revision:	https://reviews.freebsd.org/D15916

Modified:
  head/sys/kern/kern_jail.c
  head/sys/kern/kern_proc.c
  head/sys/kern/subr_kdb.c

Modified: head/sys/kern/kern_jail.c
==============================================================================
--- head/sys/kern/kern_jail.c	Wed Jun 20 11:13:10 2018	(r335440)
+++ head/sys/kern/kern_jail.c	Wed Jun 20 11:42:06 2018	(r335441)
@@ -2286,7 +2286,7 @@ prison_remove_one(struct prison *pr)
 	 * Kill all processes unfortunate enough to be attached to this prison.
 	 */
 	sx_slock(&allproc_lock);
-	LIST_FOREACH(p, &allproc, p_list) {
+	FOREACH_PROC_IN_SYSTEM(p) {
 		PROC_LOCK(p);
 		if (p->p_state != PRS_NEW && p->p_ucred &&
 		    p->p_ucred->cr_prison == pr)

Modified: head/sys/kern/kern_proc.c
==============================================================================
--- head/sys/kern/kern_proc.c	Wed Jun 20 11:13:10 2018	(r335440)
+++ head/sys/kern/kern_proc.c	Wed Jun 20 11:42:06 2018	(r335441)
@@ -3176,7 +3176,7 @@ again:
 		}
 	}
 	/*  Did the loop above missed any stopped process ? */
-	LIST_FOREACH(p, &allproc, p_list) {
+	FOREACH_PROC_IN_SYSTEM(p) {
 		/* No need for proc lock. */
 		if ((p->p_flag & P_TOTAL_STOP) != 0)
 			goto again;

Modified: head/sys/kern/subr_kdb.c
==============================================================================
--- head/sys/kern/subr_kdb.c	Wed Jun 20 11:13:10 2018	(r335440)
+++ head/sys/kern/subr_kdb.c	Wed Jun 20 11:42:06 2018	(r335441)
@@ -580,14 +580,12 @@ kdb_thr_first(void)
 	struct proc *p;
 	struct thread *thr;
 
-	p = LIST_FIRST(&allproc);
-	while (p != NULL) {
+	FOREACH_PROC_IN_SYSTEM(p) {
 		if (p->p_flag & P_INMEM) {
 			thr = FIRST_THREAD_IN_PROC(p);
 			if (thr != NULL)
 				return (thr);
 		}
-		p = LIST_NEXT(p, p_list);
 	}
 	return (NULL);
 }
@@ -597,11 +595,9 @@ kdb_thr_from_pid(pid_t pid)
 {
 	struct proc *p;
 
-	p = LIST_FIRST(&allproc);
-	while (p != NULL) {
+	FOREACH_PROC_IN_SYSTEM(p) {
 		if (p->p_flag & P_INMEM && p->p_pid == pid)
 			return (FIRST_THREAD_IN_PROC(p));
-		p = LIST_NEXT(p, p_list);
 	}
 	return (NULL);
 }


More information about the svn-src-head mailing list