]> git.baikalelectronics.ru Git - kernel.git/commit
cpumask: introduce new API, without changing anything
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 5 Nov 2008 02:39:10 +0000 (13:39 +1100)
committerIngo Molnar <mingo@elte.hu>
Thu, 6 Nov 2008 08:05:33 +0000 (09:05 +0100)
commitf79f0c485248a58843abe0f15a7148001b1a1a65
tree3b55cc93720b2e525460216b196ed20298ae985b
parent408046600eac0ccce09d96df653b23ac74e39bfc
cpumask: introduce new API, without changing anything

Impact: introduce new APIs

We want to deprecate cpumasks on the stack, as we are headed for
gynormous numbers of CPUs.  Eventually, we want to head towards an
undefined 'struct cpumask' so they can never be declared on stack.

1) New cpumask functions which take pointers instead of copies.
   (cpus_* -> cpumask_*)

2) Several new helpers to reduce requirements for temporary cpumasks
   (cpumask_first_and, cpumask_next_and, cpumask_any_and)

3) Helpers for declaring cpumasks on or offstack for large NR_CPUS
   (cpumask_var_t, alloc_cpumask_var and free_cpumask_var)

4) 'struct cpumask' for explicitness and to mark new-style code.

5) Make iterator functions stop at nr_cpu_ids (a runtime constant),
   not NR_CPUS for time efficiency and for smaller dynamic allocations
   in future.

6) cpumask_copy() so we can allocate less than a full cpumask eventually
   (for alloc_cpumask_var), and so we can eliminate the 'struct cpumask'
   definition eventually.

7) work_on_cpu() helper for doing task on a CPU, rather than saving old
   cpumask for current thread and manipulating it.

8) smp_call_function_many() which is smp_call_function_mask() except
   taking a cpumask pointer.

Note that this patch simply introduces the new functions and leaves
the obsolescent ones in place.  This is to simplify the transition
patches.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/cpumask.h
include/linux/smp.h
include/linux/workqueue.h
kernel/cpu.c
kernel/workqueue.c
lib/cpumask.c