ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / linux / cpumask.h
1 #ifndef __LINUX_CPUMASK_H
2 #define __LINUX_CPUMASK_H
3
4 #include <linux/threads.h>
5 #include <linux/bitmap.h>
6 #include <asm/cpumask.h>
7 #include <asm/bug.h>
8
9 #ifdef CONFIG_SMP
10
11 extern cpumask_t cpu_online_map;
12 extern cpumask_t cpu_possible_map;
13
14 #define num_online_cpus()               cpus_weight(cpu_online_map)
15 #define num_possible_cpus()             cpus_weight(cpu_possible_map)
16 #define cpu_online(cpu)                 cpu_isset(cpu, cpu_online_map)
17 #define cpu_possible(cpu)               cpu_isset(cpu, cpu_possible_map)
18
19 #define for_each_cpu_mask(cpu, mask)                                    \
20         for (cpu = first_cpu_const(mk_cpumask_const(mask));             \
21                 cpu < NR_CPUS;                                          \
22                 cpu = next_cpu_const(cpu, mk_cpumask_const(mask)))
23
24 #define for_each_cpu(cpu) for_each_cpu_mask(cpu, cpu_possible_map)
25 #define for_each_online_cpu(cpu) for_each_cpu_mask(cpu, cpu_online_map)
26 #else
27 #define cpu_online_map                  cpumask_of_cpu(0)
28 #define cpu_possible_map                cpumask_of_cpu(0)
29 #define num_online_cpus()               1
30 #define num_possible_cpus()             1
31 #define cpu_online(cpu)                 ({ BUG_ON((cpu) != 0); 1; })
32 #define cpu_possible(cpu)               ({ BUG_ON((cpu) != 0); 1; })
33
34 #define for_each_cpu(cpu) for (cpu = 0; cpu < 1; cpu++)
35 #define for_each_online_cpu(cpu) for (cpu = 0; cpu < 1; cpu++)
36 #endif
37
38 #define cpumask_scnprintf(buf, buflen, map)                             \
39         bitmap_scnprintf(buf, buflen, cpus_addr(map), NR_CPUS)
40
41 #define cpumask_parse(buf, buflen, map)                                 \
42         bitmap_parse(buf, buflen, cpus_addr(map), NR_CPUS)
43
44 #endif /* __LINUX_CPUMASK_H */