1
- use nix:: Error ;
2
- use nix:: libc:: { c_void, size_t} ;
3
1
use nix:: sys:: mman:: { mmap, MapFlags , ProtFlags } ;
4
2
5
- #[ cfg( target_os = "linux" ) ]
6
- use nix:: sys:: mman:: { mremap, MRemapFlags } ;
7
-
8
3
#[ test]
9
4
fn test_mmap_anonymous ( ) {
10
- let ref mut byte = unsafe {
5
+ unsafe {
11
6
let ptr = mmap ( std:: ptr:: null_mut ( ) , 1 ,
12
7
ProtFlags :: PROT_READ | ProtFlags :: PROT_WRITE ,
13
8
MapFlags :: MAP_PRIVATE | MapFlags :: MAP_ANONYMOUS , -1 , 0 )
14
- . unwrap ( ) ;
15
- * ( ptr as * mut u8 )
16
- } ;
17
- assert_eq ! ( * byte, 0x00u8 ) ;
18
- * byte = 0xffu8 ;
19
- assert_eq ! ( * byte, 0xffu8 ) ;
9
+ . unwrap ( ) as * mut u8 ;
10
+ assert_eq ! ( * ptr, 0x00u8 ) ;
11
+ * ptr = 0xffu8 ;
12
+ assert_eq ! ( * ptr, 0xffu8 ) ;
13
+ }
20
14
}
21
15
22
16
#[ test]
23
17
#[ cfg( any( target_os = "linux" , target_os = "netbsd" ) ) ]
24
18
fn test_mremap_grow ( ) {
19
+ use nix:: sys:: mman:: { mremap, MRemapFlags } ;
20
+ use nix:: libc:: { c_void, size_t} ;
21
+
25
22
const ONE_K : size_t = 1024 ;
26
23
let slice : & mut [ u8 ] = unsafe {
27
24
let mem = mmap ( std:: ptr:: null_mut ( ) , ONE_K ,
@@ -57,7 +54,12 @@ fn test_mremap_grow() {
57
54
58
55
#[ test]
59
56
#[ cfg( any( target_os = "linux" , target_os = "netbsd" ) ) ]
57
+ // Segfaults for unknown reasons under QEMU for 32-bit targets
58
+ #[ cfg_attr( all( target_pointer_width = "32" , qemu) , ignore) ]
60
59
fn test_mremap_shrink ( ) {
60
+ use nix:: sys:: mman:: { mremap, MRemapFlags } ;
61
+ use nix:: libc:: { c_void, size_t} ;
62
+
61
63
const ONE_K : size_t = 1024 ;
62
64
let slice : & mut [ u8 ] = unsafe {
63
65
let mem = mmap ( std:: ptr:: null_mut ( ) , 10 * ONE_K ,
@@ -77,9 +79,9 @@ fn test_mremap_shrink() {
77
79
. unwrap ( ) ;
78
80
// Since we didn't supply MREMAP_MAYMOVE, the address should be the
79
81
// same.
80
- #[ cfg( target_os = "linux " ) ]
82
+ #[ cfg( target_os = "netbsd " ) ]
81
83
let mem = mremap ( slice. as_mut_ptr ( ) as * mut c_void , 10 * ONE_K , ONE_K ,
82
- MRemapFlags :: MAP_FIXED ) , None )
84
+ MRemapFlags :: MAP_FIXED , None )
83
85
. unwrap ( ) ;
84
86
assert_eq ! ( mem, slice. as_mut_ptr( ) as * mut c_void) ;
85
87
std:: slice:: from_raw_parts_mut ( mem as * mut u8 , ONE_K )
0 commit comments