rocket/util/unix.rs
1use std::io;
2use std::os::fd::AsRawFd;
3
4pub fn lock_exclusive_nonblocking<T: AsRawFd>(file: &T) -> io::Result<()> {
5 let raw_fd = file.as_raw_fd();
6 let res = unsafe {
7 libc::flock(raw_fd, libc::LOCK_EX | libc::LOCK_NB)
8 };
9
10 match res {
11 0 => Ok(()),
12 _ => Err(io::Error::last_os_error()),
13 }
14}
15
16pub fn unlock_nonblocking<T: AsRawFd>(file: &T) -> io::Result<()> {
17 let res = unsafe {
18 libc::flock(file.as_raw_fd(), libc::LOCK_UN | libc::LOCK_NB)
19 };
20
21 match res {
22 0 => Ok(()),
23 _ => Err(io::Error::last_os_error()),
24 }
25}