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()
197 #define for_each_cpu(cpu, mask) \ argument
198 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
199 #define for_each_cpu_not(cpu, mask) \ argument
200 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
201 #define for_each_cpu_wrap(cpu, mask, start) \ argument
202 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask, (void)(start))
203 #define for_each_cpu_and(cpu, mask1, mask2) \ argument
204 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask1, (void)mask2)
207 * cpumask_first - get the first cpu in a cpumask
218 * cpumask_last - get the last CPU in a cpumask
231 * cpumask_next_zero - get the next unset cpu in a cpumask
232 * @n: the cpu prior to the place to search (ie. return will be > @n)
246 int cpumask_any_but(const struct cpumask *mask, unsigned int cpu);
250 * for_each_cpu - iterate over every cpu in a mask
251 * @cpu: the (optionally unsigned) integer iterator
254 * After the loop, cpu is >= nr_cpu_ids.
256 #define for_each_cpu(cpu, mask) \ argument
257 for ((cpu) = -1; \
258 (cpu) = cpumask_next((cpu), (mask)), \
259 (cpu) < nr_cpu_ids;)
262 * for_each_cpu_not - iterate over every cpu in a complemented mask
263 * @cpu: the (optionally unsigned) integer iterator
266 * After the loop, cpu is >= nr_cpu_ids.
268 #define for_each_cpu_not(cpu, mask) \ argument
269 for ((cpu) = -1; \
270 (cpu) = cpumask_next_zero((cpu), (mask)), \
271 (cpu) < nr_cpu_ids;)
276 * for_each_cpu_wrap - iterate over every cpu in a mask, starting at a specified location
277 * @cpu: the (optionally unsigned) integer iterator
283 * After the loop, cpu is >= nr_cpu_ids.
285 #define for_each_cpu_wrap(cpu, mask, start) \ argument
286 for ((cpu) = cpumask_next_wrap((start)-1, (mask), (start), false); \
287 (cpu) < nr_cpumask_bits; \
288 (cpu) = cpumask_next_wrap((cpu), (mask), (start), true))
291 * for_each_cpu_and - iterate over every cpu in both masks
292 * @cpu: the (optionally unsigned) integer iterator
296 * This saves a temporary CPU mask in many places. It is equivalent to:
299 * for_each_cpu(cpu, &tmp)
302 * After the loop, cpu is >= nr_cpu_ids.
304 #define for_each_cpu_and(cpu, mask1, mask2) \ argument
305 for ((cpu) = -1; \
306 (cpu) = cpumask_next_and((cpu), (mask1), (mask2)), \
307 (cpu) < nr_cpu_ids;)
321 * cpumask_set_cpu - set a cpu in a cpumask
322 * @cpu: cpu number (< nr_cpu_ids)
325 static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) in cpumask_set_cpu() argument
327 set_bit(cpumask_check(cpu), cpumask_bits(dstp)); in cpumask_set_cpu()
330 static inline void __cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) in __cpumask_set_cpu() argument
332 __set_bit(cpumask_check(cpu), cpumask_bits(dstp)); in __cpumask_set_cpu()
337 * cpumask_clear_cpu - clear a cpu in a cpumask
338 * @cpu: cpu number (< nr_cpu_ids)
341 static inline void cpumask_clear_cpu(int cpu, struct cpumask *dstp) in cpumask_clear_cpu() argument
343 clear_bit(cpumask_check(cpu), cpumask_bits(dstp)); in cpumask_clear_cpu()
346 static inline void __cpumask_clear_cpu(int cpu, struct cpumask *dstp) in __cpumask_clear_cpu() argument
348 __clear_bit(cpumask_check(cpu), cpumask_bits(dstp)); in __cpumask_clear_cpu()
352 * cpumask_test_cpu - test for a cpu in a cpumask
353 * @cpu: cpu number (< nr_cpu_ids)
356 * Returns 1 if @cpu is set in @cpumask, else returns 0
358 static inline int cpumask_test_cpu(int cpu, const struct cpumask *cpumask) in cpumask_test_cpu() argument
360 return test_bit(cpumask_check(cpu), cpumask_bits((cpumask))); in cpumask_test_cpu()
364 * cpumask_test_and_set_cpu - atomically test and set a cpu in a cpumask
365 * @cpu: cpu number (< nr_cpu_ids)
368 * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0
372 static inline int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask) in cpumask_test_and_set_cpu() argument
374 return test_and_set_bit(cpumask_check(cpu), cpumask_bits(cpumask)); in cpumask_test_and_set_cpu()
378 * cpumask_test_and_clear_cpu - atomically test and clear a cpu in a cpumask
379 * @cpu: cpu number (< nr_cpu_ids)
382 * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0
386 static inline int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask) in cpumask_test_and_clear_cpu() argument
388 return test_and_clear_bit(cpumask_check(cpu), cpumask_bits(cpumask)); in cpumask_test_and_clear_cpu()
597 * cpumask_any - pick a "random" cpu from *srcp
605 * cpumask_first_and - return the first cpu from *srcp1 & *srcp2
614 * cpumask_any_and - pick a "random" cpu from *mask1 & *mask2
623 * cpumask_of - the cpumask containing just a given cpu
624 * @cpu: the cpu (<= nr_cpu_ids)
626 #define cpumask_of(cpu) (get_cpu_mask(cpu)) argument
806 #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) argument
807 #define for_each_online_cpu(cpu) for_each_cpu((cpu), cpu_online_mask) argument
808 #define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask) argument
821 set_cpu_possible(unsigned int cpu, bool possible) in set_cpu_possible() argument
824 cpumask_set_cpu(cpu, &__cpu_possible_mask); in set_cpu_possible()
826 cpumask_clear_cpu(cpu, &__cpu_possible_mask); in set_cpu_possible()
830 set_cpu_present(unsigned int cpu, bool present) in set_cpu_present() argument
833 cpumask_set_cpu(cpu, &__cpu_present_mask); in set_cpu_present()
835 cpumask_clear_cpu(cpu, &__cpu_present_mask); in set_cpu_present()
838 void set_cpu_online(unsigned int cpu, bool online);
841 set_cpu_active(unsigned int cpu, bool active) in set_cpu_active() argument
844 cpumask_set_cpu(cpu, &__cpu_active_mask); in set_cpu_active()
846 cpumask_clear_cpu(cpu, &__cpu_active_mask); in set_cpu_active()
870 * Special-case data structure for "single bit set only" constant CPU masks.
879 static inline const struct cpumask *get_cpu_mask(unsigned int cpu) in get_cpu_mask() argument
881 const unsigned long *p = cpu_bit_bitmap[1 + cpu % BITS_PER_LONG]; in get_cpu_mask()
882 p -= cpu / BITS_PER_LONG; in get_cpu_mask()
886 #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) argument