mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-12-23 02:56:31 +01:00
lib/cpumask: add inline cpumask_next_wrap() for UP
In the uniprocessor case, cpumask_next_wrap() can be simplified, as the
number of valid argument combinations is limited:
- 'start' can only be 0
- 'n' can only be -1 or 0
The only valid CPU that can then be returned, if any, will be the first
one set in the provided 'mask'.
For NR_CPUS == 1, include/linux/cpumask.h now provides an inline
definition of cpumask_next_wrap(), which will conflict with the one
provided by lib/cpumask.c. Make building of lib/cpumask.o again depend
on CONFIG_SMP=y (i.e. NR_CPUS > 1) to avoid the re-definition.
Suggested-by: Yury Norov <yury.norov@gmail.com>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
Signed-off-by: Yury Norov <yury.norov@gmail.com>
This commit is contained in:
parent
be59924486
commit
2248ccd801
|
|
@ -262,7 +262,26 @@ unsigned int cpumask_next_and(int n, const struct cpumask *src1p,
|
||||||
(cpu) = cpumask_next_zero((cpu), (mask)), \
|
(cpu) = cpumask_next_zero((cpu), (mask)), \
|
||||||
(cpu) < nr_cpu_ids;)
|
(cpu) < nr_cpu_ids;)
|
||||||
|
|
||||||
|
#if NR_CPUS == 1
|
||||||
|
static inline
|
||||||
|
unsigned int cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap)
|
||||||
|
{
|
||||||
|
cpumask_check(start);
|
||||||
|
if (n != -1)
|
||||||
|
cpumask_check(n);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the first available CPU when wrapping, or when starting before cpu0,
|
||||||
|
* since there is only one valid option.
|
||||||
|
*/
|
||||||
|
if (wrap && n >= 0)
|
||||||
|
return nr_cpumask_bits;
|
||||||
|
|
||||||
|
return cpumask_first(mask);
|
||||||
|
}
|
||||||
|
#else
|
||||||
unsigned int __pure cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap);
|
unsigned int __pure cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* for_each_cpu_wrap - iterate over every cpu in a mask, starting at a specified location
|
* for_each_cpu_wrap - iterate over every cpu in a mask, starting at a specified location
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,10 @@ lib-y := ctype.o string.o vsprintf.o cmdline.o \
|
||||||
is_single_threaded.o plist.o decompress.o kobject_uevent.o \
|
is_single_threaded.o plist.o decompress.o kobject_uevent.o \
|
||||||
earlycpio.o seq_buf.o siphash.o dec_and_lock.o \
|
earlycpio.o seq_buf.o siphash.o dec_and_lock.o \
|
||||||
nmi_backtrace.o win_minmax.o memcat_p.o \
|
nmi_backtrace.o win_minmax.o memcat_p.o \
|
||||||
buildid.o cpumask.o
|
buildid.o
|
||||||
|
|
||||||
lib-$(CONFIG_PRINTK) += dump_stack.o
|
lib-$(CONFIG_PRINTK) += dump_stack.o
|
||||||
|
lib-$(CONFIG_SMP) += cpumask.o
|
||||||
|
|
||||||
lib-y += kobject.o klist.o
|
lib-y += kobject.o klist.o
|
||||||
obj-y += lockref.o
|
obj-y += lockref.o
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user