summaryrefslogtreecommitdiffstats
path: root/sys/sys/user.h
diff options
context:
space:
mode:
authorbrooks <brooks@FreeBSD.org>2009-07-24 15:03:10 +0000
committerbrooks <brooks@FreeBSD.org>2009-07-24 15:03:10 +0000
commit7931ef2c42a175d0957f704dfff6807c82adecff (patch)
treea288a45405a0766b2d46ab342c920d88b33aeff5 /sys/sys/user.h
parent44220d7e1e07bbf1c88215543c5877abcdb88d29 (diff)
downloadFreeBSD-src-7931ef2c42a175d0957f704dfff6807c82adecff.zip
FreeBSD-src-7931ef2c42a175d0957f704dfff6807c82adecff.tar.gz
Revert the changes to struct kinfo_proc in r194498. Instead, fill
in up to 16 (KI_NGROUPS) values and steal a bit from ki_cr_flags (all bits currently unused) to indicate overflow with the new flag KI_CRF_GRP_OVERFLOW. This fixes procstat -s. Approved by: re (kib)
Diffstat (limited to 'sys/sys/user.h')
-rw-r--r--sys/sys/user.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/sys/user.h b/sys/sys/user.h
index 8a0bc65..b135034 100644
--- a/sys/sys/user.h
+++ b/sys/sys/user.h
@@ -85,7 +85,7 @@
*/
#define KI_NSPARE_INT 9
#define KI_NSPARE_LONG 12
-#define KI_NSPARE_PTR 6
+#define KI_NSPARE_PTR 7
#ifdef __amd64__
#define KINFO_PROC_SIZE 1088
@@ -117,8 +117,15 @@
#define OCOMMLEN 16 /* size of returned thread name */
#define COMMLEN 19 /* size of returned ki_comm name */
#define KI_EMULNAMELEN 16 /* size of returned ki_emul */
+#define KI_NGROUPS 16 /* number of groups in ki_groups */
#define LOGNAMELEN 17 /* size of returned ki_login */
+/*
+ * Steal a bit from ki_cr_flags (cr_flags is never used) to indicate
+ * that the cred had more than KI_NGROUPS groups.
+ */
+#define KI_CRF_GRP_OVERFLOW 0x80000000
+
struct kinfo_proc {
int ki_structsize; /* size of this structure */
int ki_layout; /* reserved: layout identifier */
@@ -150,7 +157,7 @@ struct kinfo_proc {
gid_t ki_svgid; /* Saved effective group id */
short ki_ngroups; /* number of groups */
short ki_spare_short2; /* unused (just here for alignment) */
- uint32_t __was_ki_groups[16]; /* unused; left for bin compat */
+ gid_t ki_groups[KI_NGROUPS]; /* groups */
vm_size_t ki_size; /* virtual size */
segsz_t ki_rssize; /* current resident set size in pages */
segsz_t ki_swrss; /* resident set size before last swap */
@@ -200,7 +207,6 @@ struct kinfo_proc {
struct pcb *ki_pcb; /* kernel virtual addr of pcb */
void *ki_kstack; /* kernel virtual addr of stack */
void *ki_udata; /* User convenience pointer */
- gid_t *ki_groups; /* groups */
/*
* When adding new variables, take space for pointers from the
* front of ki_spareptrs, and longs from the end of ki_sparelongs.
OpenPOWER on IntegriCloud