130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * NUMA memory policies for Linux. 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright 2003,2004 Andi Kleen SuSE Labs 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_LINUX_MEMPOLICY_H 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_LINUX_MEMPOLICY_H 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/errno.h> 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Both the MPOL_* mempolicy mode and the MPOL_F_* optional mode flags are 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * passed by the user to either set_mempolicy() or mbind() in an 'int' actual. 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * The MPOL_MODE_FLAGS macro determines the legal set of optional mode flags. 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Policies */ 1830692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_DEFAULT, 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_PREFERRED, 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_BIND, 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_INTERLEAVE, 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_LOCAL, 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_MAX, /* always last member of enum */ 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum mpol_rebind_step { 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_REBIND_ONCE, /* do rebind work at once(not by two step) */ 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_REBIND_STEP1, /* first step(set all the newly nodes) */ 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_REBIND_STEP2, /* second step(clean all the disallowed nodes)*/ 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_REBIND_NSTEP, 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Flags for set_mempolicy */ 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_STATIC_NODES (1 << 15) 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_RELATIVE_NODES (1 << 14) 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * MPOL_MODE_FLAGS is the union of all possible optional mode flags passed to 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * either set_mempolicy() or mbind(). 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_MODE_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES) 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Flags for get_mempolicy */ 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */ 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_ADDR (1<<1) /* look up vma using address */ 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_MEMS_ALLOWED (1<<2) /* return allowed memories */ 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Flags for mbind */ 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_MF_STRICT (1<<0) /* Verify existing pages in the mapping */ 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_MF_MOVE (1<<1) /* Move pages owned by this process to conform 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng to policy */ 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to policy */ 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_MF_LAZY (1<<3) /* Modifies '_MOVE: lazy migrate on fault */ 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_MF_INTERNAL (1<<4) /* Internal flags start here */ 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_MF_VALID (MPOL_MF_STRICT | \ 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_MF_MOVE | \ 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng MPOL_MF_MOVE_ALL) 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Internal flags that share the struct mempolicy flags word with 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * "mode flags". These flags are allocated from bit 0 up, as they 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * are never OR'ed into the mode in mempolicy API arguments. 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_SHARED (1 << 0) /* identify shared policies */ 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_LOCAL (1 << 1) /* preferred local allocation */ 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_REBINDING (1 << 2) /* identify policies in rebinding */ 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MPOL_F_MOF (1 << 3) /* this policy wants migrate on fault */ 7012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#define MPOL_F_MORON (1 << 4) /* Migrate On protnone Reference On Node */ 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_LINUX_MEMPOLICY_H */ 74