diff options
Diffstat (limited to 'include/linux/mempolicy.h')
| -rw-r--r-- | include/linux/mempolicy.h | 67 |
1 files changed, 5 insertions, 62 deletions
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index 95b738c7abff..e5ccb9ddd90e 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h | |||
| @@ -1,66 +1,10 @@ | |||
| 1 | #ifndef _LINUX_MEMPOLICY_H | ||
| 2 | #define _LINUX_MEMPOLICY_H 1 | ||
| 3 | |||
| 4 | #include <linux/errno.h> | ||
| 5 | |||
| 6 | /* | 1 | /* |
| 7 | * NUMA memory policies for Linux. | 2 | * NUMA memory policies for Linux. |
| 8 | * Copyright 2003,2004 Andi Kleen SuSE Labs | 3 | * Copyright 2003,2004 Andi Kleen SuSE Labs |
| 9 | */ | 4 | */ |
| 5 | #ifndef _LINUX_MEMPOLICY_H | ||
| 6 | #define _LINUX_MEMPOLICY_H 1 | ||
| 10 | 7 | ||
| 11 | /* | ||
| 12 | * Both the MPOL_* mempolicy mode and the MPOL_F_* optional mode flags are | ||
| 13 | * passed by the user to either set_mempolicy() or mbind() in an 'int' actual. | ||
| 14 | * The MPOL_MODE_FLAGS macro determines the legal set of optional mode flags. | ||
| 15 | */ | ||
| 16 | |||
| 17 | /* Policies */ | ||
| 18 | enum { | ||
| 19 | MPOL_DEFAULT, | ||
| 20 | MPOL_PREFERRED, | ||
| 21 | MPOL_BIND, | ||
| 22 | MPOL_INTERLEAVE, | ||
| 23 | MPOL_MAX, /* always last member of enum */ | ||
| 24 | }; | ||
| 25 | |||
| 26 | enum mpol_rebind_step { | ||
| 27 | MPOL_REBIND_ONCE, /* do rebind work at once(not by two step) */ | ||
| 28 | MPOL_REBIND_STEP1, /* first step(set all the newly nodes) */ | ||
| 29 | MPOL_REBIND_STEP2, /* second step(clean all the disallowed nodes)*/ | ||
| 30 | MPOL_REBIND_NSTEP, | ||
| 31 | }; | ||
| 32 | |||
| 33 | /* Flags for set_mempolicy */ | ||
| 34 | #define MPOL_F_STATIC_NODES (1 << 15) | ||
| 35 | #define MPOL_F_RELATIVE_NODES (1 << 14) | ||
| 36 | |||
| 37 | /* | ||
| 38 | * MPOL_MODE_FLAGS is the union of all possible optional mode flags passed to | ||
| 39 | * either set_mempolicy() or mbind(). | ||
| 40 | */ | ||
| 41 | #define MPOL_MODE_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES) | ||
| 42 | |||
| 43 | /* Flags for get_mempolicy */ | ||
| 44 | #define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */ | ||
| 45 | #define MPOL_F_ADDR (1<<1) /* look up vma using address */ | ||
| 46 | #define MPOL_F_MEMS_ALLOWED (1<<2) /* return allowed memories */ | ||
| 47 | |||
| 48 | /* Flags for mbind */ | ||
| 49 | #define MPOL_MF_STRICT (1<<0) /* Verify existing pages in the mapping */ | ||
| 50 | #define MPOL_MF_MOVE (1<<1) /* Move pages owned by this process to conform to mapping */ | ||
| 51 | #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to mapping */ | ||
| 52 | #define MPOL_MF_INTERNAL (1<<3) /* Internal flags start here */ | ||
| 53 | |||
| 54 | /* | ||
| 55 | * Internal flags that share the struct mempolicy flags word with | ||
| 56 | * "mode flags". These flags are allocated from bit 0 up, as they | ||
| 57 | * are never OR'ed into the mode in mempolicy API arguments. | ||
| 58 | */ | ||
| 59 | #define MPOL_F_SHARED (1 << 0) /* identify shared policies */ | ||
| 60 | #define MPOL_F_LOCAL (1 << 1) /* preferred local allocation */ | ||
| 61 | #define MPOL_F_REBINDING (1 << 2) /* identify policies in rebinding */ | ||
| 62 | |||
| 63 | #ifdef __KERNEL__ | ||
| 64 | 8 | ||
| 65 | #include <linux/mmzone.h> | 9 | #include <linux/mmzone.h> |
| 66 | #include <linux/slab.h> | 10 | #include <linux/slab.h> |
| @@ -68,6 +12,7 @@ enum mpol_rebind_step { | |||
| 68 | #include <linux/spinlock.h> | 12 | #include <linux/spinlock.h> |
| 69 | #include <linux/nodemask.h> | 13 | #include <linux/nodemask.h> |
| 70 | #include <linux/pagemap.h> | 14 | #include <linux/pagemap.h> |
| 15 | #include <uapi/linux/mempolicy.h> | ||
| 71 | 16 | ||
| 72 | struct mm_struct; | 17 | struct mm_struct; |
| 73 | 18 | ||
| @@ -188,7 +133,7 @@ struct sp_node { | |||
| 188 | 133 | ||
| 189 | struct shared_policy { | 134 | struct shared_policy { |
| 190 | struct rb_root root; | 135 | struct rb_root root; |
| 191 | spinlock_t lock; | 136 | struct mutex mutex; |
| 192 | }; | 137 | }; |
| 193 | 138 | ||
| 194 | void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol); | 139 | void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol); |
| @@ -239,7 +184,7 @@ extern int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, | |||
| 239 | /* Check if a vma is migratable */ | 184 | /* Check if a vma is migratable */ |
| 240 | static inline int vma_migratable(struct vm_area_struct *vma) | 185 | static inline int vma_migratable(struct vm_area_struct *vma) |
| 241 | { | 186 | { |
| 242 | if (vma->vm_flags & (VM_IO|VM_HUGETLB|VM_PFNMAP|VM_RESERVED)) | 187 | if (vma->vm_flags & (VM_IO | VM_HUGETLB | VM_PFNMAP)) |
| 243 | return 0; | 188 | return 0; |
| 244 | /* | 189 | /* |
| 245 | * Migration allocates pages in the highest zone. If we cannot | 190 | * Migration allocates pages in the highest zone. If we cannot |
| @@ -379,6 +324,4 @@ static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, | |||
| 379 | } | 324 | } |
| 380 | 325 | ||
| 381 | #endif /* CONFIG_NUMA */ | 326 | #endif /* CONFIG_NUMA */ |
| 382 | #endif /* __KERNEL__ */ | ||
| 383 | |||
| 384 | #endif | 327 | #endif |
