Hi Rusty,
There are a number of occasions where a function declares a temporary cpumask_t
variable on the stack to hold (say) current->cpus_allowed. I tried a couple of
options early on to a.) reserve one or two cpumask_t variables in the task
struct; and b.) reserve one or two cpumask_t variables per cpu. Both had weird
consequences in some usages and since 4096 is *only* 512 bytes, it didn't seem
worth the effort. Our next iteration will have NR_CPUS=16384 and therefore
removing all stack declared cpumask_t variables is highly desirable.
Your idea of a pool allocator is very interesting... ;-)
Thanks,
Mike
--