Add ki_jid field to the kinfo_proc structure and store jail ID there.

Reviewed by:	gad
MFC after:	3 days
This commit is contained in:
Pawel Jakub Dawidek 2005-03-20 10:35:23 +00:00
parent e69f1fa2ef
commit c78941e69e
2 changed files with 12 additions and 4 deletions

@ -653,8 +653,12 @@ fill_kinfo_thread(struct thread *td, struct kinfo_proc *kp)
kp->ki_rgid = cred->cr_rgid; kp->ki_rgid = cred->cr_rgid;
kp->ki_svgid = cred->cr_svgid; kp->ki_svgid = cred->cr_svgid;
/* If jailed(cred), emulate the old P_JAILED flag. */ /* If jailed(cred), emulate the old P_JAILED flag. */
if (jailed(cred)) if (jailed(cred)) {
kp->ki_flag |= P_JAILED; kp->ki_flag |= P_JAILED;
/* If inside a jail, use 0 as a jail ID. */
if (!jailed(curthread->td_ucred))
kp->ki_jid = cred->cr_prison->pr_id;
}
} }
ps = p->p_sigacts; ps = p->p_sigacts;
if (ps) { if (ps) {

@ -74,7 +74,7 @@
* end of kinfo_proc. It may need to be overridden on a platform-specific * end of kinfo_proc. It may need to be overridden on a platform-specific
* basis as new fields are added. * basis as new fields are added.
*/ */
#define KI_NSPARE 16 #define KI_NSPARE 15
#ifdef __alpha__ #ifdef __alpha__
#define KINFO_PROC_SIZE 912 #define KINFO_PROC_SIZE 912
@ -84,7 +84,7 @@
#endif #endif
#ifdef __arm__ #ifdef __arm__
#undef KI_NSPARE /* Fewer spare longs on this arch */ #undef KI_NSPARE /* Fewer spare longs on this arch */
#define KI_NSPARE 15 #define KI_NSPARE 13
#define KINFO_PROC_SIZE 648 #define KINFO_PROC_SIZE 648
#endif #endif
#ifdef __ia64__ #ifdef __ia64__
@ -92,10 +92,12 @@
#endif #endif
#ifdef __i386__ #ifdef __i386__
#undef KI_NSPARE /* Fewer spare longs on this arch */ #undef KI_NSPARE /* Fewer spare longs on this arch */
#define KI_NSPARE 15 #define KI_NSPARE 13
#define KINFO_PROC_SIZE 648 #define KINFO_PROC_SIZE 648
#endif #endif
#ifdef __powerpc__ #ifdef __powerpc__
#undef KI_NSPARE /* Fewer spare longs on this arch */
#define KI_NSPARE 14
#define KINFO_PROC_SIZE 656 #define KINFO_PROC_SIZE 656
#endif #endif
#ifdef __sparc64__ #ifdef __sparc64__
@ -187,6 +189,8 @@ struct kinfo_proc {
lwpid_t ki_tid; /* XXXKSE thread id */ lwpid_t ki_tid; /* XXXKSE thread id */
int ki_numthreads; /* XXXKSE number of threads in total */ int ki_numthreads; /* XXXKSE number of threads in total */
void *ki_udata; /* User convenience pointer */ void *ki_udata; /* User convenience pointer */
int ki_jid; /* Process jail ID */
int ki_spare_int1; /* unused (just here for alignment) */
long ki_spare[KI_NSPARE]; /* spare room for later growth */ long ki_spare[KI_NSPARE]; /* spare room for later growth */
}; };
void fill_kinfo_proc(struct proc *, struct kinfo_proc *); void fill_kinfo_proc(struct proc *, struct kinfo_proc *);