blob: 37d2dd7ca3e926cf7bb9d9712b136ce7dda47522 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _LINUX_CPUSET_H
2#define _LINUX_CPUSET_H
3/*
4 * cpuset interface
5 *
6 * Copyright (C) 2003 BULL SA
7 * Copyright (C) 2004 Silicon Graphics, Inc.
8 *
9 */
10
11#include <linux/sched.h>
12#include <linux/cpumask.h>
13#include <linux/nodemask.h>
14
15#ifdef CONFIG_CPUSETS
16
17extern int cpuset_init(void);
18extern void cpuset_init_smp(void);
19extern void cpuset_fork(struct task_struct *p);
20extern void cpuset_exit(struct task_struct *p);
Paul Jackson909d75a2006-01-08 01:01:55 -080021extern cpumask_t cpuset_cpus_allowed(struct task_struct *p);
22extern nodemask_t cpuset_mems_allowed(struct task_struct *p);
Linus Torvalds1da177e2005-04-16 15:20:36 -070023void cpuset_init_current_mems_allowed(void);
Paul Jacksoncf2a473c2006-01-08 01:01:54 -080024void cpuset_update_task_memory_state(void);
Paul Jackson59665142006-01-08 01:01:47 -080025#define cpuset_nodes_subset_current_mems_allowed(nodes) \
26 nodes_subset((nodes), current->mems_allowed)
Linus Torvalds1da177e2005-04-16 15:20:36 -070027int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl);
Al Virodd0fc662005-10-07 07:46:04 +010028extern int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask);
Paul Jacksonef08e3b2005-09-06 15:18:13 -070029extern int cpuset_excl_nodes_overlap(const struct task_struct *p);
Paul Jackson3e0d98b2006-01-08 01:01:49 -080030
31#define cpuset_memory_pressure_bump() \
32 do { \
33 if (cpuset_memory_pressure_enabled) \
34 __cpuset_memory_pressure_bump(); \
35 } while (0)
36extern int cpuset_memory_pressure_enabled;
37extern void __cpuset_memory_pressure_bump(void);
38
Linus Torvalds1da177e2005-04-16 15:20:36 -070039extern struct file_operations proc_cpuset_operations;
40extern char *cpuset_task_status_allowed(struct task_struct *task, char *buffer);
41
42#else /* !CONFIG_CPUSETS */
43
44static inline int cpuset_init(void) { return 0; }
45static inline void cpuset_init_smp(void) {}
46static inline void cpuset_fork(struct task_struct *p) {}
47static inline void cpuset_exit(struct task_struct *p) {}
48
49static inline cpumask_t cpuset_cpus_allowed(struct task_struct *p)
50{
51 return cpu_possible_map;
52}
53
Paul Jackson909d75a2006-01-08 01:01:55 -080054static inline nodemask_t cpuset_mems_allowed(struct task_struct *p)
55{
56 return node_possible_map;
57}
58
Linus Torvalds1da177e2005-04-16 15:20:36 -070059static inline void cpuset_init_current_mems_allowed(void) {}
Paul Jacksoncf2a473c2006-01-08 01:01:54 -080060static inline void cpuset_update_task_memory_state(void) {}
Paul Jackson59665142006-01-08 01:01:47 -080061#define cpuset_nodes_subset_current_mems_allowed(nodes) (1)
Linus Torvalds1da177e2005-04-16 15:20:36 -070062
63static inline int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl)
64{
65 return 1;
66}
67
Al Virodd0fc662005-10-07 07:46:04 +010068static inline int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask)
Linus Torvalds1da177e2005-04-16 15:20:36 -070069{
70 return 1;
71}
72
Paul Jacksonef08e3b2005-09-06 15:18:13 -070073static inline int cpuset_excl_nodes_overlap(const struct task_struct *p)
74{
75 return 1;
76}
77
Paul Jackson3e0d98b2006-01-08 01:01:49 -080078static inline void cpuset_memory_pressure_bump(void) {}
79
Linus Torvalds1da177e2005-04-16 15:20:36 -070080static inline char *cpuset_task_status_allowed(struct task_struct *task,
81 char *buffer)
82{
83 return buffer;
84}
85
86#endif /* !CONFIG_CPUSETS */
87
88#endif /* _LINUX_CPUSET_H */