summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_fork.c
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2001-01-23 14:32:01 +0000
committerume <ume@FreeBSD.org>2001-01-23 14:32:01 +0000
commit1ae749987d8130c6c5c01d3fb7df1cdb59ae0ea4 (patch)
treefe812ab278da705aa2336824ba5a950b2eea1b7e /sys/kern/kern_fork.c
parent52c12909ebc46a4969c5a8b54e24f66294303a52 (diff)
downloadFreeBSD-src-1ae749987d8130c6c5c01d3fb7df1cdb59ae0ea4.zip
FreeBSD-src-1ae749987d8130c6c5c01d3fb7df1cdb59ae0ea4.tar.gz
Add mibs to hold the number of forks since boot. New mibs are:
vm.stats.vm.v_forks vm.stats.vm.v_vforks vm.stats.vm.v_rforks vm.stats.vm.v_kthreads vm.stats.vm.v_forkpages vm.stats.vm.v_vforkpages vm.stats.vm.v_rforkpages vm.stats.vm.v_kthreadpages Submitted by: Paul Herman <pherman@frenchfries.net> Reviewed by: alfred
Diffstat (limited to 'sys/kern/kern_fork.c')
-rw-r--r--sys/kern/kern_fork.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index 9dc8ec3..e8f8a60 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -65,6 +65,7 @@
#include <vm/vm_extern.h>
#include <vm/vm_zone.h>
+#include <sys/vmmeter.h>
#include <sys/user.h>
static MALLOC_DEFINE(M_ATFORK, "atfork", "atfork callback");
@@ -517,6 +518,20 @@ again:
*/
vm_fork(p1, p2, flags);
+ if (flags == (RFFDG | RFPROC)) {
+ cnt.v_forks++;
+ cnt.v_forkpages += p2->p_vmspace->vm_dsize + p2->p_vmspace->vm_ssize;
+ } else if (flags == (RFFDG | RFPROC | RFPPWAIT | RFMEM)) {
+ cnt.v_vforks++;
+ cnt.v_vforkpages += p2->p_vmspace->vm_dsize + p2->p_vmspace->vm_ssize;
+ } else if (p1 == &proc0) {
+ cnt.v_kthreads++;
+ cnt.v_kthreadpages += p2->p_vmspace->vm_dsize + p2->p_vmspace->vm_ssize;
+ } else {
+ cnt.v_rforks++;
+ cnt.v_rforkpages += p2->p_vmspace->vm_dsize + p2->p_vmspace->vm_ssize;
+ }
+
/*
* Both processes are set up, now check if any loadable modules want
* to adjust anything.
OpenPOWER on IntegriCloud