#[test] #[cfg(target_os = "linux")] fn signalfd_() { use uapi::*; let sfd = signalfd_new(&empty_sig_set().unwrap(), 0).unwrap(); assert_ne!(fcntl_getfd(*sfd).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC); let sfd = signalfd_new(&empty_sig_set().unwrap(), c::SFD_CLOEXEC | c::SFD_NONBLOCK) .unwrap(); assert_eq!(fcntl_getfd(*sfd).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC); let mut set = empty_sig_set().unwrap(); sigaddset(&mut set, c::SIGUSR1).unwrap(); pthread_sigmask(c::SIG_BLOCK, Some(&set), None).unwrap(); let mut buf = [pod_zeroed(); 5]; assert_eq!( signalfd_read(*sfd, &mut buf[..]).err().unwrap(), Errno(c::EAGAIN) ); raise(c::SIGUSR1).unwrap(); assert_eq!( signalfd_read(*sfd, &mut buf[..]).err().unwrap(), Errno(c::EAGAIN) ); signalfd_mod(*sfd, &set).unwrap(); let res = signalfd_read(*sfd, &mut buf[..]).unwrap(); assert_eq!(res.len(), 1); assert_eq!(res[0].ssi_signo, c::SIGUSR1 as _); }