Skip site navigation (1)Skip section navigation (2)
Date:      11 Jun 2001 19:33:16 +0200
From:      Dag-Erling Smorgrav <des@ofug.org>
To:        arch@freebsd.org
Subject:   nextpid -> lastpid
Message-ID:  <xzp7kyiyl9f.fsf@flood.ping.uio.no>

next in thread | raw e-mail | index | archive | help
--=-=-=

The attached patch renames nextpid to lastpid, since most of the time,
that's what it is: the PID of the most recently started process
(though there is occasionally a very brief window during which it is
the PID of a process that hasn't yet started, but is about to).  It
also externalizes it so linprocfs can access it without having to
resort to kernel_sysctlbyname().

DES
-- 
Dag-Erling Smorgrav - des@ofug.org


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=lastpid.diff

Index: sys/sys/proc.h
===================================================================
RCS file: /home/ncvs/src/sys/sys/proc.h,v
retrieving revision 1.164
diff -u -r1.164 proc.h
--- sys/sys/proc.h	2001/05/25 16:59:10	1.164
+++ sys/sys/proc.h	2001/06/11 17:26:15
@@ -486,6 +486,8 @@
 
 extern struct vm_zone *proc_zone;
 
+extern int nextpid;
+
 /*
  * XXX macros for scheduler.  Shouldn't be here, but currently needed for
  * bounding the dubious p_estcpu inheritance in wait1().
Index: sys/kern/kern_fork.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/kern_fork.c,v
retrieving revision 1.113
diff -u -r1.113 kern_fork.c
--- sys/kern/kern_fork.c	2001/05/25 16:59:06	1.113
+++ sys/kern/kern_fork.c	2001/06/11 17:29:55
@@ -158,12 +158,12 @@
 
 
 int	nprocs = 1;				/* process 0 */
-static int nextpid = 0;
-SYSCTL_INT(_kern, OID_AUTO, lastpid, CTLFLAG_RD, &nextpid, 0, 
+int	lastpid = 0;
+SYSCTL_INT(_kern, OID_AUTO, lastpid, CTLFLAG_RD, &lastpid, 0, 
     "Last used PID");
 
 /*
- * Random component to nextpid generation.  We mix in a random factor to make
+ * Random component to lastpid generation.  We mix in a random factor to make
  * it a little harder to predict.  We sanity check the modulus value to avoid
  * doing it in critical paths.  Don't let it be too small or we pointlessly
  * waste randomness entropy, and don't let it be impossibly large.  Using a
@@ -302,13 +302,13 @@
 
 	/*
 	 * Find an unused process ID.  We remember a range of unused IDs
-	 * ready to use (from nextpid+1 through pidchecked-1).
+	 * ready to use (from lastpid+1 through pidchecked-1).
 	 *
 	 * If RFHIGHPID is set (used during system boot), do not allocate
 	 * low-numbered pids.
 	 */
 	sx_xlock(&allproc_lock);
-	trypid = nextpid + 1;
+	trypid = lastpid + 1;
 	if (flags & RFHIGHPID) {
 		if (trypid < 10) {
 			trypid = 10;
@@ -365,12 +365,12 @@
 	}
 
 	/*
-	 * RFHIGHPID does not mess with the nextpid counter during boot.
+	 * RFHIGHPID does not mess with the lastpid counter during boot.
 	 */
 	if (flags & RFHIGHPID)
 		pidchecked = 0;
 	else
-		nextpid = trypid;
+		lastpid = trypid;
 
 	p2 = newproc;
 	p2->p_stat = SIDL;			/* protect against others */

--=-=-=--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzp7kyiyl9f.fsf>