1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
use super::*;
pub const UFFD_API: u64 = 0xAA;
pub const UFFD_API_FEATURES: u64 = UFFD_FEATURE_EVENT_FORK
| UFFD_FEATURE_EVENT_REMAP
| UFFD_FEATURE_EVENT_REMOVE
| UFFD_FEATURE_EVENT_UNMAP
| UFFD_FEATURE_MISSING_HUGETLBFS
| UFFD_FEATURE_MISSING_SHMEM
| UFFD_FEATURE_SIGBUS
| UFFD_FEATURE_THREAD_ID;
pub const UFFD_API_IOCTLS: u64 = 1 << _UFFDIO_REGISTER | 1 << _UFFDIO_UNREGISTER | 1 << _UFFDIO_API;
pub const UFFD_API_RANGE_IOCTLS: u64 =
1 << _UFFDIO_WAKE | 1 << _UFFDIO_COPY | 1 << _UFFDIO_ZEROPAGE;
pub const UFFD_API_RANGE_IOCTLS_BASIC: u64 = 1 << _UFFDIO_WAKE | 1 << _UFFDIO_COPY;
pub const UFFDIO_REGISTER_MODE_MISSING: u64 = 1 << 0;
pub const UFFDIO_REGISTER_MODE_WP: u64 = 1 << 1;
pub const UFFDIO_COPY_MODE_DONTWAKE: u64 = 1 << 0;
pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u64 = 1 << 0;
#[cfg(test)]
mod const_tests {
use super::*;
extern "C" {
#[no_mangle]
static _const_UFFD_API: u64;
#[no_mangle]
static _const_UFFD_API_FEATURES: u64;
#[no_mangle]
static _const_UFFD_API_IOCTLS: u64;
#[no_mangle]
static _const_UFFD_API_RANGE_IOCTLS: u64;
#[no_mangle]
static _const_UFFD_API_RANGE_IOCTLS_BASIC: u64;
#[no_mangle]
static _const_UFFDIO_REGISTER_MODE_MISSING: u64;
#[no_mangle]
static _const_UFFDIO_REGISTER_MODE_WP: u64;
#[no_mangle]
static _const_UFFDIO_COPY_MODE_DONTWAKE: u64;
#[no_mangle]
static _const_UFFDIO_ZEROPAGE_MODE_DONTWAKE: u64;
}
#[test]
fn consts_correct() {
unsafe {
assert_eq!(UFFD_API, _const_UFFD_API, "UFFD_API");
assert_eq!(
UFFD_API_FEATURES, _const_UFFD_API_FEATURES,
"UFFD_API_FEATURES"
);
assert_eq!(UFFD_API_IOCTLS, _const_UFFD_API_IOCTLS, "UFFD_API_IOCTLS");
assert_eq!(
UFFD_API_RANGE_IOCTLS, _const_UFFD_API_RANGE_IOCTLS,
"UFFD_API_RANGE_IOCTLS"
);
assert_eq!(
UFFD_API_RANGE_IOCTLS_BASIC, _const_UFFD_API_RANGE_IOCTLS_BASIC,
"UFFD_API_RANGE_IOCTLS_BASIC"
);
assert_eq!(
UFFDIO_REGISTER_MODE_MISSING, _const_UFFDIO_REGISTER_MODE_MISSING,
"UFFDIO_REGISTER_MODE_MISSING"
);
assert_eq!(
UFFDIO_REGISTER_MODE_WP, _const_UFFDIO_REGISTER_MODE_WP,
"UFFDIO_REGISTER_MODE_WP"
);
assert_eq!(
UFFDIO_COPY_MODE_DONTWAKE, _const_UFFDIO_COPY_MODE_DONTWAKE,
"UFFDIO_COPY_MODE_DONTWAKE"
);
assert_eq!(
UFFDIO_ZEROPAGE_MODE_DONTWAKE, _const_UFFDIO_ZEROPAGE_MODE_DONTWAKE,
"UFFDIO_ZEROPAGE_MODE_DONTWAKE"
);
}
}
}