1 | #ifndef NUMAIF_H |
2 | #define NUMAIF_H 1 |
3 | |
4 | #ifdef __cplusplus |
5 | extern "C" { |
6 | #endif |
7 | |
8 | /* Kernel interface for NUMA API */ |
9 | |
10 | /* System calls */ |
11 | extern long get_mempolicy(int *policy, const unsigned long *nmask, |
12 | unsigned long maxnode, void *addr, int flags); |
13 | extern long mbind(void *start, unsigned long len, int mode, |
14 | const unsigned long *nmask, unsigned long maxnode, unsigned flags); |
15 | extern long set_mempolicy(int mode, const unsigned long *nmask, |
16 | unsigned long maxnode); |
17 | extern long migrate_pages(int pid, unsigned long maxnode, |
18 | const unsigned long *frommask, |
19 | const unsigned long *tomask); |
20 | |
21 | extern long move_pages(int pid, unsigned long count, |
22 | void **pages, const int *nodes, int *status, int flags); |
23 | |
24 | /* Policies */ |
25 | #define MPOL_DEFAULT 0 |
26 | #define MPOL_PREFERRED 1 |
27 | #define MPOL_BIND 2 |
28 | #define MPOL_INTERLEAVE 3 |
29 | |
30 | #define MPOL_MAX MPOL_INTERLEAVE |
31 | |
32 | /* Flags for get_mem_policy */ |
33 | #define MPOL_F_NODE (1<<0) /* return next il node or node of address */ |
34 | /* Warning: MPOL_F_NODE is unsupported and |
35 | subject to change. Don't use. */ |
36 | #define MPOL_F_ADDR (1<<1) /* look up vma using address */ |
37 | #define MPOL_F_MEMS_ALLOWED (1<<2) /* query nodes allowed in cpuset */ |
38 | |
39 | /* Flags for mbind */ |
40 | #define MPOL_MF_STRICT (1<<0) /* Verify existing pages in the mapping */ |
41 | #define MPOL_MF_MOVE (1<<1) /* Move pages owned by this process to conform to mapping */ |
42 | #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to mapping */ |
43 | |
44 | #ifdef __cplusplus |
45 | } |
46 | #endif |
47 | |
48 | #endif |
49 | |