home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / cpuset.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.2 KB  |  132 lines

  1. #ifndef _LINUX_CPUSET_H
  2. #define _LINUX_CPUSET_H
  3. /*
  4.  *  cpuset interface
  5.  *
  6.  *  Copyright (C) 2003 BULL SA
  7.  *  Copyright (C) 2004-2006 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.  
  17. extern int number_of_cpusets;    /* How many cpusets are defined in system? */
  18.  
  19. extern int cpuset_init_early(void);
  20. extern int cpuset_init(void);
  21. extern void cpuset_init_smp(void);
  22. extern void cpuset_fork(struct task_struct *p);
  23. extern void cpuset_exit(struct task_struct *p);
  24. extern cpumask_t cpuset_cpus_allowed(struct task_struct *p);
  25. extern nodemask_t cpuset_mems_allowed(struct task_struct *p);
  26. void cpuset_init_current_mems_allowed(void);
  27. void cpuset_update_task_memory_state(void);
  28. #define cpuset_nodes_subset_current_mems_allowed(nodes) \
  29.         nodes_subset((nodes), current->mems_allowed)
  30. int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl);
  31.  
  32. extern int __cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask);
  33. static int inline cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask)
  34. {
  35.     return number_of_cpusets <= 1 || __cpuset_zone_allowed(z, gfp_mask);
  36. }
  37.  
  38. extern int cpuset_excl_nodes_overlap(const struct task_struct *p);
  39.  
  40. #define cpuset_memory_pressure_bump()                 \
  41.     do {                            \
  42.         if (cpuset_memory_pressure_enabled)        \
  43.             __cpuset_memory_pressure_bump();    \
  44.     } while (0)
  45. extern int cpuset_memory_pressure_enabled;
  46. extern void __cpuset_memory_pressure_bump(void);
  47.  
  48. extern struct file_operations proc_cpuset_operations;
  49. extern char *cpuset_task_status_allowed(struct task_struct *task, char *buffer);
  50.  
  51. extern void cpuset_lock(void);
  52. extern void cpuset_unlock(void);
  53.  
  54. extern int cpuset_mem_spread_node(void);
  55.  
  56. static inline int cpuset_do_page_mem_spread(void)
  57. {
  58.     return current->flags & PF_SPREAD_PAGE;
  59. }
  60.  
  61. static inline int cpuset_do_slab_mem_spread(void)
  62. {
  63.     return current->flags & PF_SPREAD_SLAB;
  64. }
  65.  
  66. #else /* !CONFIG_CPUSETS */
  67.  
  68. static inline int cpuset_init_early(void) { return 0; }
  69. static inline int cpuset_init(void) { return 0; }
  70. static inline void cpuset_init_smp(void) {}
  71. static inline void cpuset_fork(struct task_struct *p) {}
  72. static inline void cpuset_exit(struct task_struct *p) {}
  73.  
  74. static inline cpumask_t cpuset_cpus_allowed(struct task_struct *p)
  75. {
  76.     return cpu_possible_map;
  77. }
  78.  
  79. static inline nodemask_t cpuset_mems_allowed(struct task_struct *p)
  80. {
  81.     return node_possible_map;
  82. }
  83.  
  84. static inline void cpuset_init_current_mems_allowed(void) {}
  85. static inline void cpuset_update_task_memory_state(void) {}
  86. #define cpuset_nodes_subset_current_mems_allowed(nodes) (1)
  87.  
  88. static inline int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl)
  89. {
  90.     return 1;
  91. }
  92.  
  93. static inline int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask)
  94. {
  95.     return 1;
  96. }
  97.  
  98. static inline int cpuset_excl_nodes_overlap(const struct task_struct *p)
  99. {
  100.     return 1;
  101. }
  102.  
  103. static inline void cpuset_memory_pressure_bump(void) {}
  104.  
  105. static inline char *cpuset_task_status_allowed(struct task_struct *task,
  106.                             char *buffer)
  107. {
  108.     return buffer;
  109. }
  110.  
  111. static inline void cpuset_lock(void) {}
  112. static inline void cpuset_unlock(void) {}
  113.  
  114. static inline int cpuset_mem_spread_node(void)
  115. {
  116.     return 0;
  117. }
  118.  
  119. static inline int cpuset_do_page_mem_spread(void)
  120. {
  121.     return 0;
  122. }
  123.  
  124. static inline int cpuset_do_slab_mem_spread(void)
  125. {
  126.     return 0;
  127. }
  128.  
  129. #endif /* !CONFIG_CPUSETS */
  130.  
  131. #endif /* _LINUX_CPUSET_H */
  132.