summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_fork.c
diff options
context:
space:
mode:
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