Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * tools/testing/selftests/kvm/include/numaif.h
0004  *
0005  * Copyright (C) 2020, Google LLC.
0006  *
0007  * This work is licensed under the terms of the GNU GPL, version 2.
0008  *
0009  * Header file that provides access to NUMA API functions not explicitly
0010  * exported to user space.
0011  */
0012 
0013 #ifndef SELFTEST_KVM_NUMAIF_H
0014 #define SELFTEST_KVM_NUMAIF_H
0015 
0016 #define __NR_get_mempolicy 239
0017 #define __NR_migrate_pages 256
0018 
0019 /* System calls */
0020 long get_mempolicy(int *policy, const unsigned long *nmask,
0021            unsigned long maxnode, void *addr, int flags)
0022 {
0023     return syscall(__NR_get_mempolicy, policy, nmask,
0024                maxnode, addr, flags);
0025 }
0026 
0027 long migrate_pages(int pid, unsigned long maxnode,
0028            const unsigned long *frommask,
0029            const unsigned long *tomask)
0030 {
0031     return syscall(__NR_migrate_pages, pid, maxnode, frommask, tomask);
0032 }
0033 
0034 /* Policies */
0035 #define MPOL_DEFAULT     0
0036 #define MPOL_PREFERRED   1
0037 #define MPOL_BIND    2
0038 #define MPOL_INTERLEAVE  3
0039 
0040 #define MPOL_MAX MPOL_INTERLEAVE
0041 
0042 /* Flags for get_mem_policy */
0043 #define MPOL_F_NODE     (1<<0)  /* return next il node or node of address */
0044                     /* Warning: MPOL_F_NODE is unsupported and
0045                      * subject to change. Don't use.
0046                      */
0047 #define MPOL_F_ADDR     (1<<1)  /* look up vma using address */
0048 #define MPOL_F_MEMS_ALLOWED (1<<2)  /* query nodes allowed in cpuset */
0049 
0050 /* Flags for mbind */
0051 #define MPOL_MF_STRICT       (1<<0) /* Verify existing pages in the mapping */
0052 #define MPOL_MF_MOVE         (1<<1) /* Move pages owned by this process to conform to mapping */
0053 #define MPOL_MF_MOVE_ALL     (1<<2) /* Move every page to conform to mapping */
0054 
0055 #endif /* SELFTEST_KVM_NUMAIF_H */