xref: /openbmc/qemu/include/qemu/madvise.h (revision 477c3b934a47adf7de285863f59d6e4503dd1a6d)
1*b85ea5faSPeter Maydell /*
2*b85ea5faSPeter Maydell  * QEMU madvise wrapper functions
3*b85ea5faSPeter Maydell  *
4*b85ea5faSPeter Maydell  * This work is licensed under the terms of the GNU GPL, version 2 or later.
5*b85ea5faSPeter Maydell  * See the COPYING file in the top-level directory.
6*b85ea5faSPeter Maydell  */
7*b85ea5faSPeter Maydell 
8*b85ea5faSPeter Maydell #ifndef QEMU_MADVISE_H
9*b85ea5faSPeter Maydell #define QEMU_MADVISE_H
10*b85ea5faSPeter Maydell 
11*b85ea5faSPeter Maydell #define QEMU_MADV_INVALID -1
12*b85ea5faSPeter Maydell 
13*b85ea5faSPeter Maydell #if defined(CONFIG_MADVISE)
14*b85ea5faSPeter Maydell 
15*b85ea5faSPeter Maydell #define QEMU_MADV_WILLNEED  MADV_WILLNEED
16*b85ea5faSPeter Maydell #define QEMU_MADV_DONTNEED  MADV_DONTNEED
17*b85ea5faSPeter Maydell #ifdef MADV_DONTFORK
18*b85ea5faSPeter Maydell #define QEMU_MADV_DONTFORK  MADV_DONTFORK
19*b85ea5faSPeter Maydell #else
20*b85ea5faSPeter Maydell #define QEMU_MADV_DONTFORK  QEMU_MADV_INVALID
21*b85ea5faSPeter Maydell #endif
22*b85ea5faSPeter Maydell #ifdef MADV_MERGEABLE
23*b85ea5faSPeter Maydell #define QEMU_MADV_MERGEABLE MADV_MERGEABLE
24*b85ea5faSPeter Maydell #else
25*b85ea5faSPeter Maydell #define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID
26*b85ea5faSPeter Maydell #endif
27*b85ea5faSPeter Maydell #ifdef MADV_UNMERGEABLE
28*b85ea5faSPeter Maydell #define QEMU_MADV_UNMERGEABLE MADV_UNMERGEABLE
29*b85ea5faSPeter Maydell #else
30*b85ea5faSPeter Maydell #define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID
31*b85ea5faSPeter Maydell #endif
32*b85ea5faSPeter Maydell #ifdef MADV_DODUMP
33*b85ea5faSPeter Maydell #define QEMU_MADV_DODUMP MADV_DODUMP
34*b85ea5faSPeter Maydell #else
35*b85ea5faSPeter Maydell #define QEMU_MADV_DODUMP QEMU_MADV_INVALID
36*b85ea5faSPeter Maydell #endif
37*b85ea5faSPeter Maydell #ifdef MADV_DONTDUMP
38*b85ea5faSPeter Maydell #define QEMU_MADV_DONTDUMP MADV_DONTDUMP
39*b85ea5faSPeter Maydell #else
40*b85ea5faSPeter Maydell #define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID
41*b85ea5faSPeter Maydell #endif
42*b85ea5faSPeter Maydell #ifdef MADV_HUGEPAGE
43*b85ea5faSPeter Maydell #define QEMU_MADV_HUGEPAGE MADV_HUGEPAGE
44*b85ea5faSPeter Maydell #else
45*b85ea5faSPeter Maydell #define QEMU_MADV_HUGEPAGE QEMU_MADV_INVALID
46*b85ea5faSPeter Maydell #endif
47*b85ea5faSPeter Maydell #ifdef MADV_NOHUGEPAGE
48*b85ea5faSPeter Maydell #define QEMU_MADV_NOHUGEPAGE MADV_NOHUGEPAGE
49*b85ea5faSPeter Maydell #else
50*b85ea5faSPeter Maydell #define QEMU_MADV_NOHUGEPAGE QEMU_MADV_INVALID
51*b85ea5faSPeter Maydell #endif
52*b85ea5faSPeter Maydell #ifdef MADV_REMOVE
53*b85ea5faSPeter Maydell #define QEMU_MADV_REMOVE MADV_REMOVE
54*b85ea5faSPeter Maydell #else
55*b85ea5faSPeter Maydell #define QEMU_MADV_REMOVE QEMU_MADV_DONTNEED
56*b85ea5faSPeter Maydell #endif
57*b85ea5faSPeter Maydell #ifdef MADV_POPULATE_WRITE
58*b85ea5faSPeter Maydell #define QEMU_MADV_POPULATE_WRITE MADV_POPULATE_WRITE
59*b85ea5faSPeter Maydell #else
60*b85ea5faSPeter Maydell #define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID
61*b85ea5faSPeter Maydell #endif
62*b85ea5faSPeter Maydell 
63*b85ea5faSPeter Maydell #elif defined(CONFIG_POSIX_MADVISE)
64*b85ea5faSPeter Maydell 
65*b85ea5faSPeter Maydell #define QEMU_MADV_WILLNEED  POSIX_MADV_WILLNEED
66*b85ea5faSPeter Maydell #define QEMU_MADV_DONTNEED  POSIX_MADV_DONTNEED
67*b85ea5faSPeter Maydell #define QEMU_MADV_DONTFORK  QEMU_MADV_INVALID
68*b85ea5faSPeter Maydell #define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID
69*b85ea5faSPeter Maydell #define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID
70*b85ea5faSPeter Maydell #define QEMU_MADV_DODUMP QEMU_MADV_INVALID
71*b85ea5faSPeter Maydell #define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID
72*b85ea5faSPeter Maydell #define QEMU_MADV_HUGEPAGE  QEMU_MADV_INVALID
73*b85ea5faSPeter Maydell #define QEMU_MADV_NOHUGEPAGE  QEMU_MADV_INVALID
74*b85ea5faSPeter Maydell #define QEMU_MADV_REMOVE QEMU_MADV_DONTNEED
75*b85ea5faSPeter Maydell #define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID
76*b85ea5faSPeter Maydell 
77*b85ea5faSPeter Maydell #else /* no-op */
78*b85ea5faSPeter Maydell 
79*b85ea5faSPeter Maydell #define QEMU_MADV_WILLNEED  QEMU_MADV_INVALID
80*b85ea5faSPeter Maydell #define QEMU_MADV_DONTNEED  QEMU_MADV_INVALID
81*b85ea5faSPeter Maydell #define QEMU_MADV_DONTFORK  QEMU_MADV_INVALID
82*b85ea5faSPeter Maydell #define QEMU_MADV_MERGEABLE QEMU_MADV_INVALID
83*b85ea5faSPeter Maydell #define QEMU_MADV_UNMERGEABLE QEMU_MADV_INVALID
84*b85ea5faSPeter Maydell #define QEMU_MADV_DODUMP QEMU_MADV_INVALID
85*b85ea5faSPeter Maydell #define QEMU_MADV_DONTDUMP QEMU_MADV_INVALID
86*b85ea5faSPeter Maydell #define QEMU_MADV_HUGEPAGE  QEMU_MADV_INVALID
87*b85ea5faSPeter Maydell #define QEMU_MADV_NOHUGEPAGE  QEMU_MADV_INVALID
88*b85ea5faSPeter Maydell #define QEMU_MADV_REMOVE QEMU_MADV_INVALID
89*b85ea5faSPeter Maydell #define QEMU_MADV_POPULATE_WRITE QEMU_MADV_INVALID
90*b85ea5faSPeter Maydell 
91*b85ea5faSPeter Maydell #endif
92*b85ea5faSPeter Maydell 
93*b85ea5faSPeter Maydell int qemu_madvise(void *addr, size_t len, int advice);
94*b85ea5faSPeter Maydell 
95*b85ea5faSPeter Maydell #endif
96