1*53ee8cc1Swenshuai.xi #ifndef _LINUX_MEMPOLICY_H 2*53ee8cc1Swenshuai.xi #define _LINUX_MEMPOLICY_H 1 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #include <linux/errno.h> 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi /* 7*53ee8cc1Swenshuai.xi * NUMA memory policies for Linux. 8*53ee8cc1Swenshuai.xi * Copyright 2003,2004 Andi Kleen SuSE Labs 9*53ee8cc1Swenshuai.xi */ 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi /* 12*53ee8cc1Swenshuai.xi * Both the MPOL_* mempolicy mode and the MPOL_F_* optional mode flags are 13*53ee8cc1Swenshuai.xi * passed by the user to either set_mempolicy() or mbind() in an 'int' actual. 14*53ee8cc1Swenshuai.xi * The MPOL_MODE_FLAGS macro determines the legal set of optional mode flags. 15*53ee8cc1Swenshuai.xi */ 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi /* Policies */ 18*53ee8cc1Swenshuai.xi enum { 19*53ee8cc1Swenshuai.xi MPOL_DEFAULT, 20*53ee8cc1Swenshuai.xi MPOL_PREFERRED, 21*53ee8cc1Swenshuai.xi MPOL_BIND, 22*53ee8cc1Swenshuai.xi MPOL_INTERLEAVE, 23*53ee8cc1Swenshuai.xi MPOL_MAX, /* always last member of enum */ 24*53ee8cc1Swenshuai.xi }; 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi /* Flags for set_mempolicy */ 27*53ee8cc1Swenshuai.xi #define MPOL_F_STATIC_NODES (1 << 15) 28*53ee8cc1Swenshuai.xi #define MPOL_F_RELATIVE_NODES (1 << 14) 29*53ee8cc1Swenshuai.xi 30*53ee8cc1Swenshuai.xi /* 31*53ee8cc1Swenshuai.xi * MPOL_MODE_FLAGS is the union of all possible optional mode flags passed to 32*53ee8cc1Swenshuai.xi * either set_mempolicy() or mbind(). 33*53ee8cc1Swenshuai.xi */ 34*53ee8cc1Swenshuai.xi #define MPOL_MODE_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES) 35*53ee8cc1Swenshuai.xi 36*53ee8cc1Swenshuai.xi /* Flags for get_mempolicy */ 37*53ee8cc1Swenshuai.xi #define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */ 38*53ee8cc1Swenshuai.xi #define MPOL_F_ADDR (1<<1) /* look up vma using address */ 39*53ee8cc1Swenshuai.xi #define MPOL_F_MEMS_ALLOWED (1<<2) /* return allowed memories */ 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi /* Flags for mbind */ 42*53ee8cc1Swenshuai.xi #define MPOL_MF_STRICT (1<<0) /* Verify existing pages in the mapping */ 43*53ee8cc1Swenshuai.xi #define MPOL_MF_MOVE (1<<1) /* Move pages owned by this process to conform to mapping */ 44*53ee8cc1Swenshuai.xi #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to mapping */ 45*53ee8cc1Swenshuai.xi #define MPOL_MF_INTERNAL (1<<3) /* Internal flags start here */ 46*53ee8cc1Swenshuai.xi 47*53ee8cc1Swenshuai.xi /* 48*53ee8cc1Swenshuai.xi * Internal flags that share the struct mempolicy flags word with 49*53ee8cc1Swenshuai.xi * "mode flags". These flags are allocated from bit 0 up, as they 50*53ee8cc1Swenshuai.xi * are never OR'ed into the mode in mempolicy API arguments. 51*53ee8cc1Swenshuai.xi */ 52*53ee8cc1Swenshuai.xi #define MPOL_F_SHARED (1 << 0) /* identify shared policies */ 53*53ee8cc1Swenshuai.xi #define MPOL_F_LOCAL (1 << 1) /* preferred local allocation */ 54*53ee8cc1Swenshuai.xi 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi #endif 57