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} 18