From aa6f5e2b38dc1d70b8b79543f4b84bb97856c92f Mon Sep 17 00:00:00 2001 From: coolreader18 <33094578+coolreader18@users.noreply.github.com> Date: Sat, 7 Dec 2019 22:31:45 -0600 Subject: [PATCH] Add FD_* functions/macros for redox; implementations copied from linux_like --- src/unix/redox/mod.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/unix/redox/mod.rs b/src/unix/redox/mod.rs index b00a191c..4ea52e37 100644 --- a/src/unix/redox/mod.rs +++ b/src/unix/redox/mod.rs @@ -839,6 +839,32 @@ f! { pub fn WCOREDUMP(status: ::c_int) -> bool { (status & 0x80) != 0 } + + pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { + let fd = fd as usize; + let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8; + (*set).fds_bits[fd / size] &= !(1 << (fd % size)); + return + } + + pub fn FD_ISSET(fd: ::c_int, set: *mut fd_set) -> bool { + let fd = fd as usize; + let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8; + return ((*set).fds_bits[fd / size] & (1 << (fd % size))) != 0 + } + + pub fn FD_SET(fd: ::c_int, set: *mut fd_set) -> () { + let fd = fd as usize; + let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8; + (*set).fds_bits[fd / size] |= 1 << (fd % size); + return + } + + pub fn FD_ZERO(set: *mut fd_set) -> () { + for slot in (*set).fds_bits.iter_mut() { + *slot = 0; + } + } } extern "C" { -- GitLab