1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * NUMA memory policies for Linux. 4*f80ad8b4SAndroid Build Coastguard Worker * Copyright 2003,2004 Andi Kleen SuSE Labs 5*f80ad8b4SAndroid Build Coastguard Worker */ 6*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_MEMPOLICY_H 7*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_MEMPOLICY_H 8*f80ad8b4SAndroid Build Coastguard Worker 9*f80ad8b4SAndroid Build Coastguard Worker #include <linux/errno.h> 10*f80ad8b4SAndroid Build Coastguard Worker 11*f80ad8b4SAndroid Build Coastguard Worker 12*f80ad8b4SAndroid Build Coastguard Worker /* 13*f80ad8b4SAndroid Build Coastguard Worker * Both the MPOL_* mempolicy mode and the MPOL_F_* optional mode flags are 14*f80ad8b4SAndroid Build Coastguard Worker * passed by the user to either set_mempolicy() or mbind() in an 'int' actual. 15*f80ad8b4SAndroid Build Coastguard Worker * The MPOL_MODE_FLAGS macro determines the legal set of optional mode flags. 16*f80ad8b4SAndroid Build Coastguard Worker */ 17*f80ad8b4SAndroid Build Coastguard Worker 18*f80ad8b4SAndroid Build Coastguard Worker /* Policies */ 19*f80ad8b4SAndroid Build Coastguard Worker enum { 20*f80ad8b4SAndroid Build Coastguard Worker MPOL_DEFAULT, 21*f80ad8b4SAndroid Build Coastguard Worker MPOL_PREFERRED, 22*f80ad8b4SAndroid Build Coastguard Worker MPOL_BIND, 23*f80ad8b4SAndroid Build Coastguard Worker MPOL_INTERLEAVE, 24*f80ad8b4SAndroid Build Coastguard Worker MPOL_LOCAL, 25*f80ad8b4SAndroid Build Coastguard Worker MPOL_PREFERRED_MANY, 26*f80ad8b4SAndroid Build Coastguard Worker MPOL_WEIGHTED_INTERLEAVE, 27*f80ad8b4SAndroid Build Coastguard Worker MPOL_MAX, /* always last member of enum */ 28*f80ad8b4SAndroid Build Coastguard Worker }; 29*f80ad8b4SAndroid Build Coastguard Worker 30*f80ad8b4SAndroid Build Coastguard Worker /* Flags for set_mempolicy */ 31*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_STATIC_NODES (1 << 15) 32*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_RELATIVE_NODES (1 << 14) 33*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_NUMA_BALANCING (1 << 13) /* Optimize with NUMA balancing if possible */ 34*f80ad8b4SAndroid Build Coastguard Worker 35*f80ad8b4SAndroid Build Coastguard Worker /* 36*f80ad8b4SAndroid Build Coastguard Worker * MPOL_MODE_FLAGS is the union of all possible optional mode flags passed to 37*f80ad8b4SAndroid Build Coastguard Worker * either set_mempolicy() or mbind(). 38*f80ad8b4SAndroid Build Coastguard Worker */ 39*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_MODE_FLAGS \ 40*f80ad8b4SAndroid Build Coastguard Worker (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES | MPOL_F_NUMA_BALANCING) 41*f80ad8b4SAndroid Build Coastguard Worker 42*f80ad8b4SAndroid Build Coastguard Worker /* Flags for get_mempolicy */ 43*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */ 44*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_ADDR (1<<1) /* look up vma using address */ 45*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_MEMS_ALLOWED (1<<2) /* return allowed memories */ 46*f80ad8b4SAndroid Build Coastguard Worker 47*f80ad8b4SAndroid Build Coastguard Worker /* Flags for mbind */ 48*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_MF_STRICT (1<<0) /* Verify existing pages in the mapping */ 49*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_MF_MOVE (1<<1) /* Move pages owned by this process to conform 50*f80ad8b4SAndroid Build Coastguard Worker to policy */ 51*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to policy */ 52*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_MF_LAZY (1<<3) /* UNSUPPORTED FLAG: Lazy migrate on fault */ 53*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_MF_INTERNAL (1<<4) /* Internal flags start here */ 54*f80ad8b4SAndroid Build Coastguard Worker 55*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_MF_VALID (MPOL_MF_STRICT | \ 56*f80ad8b4SAndroid Build Coastguard Worker MPOL_MF_MOVE | \ 57*f80ad8b4SAndroid Build Coastguard Worker MPOL_MF_MOVE_ALL) 58*f80ad8b4SAndroid Build Coastguard Worker 59*f80ad8b4SAndroid Build Coastguard Worker /* 60*f80ad8b4SAndroid Build Coastguard Worker * Internal flags that share the struct mempolicy flags word with 61*f80ad8b4SAndroid Build Coastguard Worker * "mode flags". These flags are allocated from bit 0 up, as they 62*f80ad8b4SAndroid Build Coastguard Worker * are never OR'ed into the mode in mempolicy API arguments. 63*f80ad8b4SAndroid Build Coastguard Worker */ 64*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_SHARED (1 << 0) /* identify shared policies */ 65*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_MOF (1 << 3) /* this policy wants migrate on fault */ 66*f80ad8b4SAndroid Build Coastguard Worker #define MPOL_F_MORON (1 << 4) /* Migrate On protnone Reference On Node */ 67*f80ad8b4SAndroid Build Coastguard Worker 68*f80ad8b4SAndroid Build Coastguard Worker /* 69*f80ad8b4SAndroid Build Coastguard Worker * These bit locations are exposed in the vm.zone_reclaim_mode sysctl 70*f80ad8b4SAndroid Build Coastguard Worker * ABI. New bits are OK, but existing bits can never change. 71*f80ad8b4SAndroid Build Coastguard Worker */ 72*f80ad8b4SAndroid Build Coastguard Worker #define RECLAIM_ZONE (1<<0) /* Run shrink_inactive_list on the zone */ 73*f80ad8b4SAndroid Build Coastguard Worker #define RECLAIM_WRITE (1<<1) /* Writeout pages during reclaim */ 74*f80ad8b4SAndroid Build Coastguard Worker #define RECLAIM_UNMAP (1<<2) /* Unmap pages during reclaim */ 75*f80ad8b4SAndroid Build Coastguard Worker 76*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_MEMPOLICY_H */ 77