13da5c369Sopenharmony_ciuse crate::errno::Errno; 23da5c369Sopenharmony_ciuse crate::Result; 33da5c369Sopenharmony_ciuse std::os::unix::io::RawFd; 43da5c369Sopenharmony_ci 53da5c369Sopenharmony_cilibc_bitflags! { 63da5c369Sopenharmony_ci pub struct EfdFlags: libc::c_int { 73da5c369Sopenharmony_ci EFD_CLOEXEC; // Since Linux 2.6.27 83da5c369Sopenharmony_ci EFD_NONBLOCK; // Since Linux 2.6.27 93da5c369Sopenharmony_ci EFD_SEMAPHORE; // Since Linux 2.6.30 103da5c369Sopenharmony_ci } 113da5c369Sopenharmony_ci} 123da5c369Sopenharmony_ci 133da5c369Sopenharmony_cipub fn eventfd(initval: libc::c_uint, flags: EfdFlags) -> Result<RawFd> { 143da5c369Sopenharmony_ci let res = unsafe { libc::eventfd(initval, flags.bits()) }; 153da5c369Sopenharmony_ci 163da5c369Sopenharmony_ci Errno::result(res).map(|r| r as RawFd) 173da5c369Sopenharmony_ci} 18