summaryrefslogtreecommitdiff
path: root/sys/kern/kern_fork.c
diff options
context:
space:
mode:
authorHajimu UMEMOTO <ume@FreeBSD.org>2001-02-18 15:41:11 +0000
committerHajimu UMEMOTO <ume@FreeBSD.org>2001-02-18 15:41:11 +0000
commitea6ca37b4c6e3e449404b0e4f904403fc774a8a5 (patch)
tree302bb5f1bb6500bbd17f3b67e7f09984bd78bbf3 /sys/kern/kern_fork.c
parent1e5a70b33d3e6df9f797038efcacd6e6be681218 (diff)
Notes
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 a7c2a5d96b25..994baac5779a 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -63,6 +63,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");
@@ -485,6 +486,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.