1 use crate::errno::Errno; 2 use crate::Result; 3 use std::os::unix::io::RawFd; 4 5 libc_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 eventfd(initval: libc::c_uint, flags: EfdFlags) -> Result<RawFd>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