summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exit.c
diff options
context:
space:
mode:
authorzec <zec@FreeBSD.org>2009-05-08 14:11:06 +0000
committerzec <zec@FreeBSD.org>2009-05-08 14:11:06 +0000
commit639797b2e609797fdaf2c8e88b9203bfc7c70b7e (patch)
tree070fe9c96176ed914dfefc12a45fea29b98c4122 /sys/kern/kern_exit.c
parentf851007175f37de5aec0c77eb852e3444150e653 (diff)
downloadFreeBSD-src-639797b2e609797fdaf2c8e88b9203bfc7c70b7e.zip
FreeBSD-src-639797b2e609797fdaf2c8e88b9203bfc7c70b7e.tar.gz
Introduce a new virtualization container, provisionally named vprocg, to hold
virtualized instances of hostname and domainname, as well as a new top-level virtualization struct vimage, which holds pointers to struct vnet and struct vprocg. Struct vprocg is likely to become replaced in the near future with a new jail management API import. As a consequence of this change, change struct ucred to point to a struct vimage, instead of directly pointing to a vnet. Merge vnet / vimage / ucred refcounting infrastructure from p4 / vimage branch. Permit kldload / kldunload operations to be executed only from the default vimage context. This change should have no functional impact on nooptions VIMAGE kernel builds. Reviewed by: bz Approved by: julian (mentor)
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r--sys/kern/kern_exit.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index a10e915..89b92c6 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sdt.h>
#include <sys/shm.h>
#include <sys/sem.h>
+#include <sys/vimage.h>
#ifdef KTRACE
#include <sys/ktrace.h>
#endif
@@ -737,6 +738,7 @@ loop:
nfound++;
PROC_SLOCK(p);
if (p->p_state == PRS_ZOMBIE) {
+ INIT_VPROCG(P_TO_VPROCG(p));
if (rusage) {
*rusage = p->p_ru;
calcru(p, &rusage->ru_utime, &rusage->ru_stime);
@@ -837,6 +839,9 @@ loop:
uma_zfree(proc_zone, p);
sx_xlock(&allproc_lock);
nprocs--;
+#ifdef VIMAGE
+ vprocg->nprocs--;
+#endif
sx_xunlock(&allproc_lock);
return (0);
}
OpenPOWER on IntegriCloud