linux/include/linux/cpuset.h
<<
>>
Prefs
   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
  17extern int number_of_cpusets;   /* How many cpusets are defined in system? */
  18
  19extern int cpuset_init_early(void);
  20extern int cpuset_init(void);
  21extern void cpuset_init_smp(void);
  22extern void cpuset_fork(struct task_struct *p);
  23extern void cpuset_exit(struct task_struct *p);
  24extern cpumask_t cpuset_cpus_allowed(struct task_struct *p);
  25extern nodemask_t cpuset_mems_allowed(struct task_struct *p);
  26void cpuset_init_current_mems_allowed(void);
  27void cpuset_update_task_memory_state(void);
  28#define cpuset_nodes_subset_current_mems_allowed(nodes) \
  29                nodes_subset((nodes), current->mems_allowed)
  30int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl);
  31
  32extern int __cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask);
  33static 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
  38extern 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)
  45extern int cpuset_memory_pressure_enabled;
  46extern void __cpuset_memory_pressure_bump(void);
  47
  48extern struct file_operations proc_cpuset_operations;
  49extern char *cpuset_task_status_allowed(struct task_struct *task, char *buffer);
  50
  51extern void cpuset_lock(void);
  52extern void cpuset_unlock(void);
  53
  54extern int cpuset_mem_spread_node(void);
  55
  56static inline int cpuset_do_page_mem_spread(void)
  57{
  58        return current->flags & PF_SPREAD_PAGE;
  59}
  60
  61static inline int cpuset_do_slab_mem_spread(void)
  62{
  63        return current->flags & PF_SPREAD_SLAB;
  64}
  65
  66#else /* !CONFIG_CPUSETS */
  67
  68static inline int cpuset_init_early(void) { return 0; }
  69static inline int cpuset_init(void) { return 0; }
  70static inline void cpuset_init_smp(void) {}
  71static inline void cpuset_fork(struct task_struct *p) {}
  72static inline void cpuset_exit(struct task_struct *p) {}
  73
  74static inline cpumask_t cpuset_cpus_allowed(struct task_struct *p)
  75{
  76        return cpu_possible_map;
  77}
  78
  79static inline nodemask_t cpuset_mems_allowed(struct task_struct *p)
  80{
  81        return node_possible_map;
  82}
  83
  84static inline void cpuset_init_current_mems_allowed(void) {}
  85static inline void cpuset_update_task_memory_state(void) {}
  86#define cpuset_nodes_subset_current_mems_allowed(nodes) (1)
  87
  88static inline int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl)
  89{
  90        return 1;
  91}
  92
  93static inline int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask)
  94{
  95        return 1;
  96}
  97
  98static inline int cpuset_excl_nodes_overlap(const struct task_struct *p)
  99{
 100        return 1;
 101}
 102
 103static inline void cpuset_memory_pressure_bump(void) {}
 104
 105static inline char *cpuset_task_status_allowed(struct task_struct *task,
 106                                                        char *buffer)
 107{
 108        return buffer;
 109}
 110
 111static inline void cpuset_lock(void) {}
 112static inline void cpuset_unlock(void) {}
 113
 114static inline int cpuset_mem_spread_node(void)
 115{
 116        return 0;
 117}
 118
 119static inline int cpuset_do_page_mem_spread(void)
 120{
 121        return 0;
 122}
 123
 124static 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
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.