1#ifndef __LINUX_CPUMASK_H
2#define __LINUX_CPUMASK_H
3
4
5
6
7
8
9#include <linux/kernel.h>
10#include <linux/threads.h>
11#include <linux/bitmap.h>
12#include <linux/bug.h>
13
14typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;
15
16
17
18
19
20
21
22
23#define cpumask_bits(maskp) ((maskp)->bits)
24
25
26
27
28
29
30
31#define cpumask_pr_args(maskp) nr_cpu_ids, cpumask_bits(maskp)
32
33#if NR_CPUS == 1
34#define nr_cpu_ids 1
35#else
36extern int nr_cpu_ids;
37#endif
38
39#ifdef CONFIG_CPUMASK_OFFSTACK
40
41
42#define nr_cpumask_bits nr_cpu_ids
43#else
44#define nr_cpumask_bits NR_CPUS
45#endif
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87extern const struct cpumask *const cpu_possible_mask;
88extern const struct cpumask *const cpu_online_mask;
89extern const struct cpumask *const cpu_present_mask;
90extern const struct cpumask *const cpu_active_mask;
91
92#if NR_CPUS > 1
93#define num_online_cpus() cpumask_weight(cpu_online_mask)
94#define num_possible_cpus() cpumask_weight(cpu_possible_mask)
95#define num_present_cpus() cpumask_weight(cpu_present_mask)
96#define num_active_cpus() cpumask_weight(cpu_active_mask)
97#define cpu_online(cpu) cpumask_test_cpu((cpu), cpu_online_mask)
98#define cpu_possible(cpu) cpumask_test_cpu((cpu), cpu_possible_mask)
99#define cpu_present(cpu) cpumask_test_cpu((cpu), cpu_present_mask)
100#define cpu_active(cpu) cpumask_test_cpu((cpu), cpu_active_mask)
101#else
102#define num_online_cpus() 1U
103#define num_possible_cpus() 1U
104#define num_present_cpus() 1U
105#define num_active_cpus() 1U
106#define cpu_online(cpu) ((cpu) == 0)
107#define cpu_possible(cpu) ((cpu) == 0)
108#define cpu_present(cpu) ((cpu) == 0)
109#define cpu_active(cpu) ((cpu) == 0)
110#endif
111
112
113static inline unsigned int cpumask_check(unsigned int cpu)
114{
115#ifdef CONFIG_DEBUG_PER_CPU_MAPS
116 WARN_ON_ONCE(cpu >= nr_cpumask_bits);
117#endif
118 return cpu;
119}
120
121#if NR_CPUS == 1
122
123static inline unsigned int cpumask_first(const struct cpumask *srcp)
124{
125 return 0;
126}
127
128
129static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
130{
131 return n+1;
132}
133
134static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
135{
136 return n+1;
137}
138
139static inline unsigned int cpumask_next_and(int n,
140 const struct cpumask *srcp,
141 const struct cpumask *andp)
142{
143 return n+1;
144}
145
146
147static inline unsigned int cpumask_any_but(const struct cpumask *mask,
148 unsigned int cpu)
149{
150 return 1;
151}
152
153static inline int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp)
154{
155 set_bit(0, cpumask_bits(dstp));
156
157 return 0;
158}
159
160#define for_each_cpu(cpu, mask) \
161 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
162#define for_each_cpu_not(cpu, mask) \
163 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
164#define for_each_cpu_and(cpu, mask, and) \
165 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask, (void)and)
166#else
167
168
169
170
171
172
173static inline unsigned int cpumask_first(const struct cpumask *srcp)
174{
175 return find_first_bit(cpumask_bits(srcp), nr_cpumask_bits);
176}
177
178
179
180
181
182
183
184
185static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
186{
187
188 if (n != -1)
189 cpumask_check(n);
190 return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
191}
192
193
194
195
196
197
198
199
200static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
201{
202
203 if (n != -1)
204 cpumask_check(n);
205 return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
206}
207
208int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *);
209int cpumask_any_but(const struct cpumask *mask, unsigned int cpu);
210int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp);
211
212
213
214
215
216
217
218
219#define for_each_cpu(cpu, mask) \
220 for ((cpu) = -1; \
221 (cpu) = cpumask_next((cpu), (mask)), \
222 (cpu) < nr_cpu_ids;)
223
224
225
226
227
228
229
230
231#define for_each_cpu_not(cpu, mask) \
232 for ((cpu) = -1; \
233 (cpu) = cpumask_next_zero((cpu), (mask)), \
234 (cpu) < nr_cpu_ids;)
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250#define for_each_cpu_and(cpu, mask, and) \
251 for ((cpu) = -1; \
252 (cpu) = cpumask_next_and((cpu), (mask), (and)), \
253 (cpu) < nr_cpu_ids;)
254#endif
255
256#define CPU_BITS_NONE \
257{ \
258 [0 ... BITS_TO_LONGS(NR_CPUS)-1] = 0UL \
259}
260
261#define CPU_BITS_CPU0 \
262{ \
263 [0] = 1UL \
264}
265
266
267
268
269
270
271static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)
272{
273 set_bit(cpumask_check(cpu), cpumask_bits(dstp));
274}
275
276
277
278
279
280
281static inline void cpumask_clear_cpu(int cpu, struct cpumask *dstp)
282{
283 clear_bit(cpumask_check(cpu), cpumask_bits(dstp));
284}
285
286
287
288
289
290
291
292
293
294
295#define cpumask_test_cpu(cpu, cpumask) \
296 test_bit(cpumask_check(cpu), cpumask_bits((cpumask)))
297
298
299
300
301
302
303
304
305
306
307static inline int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask)
308{
309 return test_and_set_bit(cpumask_check(cpu), cpumask_bits(cpumask));
310}
311
312
313
314
315
316
317
318
319
320
321static inline int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask)
322{
323 return test_and_clear_bit(cpumask_check(cpu), cpumask_bits(cpumask));
324}
325
326
327
328
329
330static inline void cpumask_setall(struct cpumask *dstp)
331{
332 bitmap_fill(cpumask_bits(dstp), nr_cpumask_bits);
333}
334
335
336
337
338
339static inline void cpumask_clear(struct cpumask *dstp)
340{
341 bitmap_zero(cpumask_bits(dstp), nr_cpumask_bits);
342}
343
344
345
346
347
348
349
350
351
352static inline int cpumask_and(struct cpumask *dstp,
353 const struct cpumask *src1p,
354 const struct cpumask *src2p)
355{
356 return bitmap_and(cpumask_bits(dstp), cpumask_bits(src1p),
357 cpumask_bits(src2p), nr_cpumask_bits);
358}
359
360
361
362
363
364
365
366static inline void cpumask_or(struct cpumask *dstp, const struct cpumask *src1p,
367 const struct cpumask *src2p)
368{
369 bitmap_or(cpumask_bits(dstp), cpumask_bits(src1p),
370 cpumask_bits(src2p), nr_cpumask_bits);
371}
372
373
374
375
376
377
378
379static inline void cpumask_xor(struct cpumask *dstp,
380 const struct cpumask *src1p,
381 const struct cpumask *src2p)
382{
383 bitmap_xor(cpumask_bits(dstp), cpumask_bits(src1p),
384 cpumask_bits(src2p), nr_cpumask_bits);
385}
386
387
388
389
390
391
392
393
394
395static inline int cpumask_andnot(struct cpumask *dstp,
396 const struct cpumask *src1p,
397 const struct cpumask *src2p)
398{
399 return bitmap_andnot(cpumask_bits(dstp), cpumask_bits(src1p),
400 cpumask_bits(src2p), nr_cpumask_bits);
401}
402
403
404
405
406
407
408static inline void cpumask_complement(struct cpumask *dstp,
409 const struct cpumask *srcp)
410{
411 bitmap_complement(cpumask_bits(dstp), cpumask_bits(srcp),
412 nr_cpumask_bits);
413}
414
415
416
417
418
419
420static inline bool cpumask_equal(const struct cpumask *src1p,
421 const struct cpumask *src2p)
422{
423 return bitmap_equal(cpumask_bits(src1p), cpumask_bits(src2p),
424 nr_cpumask_bits);
425}
426
427
428
429
430
431
432static inline bool cpumask_intersects(const struct cpumask *src1p,
433 const struct cpumask *src2p)
434{
435 return bitmap_intersects(cpumask_bits(src1p), cpumask_bits(src2p),
436 nr_cpumask_bits);
437}
438
439
440
441
442
443
444
445
446static inline int cpumask_subset(const struct cpumask *src1p,
447 const struct cpumask *src2p)
448{
449 return bitmap_subset(cpumask_bits(src1p), cpumask_bits(src2p),
450 nr_cpumask_bits);
451}
452
453
454
455
456
457static inline bool cpumask_empty(const struct cpumask *srcp)
458{
459 return bitmap_empty(cpumask_bits(srcp), nr_cpumask_bits);
460}
461
462
463
464
465
466static inline bool cpumask_full(const struct cpumask *srcp)
467{
468 return bitmap_full(cpumask_bits(srcp), nr_cpumask_bits);
469}
470
471
472
473
474
475static inline unsigned int cpumask_weight(const struct cpumask *srcp)
476{
477 return bitmap_weight(cpumask_bits(srcp), nr_cpumask_bits);
478}
479
480
481
482
483
484
485
486static inline void cpumask_shift_right(struct cpumask *dstp,
487 const struct cpumask *srcp, int n)
488{
489 bitmap_shift_right(cpumask_bits(dstp), cpumask_bits(srcp), n,
490 nr_cpumask_bits);
491}
492
493
494
495
496
497
498
499static inline void cpumask_shift_left(struct cpumask *dstp,
500 const struct cpumask *srcp, int n)
501{
502 bitmap_shift_left(cpumask_bits(dstp), cpumask_bits(srcp), n,
503 nr_cpumask_bits);
504}
505
506
507
508
509
510
511static inline void cpumask_copy(struct cpumask *dstp,
512 const struct cpumask *srcp)
513{
514 bitmap_copy(cpumask_bits(dstp), cpumask_bits(srcp), nr_cpumask_bits);
515}
516
517
518
519
520
521
522
523#define cpumask_any(srcp) cpumask_first(srcp)
524
525
526
527
528
529
530
531
532#define cpumask_first_and(src1p, src2p) cpumask_next_and(-1, (src1p), (src2p))
533
534
535
536
537
538
539
540
541#define cpumask_any_and(mask1, mask2) cpumask_first_and((mask1), (mask2))
542
543
544
545
546
547#define cpumask_of(cpu) (get_cpu_mask(cpu))
548
549
550
551
552
553
554
555
556
557static inline int cpumask_parse_user(const char __user *buf, int len,
558 struct cpumask *dstp)
559{
560 return bitmap_parse_user(buf, len, cpumask_bits(dstp), nr_cpu_ids);
561}
562
563
564
565
566
567
568
569
570
571static inline int cpumask_parselist_user(const char __user *buf, int len,
572 struct cpumask *dstp)
573{
574 return bitmap_parselist_user(buf, len, cpumask_bits(dstp),
575 nr_cpu_ids);
576}
577
578
579
580
581
582
583
584
585static inline int cpumask_parse(const char *buf, struct cpumask *dstp)
586{
587 char *nl = strchr(buf, '\n');
588 unsigned int len = nl ? (unsigned int)(nl - buf) : strlen(buf);
589
590 return bitmap_parse(buf, len, cpumask_bits(dstp), nr_cpu_ids);
591}
592
593
594
595
596
597
598
599
600static inline int cpulist_parse(const char *buf, struct cpumask *dstp)
601{
602 return bitmap_parselist(buf, cpumask_bits(dstp), nr_cpu_ids);
603}
604
605
606
607
608
609
610static inline size_t cpumask_size(void)
611{
612
613
614 return BITS_TO_LONGS(NR_CPUS) * sizeof(long);
615}
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654#ifdef CONFIG_CPUMASK_OFFSTACK
655typedef struct cpumask *cpumask_var_t;
656
657#define this_cpu_cpumask_var_ptr(x) this_cpu_read(x)
658
659bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node);
660bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
661bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node);
662bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
663void alloc_bootmem_cpumask_var(cpumask_var_t *mask);
664void free_cpumask_var(cpumask_var_t mask);
665void free_bootmem_cpumask_var(cpumask_var_t mask);
666
667#else
668typedef struct cpumask cpumask_var_t[1];
669
670#define this_cpu_cpumask_var_ptr(x) this_cpu_ptr(x)
671
672static inline bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
673{
674 return true;
675}
676
677static inline bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags,
678 int node)
679{
680 return true;
681}
682
683static inline bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
684{
685 cpumask_clear(*mask);
686 return true;
687}
688
689static inline bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags,
690 int node)
691{
692 cpumask_clear(*mask);
693 return true;
694}
695
696static inline void alloc_bootmem_cpumask_var(cpumask_var_t *mask)
697{
698}
699
700static inline void free_cpumask_var(cpumask_var_t mask)
701{
702}
703
704static inline void free_bootmem_cpumask_var(cpumask_var_t mask)
705{
706}
707#endif
708
709
710
711extern const DECLARE_BITMAP(cpu_all_bits, NR_CPUS);
712#define cpu_all_mask to_cpumask(cpu_all_bits)
713
714
715#define cpu_none_mask to_cpumask(cpu_bit_bitmap[0])
716
717#define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask)
718#define for_each_online_cpu(cpu) for_each_cpu((cpu), cpu_online_mask)
719#define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask)
720
721
722void set_cpu_possible(unsigned int cpu, bool possible);
723void set_cpu_present(unsigned int cpu, bool present);
724void set_cpu_online(unsigned int cpu, bool online);
725void set_cpu_active(unsigned int cpu, bool active);
726void init_cpu_present(const struct cpumask *src);
727void init_cpu_possible(const struct cpumask *src);
728void init_cpu_online(const struct cpumask *src);
729
730
731
732
733
734
735
736
737
738
739
740#define to_cpumask(bitmap) \
741 ((struct cpumask *)(1 ? (bitmap) \
742 : (void *)sizeof(__check_is_bitmap(bitmap))))
743
744static inline int __check_is_bitmap(const unsigned long *bitmap)
745{
746 return 1;
747}
748
749
750
751
752
753
754
755
756extern const unsigned long
757 cpu_bit_bitmap[BITS_PER_LONG+1][BITS_TO_LONGS(NR_CPUS)];
758
759static inline const struct cpumask *get_cpu_mask(unsigned int cpu)
760{
761 const unsigned long *p = cpu_bit_bitmap[1 + cpu % BITS_PER_LONG];
762 p -= cpu / BITS_PER_LONG;
763 return to_cpumask(p);
764}
765
766#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))
767
768#if NR_CPUS <= BITS_PER_LONG
769#define CPU_BITS_ALL \
770{ \
771 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \
772}
773
774#else
775
776#define CPU_BITS_ALL \
777{ \
778 [0 ... BITS_TO_LONGS(NR_CPUS)-2] = ~0UL, \
779 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \
780}
781#endif
782
783
784
785
786
787
788
789
790
791
792
793static inline ssize_t
794cpumap_print_to_pagebuf(bool list, char *buf, const struct cpumask *mask)
795{
796 return bitmap_print_to_pagebuf(list, buf, cpumask_bits(mask),
797 nr_cpu_ids);
798}
799
800
801
802
803
804
805#ifndef CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS
806#define cpumask_of_cpu(cpu) (*get_cpu_mask(cpu))
807
808#define CPU_MASK_LAST_WORD BITMAP_LAST_WORD_MASK(NR_CPUS)
809
810#if NR_CPUS <= BITS_PER_LONG
811
812#define CPU_MASK_ALL \
813(cpumask_t) { { \
814 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \
815} }
816
817#else
818
819#define CPU_MASK_ALL \
820(cpumask_t) { { \
821 [0 ... BITS_TO_LONGS(NR_CPUS)-2] = ~0UL, \
822 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \
823} }
824
825#endif
826
827#define CPU_MASK_NONE \
828(cpumask_t) { { \
829 [0 ... BITS_TO_LONGS(NR_CPUS)-1] = 0UL \
830} }
831
832#define CPU_MASK_CPU0 \
833(cpumask_t) { { \
834 [0] = 1UL \
835} }
836
837#if NR_CPUS == 1
838#define first_cpu(src) ({ (void)(src); 0; })
839#define next_cpu(n, src) ({ (void)(src); 1; })
840#define any_online_cpu(mask) 0
841#define for_each_cpu_mask(cpu, mask) \
842 for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
843#else
844int __first_cpu(const cpumask_t *srcp);
845int __next_cpu(int n, const cpumask_t *srcp);
846
847#define first_cpu(src) __first_cpu(&(src))
848#define next_cpu(n, src) __next_cpu((n), &(src))
849#define any_online_cpu(mask) cpumask_any_and(&mask, cpu_online_mask)
850#define for_each_cpu_mask(cpu, mask) \
851 for ((cpu) = -1; \
852 (cpu) = next_cpu((cpu), (mask)), \
853 (cpu) < NR_CPUS; )
854#endif
855
856#if NR_CPUS <= 64
857
858#define for_each_cpu_mask_nr(cpu, mask) for_each_cpu_mask(cpu, mask)
859
860#else
861
862int __next_cpu_nr(int n, const cpumask_t *srcp);
863#define for_each_cpu_mask_nr(cpu, mask) \
864 for ((cpu) = -1; \
865 (cpu) = __next_cpu_nr((cpu), &(mask)), \
866 (cpu) < nr_cpu_ids; )
867
868#endif
869
870#define cpus_addr(src) ((src).bits)
871
872#define cpu_set(cpu, dst) __cpu_set((cpu), &(dst))
873static inline void __cpu_set(int cpu, volatile cpumask_t *dstp)
874{
875 set_bit(cpu, dstp->bits);
876}
877
878#define cpu_clear(cpu, dst) __cpu_clear((cpu), &(dst))
879static inline void __cpu_clear(int cpu, volatile cpumask_t *dstp)
880{
881 clear_bit(cpu, dstp->bits);
882}
883
884#define cpus_setall(dst) __cpus_setall(&(dst), NR_CPUS)
885static inline void __cpus_setall(cpumask_t *dstp, unsigned int nbits)
886{
887 bitmap_fill(dstp->bits, nbits);
888}
889
890#define cpus_clear(dst) __cpus_clear(&(dst), NR_CPUS)
891static inline void __cpus_clear(cpumask_t *dstp, unsigned int nbits)
892{
893 bitmap_zero(dstp->bits, nbits);
894}
895
896
897#define cpu_isset(cpu, cpumask) test_bit((cpu), (cpumask).bits)
898
899#define cpu_test_and_set(cpu, cpumask) __cpu_test_and_set((cpu), &(cpumask))
900static inline int __cpu_test_and_set(int cpu, cpumask_t *addr)
901{
902 return test_and_set_bit(cpu, addr->bits);
903}
904
905#define cpus_and(dst, src1, src2) __cpus_and(&(dst), &(src1), &(src2), NR_CPUS)
906static inline int __cpus_and(cpumask_t *dstp, const cpumask_t *src1p,
907 const cpumask_t *src2p, unsigned int nbits)
908{
909 return bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits);
910}
911
912#define cpus_or(dst, src1, src2) __cpus_or(&(dst), &(src1), &(src2), NR_CPUS)
913static inline void __cpus_or(cpumask_t *dstp, const cpumask_t *src1p,
914 const cpumask_t *src2p, unsigned int nbits)
915{
916 bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits);
917}
918
919#define cpus_xor(dst, src1, src2) __cpus_xor(&(dst), &(src1), &(src2), NR_CPUS)
920static inline void __cpus_xor(cpumask_t *dstp, const cpumask_t *src1p,
921 const cpumask_t *src2p, unsigned int nbits)
922{
923 bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits);
924}
925
926#define cpus_andnot(dst, src1, src2) \
927 __cpus_andnot(&(dst), &(src1), &(src2), NR_CPUS)
928static inline int __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p,
929 const cpumask_t *src2p, unsigned int nbits)
930{
931 return bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits);
932}
933
934#define cpus_equal(src1, src2) __cpus_equal(&(src1), &(src2), NR_CPUS)
935static inline int __cpus_equal(const cpumask_t *src1p,
936 const cpumask_t *src2p, unsigned int nbits)
937{
938 return bitmap_equal(src1p->bits, src2p->bits, nbits);
939}
940
941#define cpus_intersects(src1, src2) __cpus_intersects(&(src1), &(src2), NR_CPUS)
942static inline int __cpus_intersects(const cpumask_t *src1p,
943 const cpumask_t *src2p, unsigned int nbits)
944{
945 return bitmap_intersects(src1p->bits, src2p->bits, nbits);
946}
947
948#define cpus_subset(src1, src2) __cpus_subset(&(src1), &(src2), NR_CPUS)
949static inline int __cpus_subset(const cpumask_t *src1p,
950 const cpumask_t *src2p, unsigned int nbits)
951{
952 return bitmap_subset(src1p->bits, src2p->bits, nbits);
953}
954
955#define cpus_empty(src) __cpus_empty(&(src), NR_CPUS)
956static inline int __cpus_empty(const cpumask_t *srcp, unsigned int nbits)
957{
958 return bitmap_empty(srcp->bits, nbits);
959}
960
961#define cpus_weight(cpumask) __cpus_weight(&(cpumask), NR_CPUS)
962static inline int __cpus_weight(const cpumask_t *srcp, unsigned int nbits)
963{
964 return bitmap_weight(srcp->bits, nbits);
965}
966
967#define cpus_shift_left(dst, src, n) \
968 __cpus_shift_left(&(dst), &(src), (n), NR_CPUS)
969static inline void __cpus_shift_left(cpumask_t *dstp,
970 const cpumask_t *srcp, int n, int nbits)
971{
972 bitmap_shift_left(dstp->bits, srcp->bits, n, nbits);
973}
974#endif
975
976#endif
977