Lines Matching full:cpu
7 * set of CPU's in a system, one bit position per CPU number. In general,
54 * cpu_possible_mask- has bit 'cpu' set iff cpu is populatable
55 * cpu_present_mask - has bit 'cpu' set iff cpu is populated
56 * cpu_online_mask - has bit 'cpu' set iff cpu available to scheduler
57 * cpu_active_mask - has bit 'cpu' set iff cpu available to migration
61 * The cpu_possible_mask is fixed at boot time, as the set of CPU id's
81 * assumption that their single CPU is online. The UP
87 * only one CPU.
107 * concurrent CPU hotplug operations unless invoked from a cpuhp_lock held
117 #define cpu_online(cpu) cpumask_test_cpu((cpu), cpu_online_mask) argument
118 #define cpu_possible(cpu) cpumask_test_cpu((cpu), cpu_possible_mask) argument
119 #define cpu_present(cpu) cpumask_test_cpu((cpu), cpu_present_mask) argument
120 #define cpu_active(cpu) cpumask_test_cpu((cpu), cpu_active_mask) argument
126 #define cpu_online(cpu) ((cpu) == 0) argument
127 #define cpu_possible(cpu) ((cpu) == 0) argument
128 #define cpu_present(cpu) ((cpu) == 0) argument
129 #define cpu_active(cpu) ((cpu) == 0) argument
134 static inline void cpu_max_bits_warn(unsigned int cpu, unsigned int bits) in cpu_max_bits_warn() argument
137 WARN_ON_ONCE(cpu >= bits); in cpu_max_bits_warn()
141 /* verify cpu argument to cpumask_* operators */
142 static inline unsigned int cpumask_check(unsigned int cpu) in cpumask_check() argument
144 cpu_max_bits_warn(cpu, nr_cpumask_bits); in cpumask_check()
145 return cpu; in cpumask_check()
185 /* cpu must be a valid cpu, ie 0, so there's no other choice. */
187 unsigned int cpu) in cpumask_any_but()
202 #define for_each_cpu(cpu, mask) \ argument
203 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
204 #define for_each_cpu_not(cpu, mask) \ argument
205 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
206 #define for_each_cpu_wrap(cpu, mask, start) \ argument
207 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask, (void)(start))
208 #define for_each_cpu_and(cpu, mask1, mask2) \ argument
209 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask1, (void)mask2)
212 * cpumask_first - get the first cpu in a cpumask
223 * cpumask_last - get the last CPU in a cpumask
236 * cpumask_next_zero - get the next unset cpu in a cpumask
237 * @n: the cpu prior to the place to search (ie. return will be > @n)
251 int cpumask_any_but(const struct cpumask *mask, unsigned int cpu);
257 * for_each_cpu - iterate over every cpu in a mask
258 * @cpu: the (optionally unsigned) integer iterator
261 * After the loop, cpu is >= nr_cpu_ids.
263 #define for_each_cpu(cpu, mask) \ argument
264 for ((cpu) = -1; \
265 (cpu) = cpumask_next((cpu), (mask)), \
266 (cpu) < nr_cpu_ids;)
269 * for_each_cpu_not - iterate over every cpu in a complemented mask
270 * @cpu: the (optionally unsigned) integer iterator
273 * After the loop, cpu is >= nr_cpu_ids.
275 #define for_each_cpu_not(cpu, mask) \ argument
276 for ((cpu) = -1; \
277 (cpu) = cpumask_next_zero((cpu), (mask)), \
278 (cpu) < nr_cpu_ids;)
283 * for_each_cpu_wrap - iterate over every cpu in a mask, starting at a specified location
284 * @cpu: the (optionally unsigned) integer iterator
290 * After the loop, cpu is >= nr_cpu_ids.
292 #define for_each_cpu_wrap(cpu, mask, start) \ argument
293 for ((cpu) = cpumask_next_wrap((start)-1, (mask), (start), false); \
294 (cpu) < nr_cpumask_bits; \
295 (cpu) = cpumask_next_wrap((cpu), (mask), (start), true))
298 * for_each_cpu_and - iterate over every cpu in both masks
299 * @cpu: the (optionally unsigned) integer iterator
303 * This saves a temporary CPU mask in many places. It is equivalent to:
306 * for_each_cpu(cpu, &tmp)
309 * After the loop, cpu is >= nr_cpu_ids.
311 #define for_each_cpu_and(cpu, mask1, mask2) \ argument
312 for ((cpu) = -1; \
313 (cpu) = cpumask_next_and((cpu), (mask1), (mask2)), \
314 (cpu) < nr_cpu_ids;)
328 * cpumask_set_cpu - set a cpu in a cpumask
329 * @cpu: cpu number (< nr_cpu_ids)
332 static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) in cpumask_set_cpu() argument
334 set_bit(cpumask_check(cpu), cpumask_bits(dstp)); in cpumask_set_cpu()
337 static inline void __cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) in __cpumask_set_cpu() argument
339 __set_bit(cpumask_check(cpu), cpumask_bits(dstp)); in __cpumask_set_cpu()
344 * cpumask_clear_cpu - clear a cpu in a cpumask
345 * @cpu: cpu number (< nr_cpu_ids)
348 static inline void cpumask_clear_cpu(int cpu, struct cpumask *dstp) in cpumask_clear_cpu() argument
350 clear_bit(cpumask_check(cpu), cpumask_bits(dstp)); in cpumask_clear_cpu()
353 static inline void __cpumask_clear_cpu(int cpu, struct cpumask *dstp) in __cpumask_clear_cpu() argument
355 __clear_bit(cpumask_check(cpu), cpumask_bits(dstp)); in __cpumask_clear_cpu()
359 * cpumask_test_cpu - test for a cpu in a cpumask
360 * @cpu: cpu number (< nr_cpu_ids)
363 * Returns 1 if @cpu is set in @cpumask, else returns 0
365 static inline int cpumask_test_cpu(int cpu, const struct cpumask *cpumask) in cpumask_test_cpu() argument
367 return test_bit(cpumask_check(cpu), cpumask_bits((cpumask))); in cpumask_test_cpu()
371 * cpumask_test_and_set_cpu - atomically test and set a cpu in a cpumask
372 * @cpu: cpu number (< nr_cpu_ids)
375 * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0
379 static inline int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask) in cpumask_test_and_set_cpu() argument
381 return test_and_set_bit(cpumask_check(cpu), cpumask_bits(cpumask)); in cpumask_test_and_set_cpu()
385 * cpumask_test_and_clear_cpu - atomically test and clear a cpu in a cpumask
386 * @cpu: cpu number (< nr_cpu_ids)
389 * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0
393 static inline int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask) in cpumask_test_and_clear_cpu() argument
395 return test_and_clear_bit(cpumask_check(cpu), cpumask_bits(cpumask)); in cpumask_test_and_clear_cpu()
604 * cpumask_any - pick a "random" cpu from *srcp
612 * cpumask_first_and - return the first cpu from *srcp1 & *srcp2
621 * cpumask_any_and - pick a "random" cpu from *mask1 & *mask2
630 * cpumask_of - the cpumask containing just a given cpu
631 * @cpu: the cpu (<= nr_cpu_ids)
633 #define cpumask_of(cpu) (get_cpu_mask(cpu)) argument
811 #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) argument
812 #define for_each_online_cpu(cpu) for_each_cpu((cpu), cpu_online_mask) argument
813 #define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask) argument
826 set_cpu_possible(unsigned int cpu, bool possible) in set_cpu_possible() argument
829 cpumask_set_cpu(cpu, &__cpu_possible_mask); in set_cpu_possible()
831 cpumask_clear_cpu(cpu, &__cpu_possible_mask); in set_cpu_possible()
835 set_cpu_present(unsigned int cpu, bool present) in set_cpu_present() argument
838 cpumask_set_cpu(cpu, &__cpu_present_mask); in set_cpu_present()
840 cpumask_clear_cpu(cpu, &__cpu_present_mask); in set_cpu_present()
843 void set_cpu_online(unsigned int cpu, bool online);
846 set_cpu_active(unsigned int cpu, bool active) in set_cpu_active() argument
849 cpumask_set_cpu(cpu, &__cpu_active_mask); in set_cpu_active()
851 cpumask_clear_cpu(cpu, &__cpu_active_mask); in set_cpu_active()
875 * Special-case data structure for "single bit set only" constant CPU masks.
884 static inline const struct cpumask *get_cpu_mask(unsigned int cpu) in get_cpu_mask() argument
886 const unsigned long *p = cpu_bit_bitmap[1 + cpu % BITS_PER_LONG]; in get_cpu_mask()
887 p -= cpu / BITS_PER_LONG; in get_cpu_mask()
891 #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) argument