diff options
author | pjd <pjd@FreeBSD.org> | 2005-03-20 10:37:56 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2005-03-20 10:37:56 +0000 |
commit | d4e1d8c06384bc9e179a30804d3195f219879189 (patch) | |
tree | 6856454f1e5ef8d3ddd89df08e6fe9d0317db5be /lib/libkvm | |
parent | 2275c8c92e33f471bea52f1fefed5d8dc4c3c7ec (diff) | |
download | FreeBSD-src-d4e1d8c06384bc9e179a30804d3195f219879189.zip FreeBSD-src-d4e1d8c06384bc9e179a30804d3195f219879189.tar.gz |
Make kvm(3) aware of ki_jid field.
Reviewed by: gad
MFC after: 3 days
Diffstat (limited to 'lib/libkvm')
-rw-r--r-- | lib/libkvm/kvm_proc.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c index d541eb1..c65fed3 100644 --- a/lib/libkvm/kvm_proc.c +++ b/lib/libkvm/kvm_proc.c @@ -52,8 +52,14 @@ __FBSDID("$FreeBSD$"); */ #include <sys/param.h> -#define _WANT_UCRED /* make ucred.h give us 'struct ucred' */ +#define _WANT_UCRED /* make ucred.h give us 'struct ucred' */ #include <sys/ucred.h> +#include <sys/queue.h> +#include <sys/_lock.h> +#include <sys/_mutex.h> +#include <sys/_task.h> +#define _WANT_PRISON /* make jail.h give us 'struct prison' */ +#include <sys/jail.h> #include <sys/user.h> #include <sys/proc.h> #include <sys/exec.h> @@ -105,6 +111,7 @@ kvm_proclist(kd, what, arg, p, bp, maxcnt) struct sigacts sigacts; struct pstats pstats; struct ucred ucred; + struct prison pr; struct thread mtd; /*struct kse mke;*/ struct ksegrp mkg; @@ -159,6 +166,15 @@ kvm_proclist(kd, what, arg, p, bp, maxcnt) bcopy(ucred.cr_groups, kp->ki_groups, NGROUPS * sizeof(gid_t)); kp->ki_uid = ucred.cr_uid; + if (ucred.cr_prison != NULL) { + if (KREAD(kd, (u_long)ucred.cr_prison, &pr)) { + _kvm_err(kd, kd->program, + "can't read prison at %x", + ucred.cr_prison); + return (-1); + } + kp->ki_jid = pr.pr_id; + } } switch(what & ~KERN_PROC_INC_THREAD) { |