56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
/* 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 */
|