summaryrefslogtreecommitdiffstats
path: root/lib/libkvm
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2005-03-20 10:37:56 +0000
committerpjd <pjd@FreeBSD.org>2005-03-20 10:37:56 +0000
commitd4e1d8c06384bc9e179a30804d3195f219879189 (patch)
tree6856454f1e5ef8d3ddd89df08e6fe9d0317db5be /lib/libkvm
parent2275c8c92e33f471bea52f1fefed5d8dc4c3c7ec (diff)
downloadFreeBSD-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.c18
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) {
OpenPOWER on IntegriCloud