Messages in this thread | | | Date | Thu, 14 Nov 2002 17:30:33 -0800 | From | Andrew Morton <> | Subject | Re: [BK PATCH 1/2] Remove NGROUPS hardlimit (resend w/o qsort) |
| |
Tim Hockin wrote: > > Andrew Morton wrote: > > > What are you actually using the search for? > > > >>From a quick look, it seems that it's purely to answer > > the question "is this process a member of group X?". Is > > that correct? > > > > If so, test_bit() would work nicely. > > This could work if we find the max gid, allocate an array of > max_gid/CHAR_BITS + 1 bytes then test_bit, but given the non-contiguity > (is that a word) of group memberships, we'll waste a lot of space on > holes. Now, it could be argued that 10,000 groups are PROBABLY local > enough. Getting the groups back out will be nasty nastiness, though. > > perhaps: > > if (gidsetsize < (2 * EXEC_PAGESIZE)/sizeof(gid_t)) { /* or something */ > /* use kmalloc() */ > else > /* use vmalloc() */ > > thoughts? >
10,000 bits isn't much. Maybe:
- add `char groups[16]' to task_struct
- add `struct page *groups_page' to task_struct
- then if (getsetsize <= 256) use current->groups[] /* 256 groups max */ else use current->groups_page; /* 32768 groups max */ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |