nix/sys/
eventfd.rs

1use crate::errno::Errno;
2use crate::Result;
3use std::os::unix::io::RawFd;
4
5libc_bitflags! {
6    pub struct EfdFlags: libc::c_int {
7        EFD_CLOEXEC; // Since Linux 2.6.27
8        EFD_NONBLOCK; // Since Linux 2.6.27
9        EFD_SEMAPHORE; // Since Linux 2.6.30
10    }
11}
12
13pub fn eventfd(initval: libc::c_uint, flags: EfdFlags) -> Result<RawFd> {
14    let res = unsafe { libc::eventfd(initval, flags.bits()) };
15
16    Errno::result(res).map(|r| r as RawFd)
17}