Blame view
include/linux/cpuset.h
5.71 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 |
#ifndef _LINUX_CPUSET_H #define _LINUX_CPUSET_H /* * cpuset interface * * Copyright (C) 2003 BULL SA |
825a46af5 [PATCH] cpuset me... |
7 |
* Copyright (C) 2004-2006 Silicon Graphics, Inc. |
1da177e4c Linux-2.6.12-rc2 |
8 9 10 11 12 13 |
* */ #include <linux/sched.h> #include <linux/cpumask.h> #include <linux/nodemask.h> |
8793d854e Task Control Grou... |
14 |
#include <linux/cgroup.h> |
a1bc5a4ee cpusets: replace ... |
15 |
#include <linux/mm.h> |
1da177e4c Linux-2.6.12-rc2 |
16 17 |
#ifdef CONFIG_CPUSETS |
202f72d5d [PATCH] cpuset: n... |
18 |
extern int number_of_cpusets; /* How many cpusets are defined in system? */ |
1da177e4c Linux-2.6.12-rc2 |
19 20 |
extern int cpuset_init(void); extern void cpuset_init_smp(void); |
3a101d054 sched: adjust whe... |
21 |
extern void cpuset_update_active_cpus(void); |
6af866af3 cpuset: remove re... |
22 |
extern void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask); |
9084bb824 sched: Make selec... |
23 |
extern int cpuset_cpus_allowed_fallback(struct task_struct *p); |
909d75a3b [PATCH] cpuset: i... |
24 |
extern nodemask_t cpuset_mems_allowed(struct task_struct *p); |
9276b1bc9 [PATCH] memory pa... |
25 |
#define cpuset_current_mems_allowed (current->mems_allowed) |
1da177e4c Linux-2.6.12-rc2 |
26 |
void cpuset_init_current_mems_allowed(void); |
19770b326 mm: filter based ... |
27 |
int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask); |
202f72d5d [PATCH] cpuset: n... |
28 |
|
a1bc5a4ee cpusets: replace ... |
29 30 |
extern int __cpuset_node_allowed_softwall(int node, gfp_t gfp_mask); extern int __cpuset_node_allowed_hardwall(int node, gfp_t gfp_mask); |
02a0e53d8 [PATCH] cpuset: r... |
31 |
|
a1bc5a4ee cpusets: replace ... |
32 |
static inline int cpuset_node_allowed_softwall(int node, gfp_t gfp_mask) |
02a0e53d8 [PATCH] cpuset: r... |
33 34 |
{ return number_of_cpusets <= 1 || |
a1bc5a4ee cpusets: replace ... |
35 |
__cpuset_node_allowed_softwall(node, gfp_mask); |
02a0e53d8 [PATCH] cpuset: r... |
36 |
} |
a1bc5a4ee cpusets: replace ... |
37 |
static inline int cpuset_node_allowed_hardwall(int node, gfp_t gfp_mask) |
202f72d5d [PATCH] cpuset: n... |
38 |
{ |
02a0e53d8 [PATCH] cpuset: r... |
39 |
return number_of_cpusets <= 1 || |
a1bc5a4ee cpusets: replace ... |
40 41 42 43 44 45 46 47 48 49 50 |
__cpuset_node_allowed_hardwall(node, gfp_mask); } static inline int cpuset_zone_allowed_softwall(struct zone *z, gfp_t gfp_mask) { return cpuset_node_allowed_softwall(zone_to_nid(z), gfp_mask); } static inline int cpuset_zone_allowed_hardwall(struct zone *z, gfp_t gfp_mask) { return cpuset_node_allowed_hardwall(zone_to_nid(z), gfp_mask); |
202f72d5d [PATCH] cpuset: n... |
51 |
} |
bbe373f2c oom: compare cpus... |
52 53 |
extern int cpuset_mems_allowed_intersects(const struct task_struct *tsk1, const struct task_struct *tsk2); |
3e0d98b9f [PATCH] cpuset: m... |
54 55 56 57 58 59 60 61 |
#define cpuset_memory_pressure_bump() \ do { \ if (cpuset_memory_pressure_enabled) \ __cpuset_memory_pressure_bump(); \ } while (0) extern int cpuset_memory_pressure_enabled; extern void __cpuset_memory_pressure_bump(void); |
540473208 [PATCH] mark stru... |
62 |
extern const struct file_operations proc_cpuset_operations; |
df5f8314c proc: seqfile con... |
63 64 65 |
struct seq_file; extern void cpuset_task_status_allowed(struct seq_file *m, struct task_struct *task); |
1da177e4c Linux-2.6.12-rc2 |
66 |
|
825a46af5 [PATCH] cpuset me... |
67 |
extern int cpuset_mem_spread_node(void); |
6adef3ebe cpusets: new roun... |
68 |
extern int cpuset_slab_spread_node(void); |
825a46af5 [PATCH] cpuset me... |
69 70 71 72 73 74 75 76 77 78 |
static inline int cpuset_do_page_mem_spread(void) { return current->flags & PF_SPREAD_PAGE; } static inline int cpuset_do_slab_mem_spread(void) { return current->flags & PF_SPREAD_SLAB; } |
8793d854e Task Control Grou... |
79 |
extern int current_cpuset_is_being_rebound(void); |
e761b7725 cpu hotplug, sche... |
80 |
extern void rebuild_sched_domains(void); |
75aa19941 oom: print trigge... |
81 |
extern void cpuset_print_task_mems_allowed(struct task_struct *p); |
c0ff7453b cpuset,mm: fix no... |
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
/* * reading current mems_allowed and mempolicy in the fastpath must protected * by get_mems_allowed() */ static inline void get_mems_allowed(void) { current->mems_allowed_change_disable++; /* * ensure that reading mems_allowed and mempolicy happens after the * update of ->mems_allowed_change_disable. * * the write-side task finds ->mems_allowed_change_disable is not 0, * and knows the read-side task is reading mems_allowed or mempolicy, * so it will clear old bits lazily. */ smp_mb(); } static inline void put_mems_allowed(void) { /* * ensure that reading mems_allowed and mempolicy before reducing * mems_allowed_change_disable. * * the write-side task will know that the read-side task is still * reading mems_allowed or mempolicy, don't clears old bits in the * nodemask. */ smp_mb(); --ACCESS_ONCE(current->mems_allowed_change_disable); } |
58568d2a8 cpuset,mm: update... |
114 115 |
static inline void set_mems_allowed(nodemask_t nodemask) { |
c0ff7453b cpuset,mm: fix no... |
116 |
task_lock(current); |
58568d2a8 cpuset,mm: update... |
117 |
current->mems_allowed = nodemask; |
c0ff7453b cpuset,mm: fix no... |
118 |
task_unlock(current); |
58568d2a8 cpuset,mm: update... |
119 |
} |
1da177e4c Linux-2.6.12-rc2 |
120 121 122 123 |
#else /* !CONFIG_CPUSETS */ static inline int cpuset_init(void) { return 0; } static inline void cpuset_init_smp(void) {} |
1da177e4c Linux-2.6.12-rc2 |
124 |
|
3a101d054 sched: adjust whe... |
125 126 127 128 |
static inline void cpuset_update_active_cpus(void) { partition_sched_domains(1, NULL, NULL); } |
6af866af3 cpuset: remove re... |
129 130 |
static inline void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask) |
1da177e4c Linux-2.6.12-rc2 |
131 |
{ |
aa85ea5b8 cpumask: use new ... |
132 |
cpumask_copy(mask, cpu_possible_mask); |
1da177e4c Linux-2.6.12-rc2 |
133 |
} |
9084bb824 sched: Make selec... |
134 135 |
static inline int cpuset_cpus_allowed_fallback(struct task_struct *p) { |
1e1b6c511 cpuset: Fix cpuse... |
136 |
do_set_cpus_allowed(p, cpu_possible_mask); |
9084bb824 sched: Make selec... |
137 138 |
return cpumask_any(cpu_active_mask); } |
909d75a3b [PATCH] cpuset: i... |
139 140 141 142 |
static inline nodemask_t cpuset_mems_allowed(struct task_struct *p) { return node_possible_map; } |
0e1e7c7a7 Memoryless nodes:... |
143 |
#define cpuset_current_mems_allowed (node_states[N_HIGH_MEMORY]) |
1da177e4c Linux-2.6.12-rc2 |
144 |
static inline void cpuset_init_current_mems_allowed(void) {} |
1da177e4c Linux-2.6.12-rc2 |
145 |
|
19770b326 mm: filter based ... |
146 |
static inline int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask) |
1da177e4c Linux-2.6.12-rc2 |
147 148 149 |
{ return 1; } |
a1bc5a4ee cpusets: replace ... |
150 151 152 153 154 155 156 157 158 |
static inline int cpuset_node_allowed_softwall(int node, gfp_t gfp_mask) { return 1; } static inline int cpuset_node_allowed_hardwall(int node, gfp_t gfp_mask) { return 1; } |
02a0e53d8 [PATCH] cpuset: r... |
159 160 161 162 163 164 |
static inline int cpuset_zone_allowed_softwall(struct zone *z, gfp_t gfp_mask) { return 1; } static inline int cpuset_zone_allowed_hardwall(struct zone *z, gfp_t gfp_mask) |
1da177e4c Linux-2.6.12-rc2 |
165 166 167 |
{ return 1; } |
bbe373f2c oom: compare cpus... |
168 169 |
static inline int cpuset_mems_allowed_intersects(const struct task_struct *tsk1, const struct task_struct *tsk2) |
ef08e3b49 [PATCH] cpusets: ... |
170 171 172 |
{ return 1; } |
3e0d98b9f [PATCH] cpuset: m... |
173 |
static inline void cpuset_memory_pressure_bump(void) {} |
df5f8314c proc: seqfile con... |
174 175 |
static inline void cpuset_task_status_allowed(struct seq_file *m, struct task_struct *task) |
1da177e4c Linux-2.6.12-rc2 |
176 |
{ |
1da177e4c Linux-2.6.12-rc2 |
177 |
} |
825a46af5 [PATCH] cpuset me... |
178 179 180 181 |
static inline int cpuset_mem_spread_node(void) { return 0; } |
6adef3ebe cpusets: new roun... |
182 183 184 185 |
static inline int cpuset_slab_spread_node(void) { return 0; } |
825a46af5 [PATCH] cpuset me... |
186 187 188 189 190 191 192 193 194 |
static inline int cpuset_do_page_mem_spread(void) { return 0; } static inline int cpuset_do_slab_mem_spread(void) { return 0; } |
8793d854e Task Control Grou... |
195 196 197 198 |
static inline int current_cpuset_is_being_rebound(void) { return 0; } |
e761b7725 cpu hotplug, sche... |
199 200 |
static inline void rebuild_sched_domains(void) { |
dfb512ec4 sched: arch_reini... |
201 |
partition_sched_domains(1, NULL, NULL); |
e761b7725 cpu hotplug, sche... |
202 |
} |
75aa19941 oom: print trigge... |
203 204 205 |
static inline void cpuset_print_task_mems_allowed(struct task_struct *p) { } |
58568d2a8 cpuset,mm: update... |
206 207 208 |
static inline void set_mems_allowed(nodemask_t nodemask) { } |
c0ff7453b cpuset,mm: fix no... |
209 210 211 212 213 214 215 |
static inline void get_mems_allowed(void) { } static inline void put_mems_allowed(void) { } |
1da177e4c Linux-2.6.12-rc2 |
216 217 218 |
#endif /* !CONFIG_CPUSETS */ #endif /* _LINUX_CPUSET_H */ |