Hi,
I wish to obtain number of processes forked since boot from userland.
So, I made a patch to intend to commit.
Any comment?
Index: lib/libc/gen/sysctl.3
diff -u lib/libc/gen/sysctl.3.orig lib/libc/gen/sysctl.3
--- lib/libc/gen/sysctl.3.orig Fri Jan 12 02:39:22 2001
+++ lib/libc/gen/sysctl.3 Tue Jan 16 02:13:19 2001
@@ -294,6 +294,7 @@
.It "KERN\_UPDATEINTERVAL integer no"
.It "KERN\_VERSION string no"
.It "KERN\_VNODE struct vnode no"
+.It "KERN\_NFORKS integer no"
.El
.Pp
.Bl -tag -width 6n
@@ -445,6 +446,8 @@
.Va struct vnode *
followed by the vnode itself
.Va struct vnode .
+.It Li KERN_NFORKS
+Number of processes forked.
.El
.Ss CTL_MACHDEP
The set of variables defined is architecture dependent.
Index: sbin/sysctl/sysctl.8
diff -u sbin/sysctl/sysctl.8.orig sbin/sysctl/sysctl.8
--- sbin/sysctl/sysctl.8.orig Fri Jan 12 02:42:23 2001
+++ sbin/sysctl/sysctl.8 Tue Jan 16 02:13:19 2001
@@ -145,6 +145,7 @@
.It "kern.bootfile string yes
.It "kern.corefile string yes
.It "kern.logsigexit integer yes
+.It "kern.nforks integer no
.It "vm.loadavg struct no
.It "hw.machine string no
.It "hw.model string no
Index: sys/kern/kern_fork.c
diff -u sys/kern/kern_fork.c.orig sys/kern/kern_fork.c
--- sys/kern/kern_fork.c.orig Fri Jan 12 02:46:53 2001
+++ sys/kern/kern_fork.c Tue Jan 16 02:30:26 2001
@@ -146,6 +146,9 @@
int nprocs = 1; /* process 0 */
static int nextpid = 0;
+static unsigned int nforks = 0;
+SYSCTL_UINT(_kern, KERN_NFORKS, nforks, CTLFLAG_RD, &nforks, 0, "");
+
/*
* Random component to nextpid generation. We mix in a random factor to make
* it a little harder to predict. We sanity check the modulus value to avoid
@@ -277,6 +280,8 @@
}
newproc->p_vmspace = NULL;
+
+ nforks++;
/*
* Find an unused process ID. We remember a range of unused IDs
Index: sys/sys/sysctl.h
diff -u sys/sys/sysctl.h.orig sys/sys/sysctl.h
--- sys/sys/sysctl.h.orig Fri Jan 12 02:48:41 2001
+++ sys/sys/sysctl.h Tue Jan 16 02:13:19 2001
@@ -328,7 +328,8 @@
#define KERN_PS_STRINGS 32 /* int: address of PS_STRINGS */
#define KERN_USRSTACK 33 /* int: address of USRSTACK */
#define KERN_LOGSIGEXIT 34 /* int: do we log sigexit procs? */
-#define KERN_MAXID 35 /* number of valid kern ids */
+#define KERN_NFORKS 35 /* uint: number of forked */
+#define KERN_MAXID 36 /* number of valid kern ids */
#define CTL_KERN_NAMES { \
{ 0, 0 }, \
@@ -366,6 +367,7 @@
{ "ps_strings", CTLTYPE_INT }, \
{ "usrstack", CTLTYPE_INT }, \
{ "logsigexit", CTLTYPE_INT }, \
+ { "nforks", CTLTYPE_UINT }, \
}
/*
--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
[EMAIL PROTECTED] [EMAIL PROTECTED] ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message