1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * tools/testing/selftests/kvm/include/numaif.h 4 * 5 * Copyright (C) 2020, Google LLC. 6 * 7 * This work is licensed under the terms of the GNU GPL, version 2. 8 * 9 * Header file that provides access to NUMA API functions not explicitly 10 * exported to user space. 11 */ 12 13 #ifndef SELFTEST_KVM_NUMAIF_H 14 #define SELFTEST_KVM_NUMAIF_H 15 16 #define __NR_get_mempolicy 239 17 #define __NR_migrate_pages 256 18 19 /* System calls */ 20 long get_mempolicy(int *policy, const unsigned long *nmask, 21 unsigned long maxnode, void *addr, int flags) 22 { 23 return syscall(__NR_get_mempolicy, policy, nmask, 24 maxnode, addr, flags); 25 } 26 27 long migrate_pages(int pid, unsigned long maxnode, 28 const unsigned long *frommask, 29 const unsigned long *tomask) 30 { 31 return syscall(__NR_migrate_pages, pid, maxnode, frommask, tomask); 32 } 33 34 /* Policies */ 35 #define MPOL_DEFAULT 0 36 #define MPOL_PREFERRED 1 37 #define MPOL_BIND 2 38 #define MPOL_INTERLEAVE 3 39 40 #define MPOL_MAX MPOL_INTERLEAVE 41 42 /* Flags for get_mem_policy */ 43 #define MPOL_F_NODE (1<<0) /* return next il node or node of address */ 44 /* Warning: MPOL_F_NODE is unsupported and 45 * subject to change. Don't use. 46 */ 47 #define MPOL_F_ADDR (1<<1) /* look up vma using address */ 48 #define MPOL_F_MEMS_ALLOWED (1<<2) /* query nodes allowed in cpuset */ 49 50 /* Flags for mbind */ 51 #define MPOL_MF_STRICT (1<<0) /* Verify existing pages in the mapping */ 52 #define MPOL_MF_MOVE (1<<1) /* Move pages owned by this process to conform to mapping */ 53 #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to mapping */ 54 55 #endif /* SELFTEST_KVM_NUMAIF_H */ 56