/// Helper macro to execute a system call that returns an `io::Result`. // // Macro must be defined before any modules that uses them. #[allow(unused_macros)]
macro_rules! syscall {
($fn: ident ( $($arg: expr),* $(,)* ) ) => {{ #[allow(unused_unsafe)] let res = unsafe { libc::$fn($($arg, )*) }; if res < 0 {
Err(std::io::Error::last_os_error())
} else {
Ok(res)
}
}};
}
#[cfg_attr(all(
not(mio_unsupported_force_waker_pipe),
any(
target_os = "android",
target_os = "espidf",
target_os = "fuchsia",
target_os = "hermit",
target_os = "illumos",
target_os = "linux",
)
), path = "waker/eventfd.rs")] #[cfg_attr(all(
not(mio_unsupported_force_waker_pipe),
not(mio_unsupported_force_poll_poll), // `kqueue(2)` based waker doesn't work with `poll(2)`.
any(
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "tvos",
target_os = "visionos",
target_os = "watchos",
)
), path = "waker/kqueue.rs")] #[cfg_attr(any( // NOTE: also add to the list list for the `pipe` module below.
mio_unsupported_force_waker_pipe,
all( // `kqueue(2)` based waker doesn't work with `poll(2)`.
mio_unsupported_force_poll_poll,
any(
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "tvos",
target_os = "visionos",
target_os = "watchos",
),
),
target_os = "aix",
target_os = "dragonfly",
target_os = "haiku",
target_os = "hurd",
target_os = "netbsd",
target_os = "nto",
target_os = "openbsd",
target_os = "redox",
target_os = "solaris",
target_os = "vita",
), path = "waker/pipe.rs")] mod waker; // NOTE: the `Waker` type is expected in the selector module as the // `poll(2)` implementation needs to do some special stuff.
mod sourcefd; #[cfg(feature = "os-ext")] pubuseself::sourcefd::SourceFd;
cfg_net! { mod net;
pub(crate) mod tcp; pub(crate) mod udp; #[cfg(not(target_os = "hermit"))] pub(crate) mod uds;
}
#[cfg(all(
any( // For the public `pipe` module, must match `cfg_os_ext` macro.
feature = "os-ext", // For the `Waker` type based on a pipe.
mio_unsupported_force_waker_pipe,
all( // `kqueue(2)` based waker doesn't work with `poll(2)`.
mio_unsupported_force_poll_poll,
any(
target_os = "freebsd",
target_os = "ios",
target_os = "macos",
target_os = "tvos",
target_os = "visionos",
target_os = "watchos",
),
), // NOTE: also add to the list list for the `pipe` module below.
target_os = "aix",
target_os = "dragonfly",
target_os = "haiku",
target_os = "hurd",
target_os = "netbsd",
target_os = "nto",
target_os = "openbsd",
target_os = "redox",
target_os = "solaris",
target_os = "vita",
), // Hermit doesn't support pipes.
not(target_os = "hermit"),
))] pub(crate) mod pipe;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.