diff options
author | brooks <brooks@FreeBSD.org> | 2009-07-24 15:03:10 +0000 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2009-07-24 15:03:10 +0000 |
commit | 7931ef2c42a175d0957f704dfff6807c82adecff (patch) | |
tree | a288a45405a0766b2d46ab342c920d88b33aeff5 /sys/sys/user.h | |
parent | 44220d7e1e07bbf1c88215543c5877abcdb88d29 (diff) | |
download | FreeBSD-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.h | 12 |
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. |