1 use core::ffi::{c_char, c_void};
2 use libc::{mount, MS_BIND};
3 use std::fs;
4 use std::path::Path;
5 use std::time;
main()6 fn main() {
7 let path = Path::new("mnt/tmp");
8 let dir = fs::create_dir_all(path);
9 if dir.is_err() {
10 panic!("mkdir /mnt/tmp fail.");
11 }
12 let clock = time::Instant::now();
13 let source = b"\0".as_ptr() as *const c_char;
14 let target = b"/mnt/tmp\0".as_ptr() as *const c_char;
15 let fstype = b"ramfs\0".as_ptr() as *const c_char;
16 let flags = MS_BIND;
17 let data = std::ptr::null() as *const c_void;
18 let result = unsafe { mount(source, target, fstype, flags, data) };
19 let path = Path::new("mnt/tmp/tmp");
20 let dir = fs::create_dir_all(path);
21 if dir.is_err() {
22 panic!("mkdir /mnt/tmp/tmp fail.");
23 }
24 let target = b"/mnt/tmp/tmp\0".as_ptr() as *const c_char;
25 let result = unsafe { mount(source, target, fstype, flags, data) };
26 if result == 0 {
27 println!("Mount successful");
28 } else {
29 println!("Mount failed");
30 }
31 let dur = clock.elapsed();
32 println!("mount costing time: {} ns", dur.as_nanos());
33 }
34