| David Howells | 607ca46 | 2012-10-13 10:46:48 +0100 | [diff] [blame] | 1 | /* | 
|  | 2 | * NUMA memory policies for Linux. | 
|  | 3 | * Copyright 2003,2004 Andi Kleen SuSE Labs | 
|  | 4 | */ | 
|  | 5 | #ifndef _UAPI_LINUX_MEMPOLICY_H | 
|  | 6 | #define _UAPI_LINUX_MEMPOLICY_H | 
|  | 7 |  | 
|  | 8 | #include <linux/errno.h> | 
|  | 9 |  | 
|  | 10 |  | 
|  | 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 |  | 
|  | 64 | #endif /* _UAPI_LINUX_MEMPOLICY_H */ |