/* SPDX-License-Identifier: GPL-2.0-only */ /* * tools/testing/selftests/kvm/include/numaif.h * * Copyright (C) 2020, Google LLC. * * This work is licensed under the terms of the GNU GPL, version 2. * * Header file that provides access to NUMA API functions not explicitly * exported to user space. */ #ifndef SELFTEST_KVM_NUMAIF_H #define SELFTEST_KVM_NUMAIF_H #define __NR_get_mempolicy 239 #define __NR_migrate_pages 256 /* System calls */ long get_mempolicy(int *policy, const unsigned long *nmask, unsigned long maxnode, void *addr, int flags) { return syscall(__NR_get_mempolicy, policy, nmask, maxnode, addr, flags); } long migrate_pages(int pid, unsigned long maxnode, const unsigned long *frommask, const unsigned long *tomask) { return syscall(__NR_migrate_pages, pid, maxnode, frommask, tomask); } /* Policies */ #define MPOL_DEFAULT 0 #define MPOL_PREFERRED 1 #define MPOL_BIND 2 #define MPOL_INTERLEAVE 3 #define MPOL_MAX MPOL_INTERLEAVE /* Flags for get_mem_policy */ #define MPOL_F_NODE (1<<0) /* return next il node or node of address */ /* Warning: MPOL_F_NODE is unsupported and * subject to change. Don't use. */ #define MPOL_F_ADDR (1<<1) /* look up vma using address */ #define MPOL_F_MEMS_ALLOWED (1<<2) /* query nodes allowed in cpuset */ /* Flags for mbind */ #define MPOL_MF_STRICT (1<<0) /* Verify existing pages in the mapping */ #define MPOL_MF_MOVE (1<<1) /* Move pages owned by this process to conform to mapping */ #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to mapping */ #endif /* SELFTEST_KVM_NUMAIF_H */