diff options
author | Ivan Petkov <ivanppetkov@gmail.com> | 2020-09-24 10:51:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-24 10:51:46 -0700 |
commit | a1d0681cd2e581b1f6767126858d2f3d5d8992f5 (patch) | |
tree | 6f7b9aa5e4bd32854683a42753a145132e2ac7cc | |
parent | 4dfbdbff7e260eb7f046a8dc91ec0c84ae7ab2e8 (diff) |
process: do not publicly turn on `signal` when enabled (#2871)
This change will still internally compile any `signal` resources
required when `process` is enabled on unix systems, but it will not
publicly turn on the cargo feature
-rw-r--r-- | tokio/Cargo.toml | 5 | ||||
-rw-r--r-- | tokio/src/lib.rs | 7 | ||||
-rw-r--r-- | tokio/src/macros/cfg.rs | 19 | ||||
-rw-r--r-- | tokio/src/runtime/context.rs | 2 | ||||
-rw-r--r-- | tokio/src/runtime/driver.rs | 22 | ||||
-rw-r--r-- | tokio/src/signal/windows.rs | 4 | ||||
-rw-r--r-- | tokio/src/sync/mod.rs | 2 |
7 files changed, 38 insertions, 23 deletions
diff --git a/tokio/Cargo.toml b/tokio/Cargo.toml index 6df368eb..0296e279 100644 --- a/tokio/Cargo.toml +++ b/tokio/Cargo.toml @@ -59,10 +59,11 @@ macros = ["tokio-macros"] net = ["dns", "tcp", "udp", "uds"] process = [ "io-driver", + "lazy_static", "libc", "mio-named-pipes", - "signal", - "winapi/consoleapi", + "mio-uds", + "signal-hook-registry", "winapi/threadpoollegacyapiset", ] # Includes basic task execution capabilities diff --git a/tokio/src/lib.rs b/tokio/src/lib.rs index f057cedc..4fe82cf2 100644 --- a/tokio/src/lib.rs +++ b/tokio/src/lib.rs @@ -372,6 +372,13 @@ cfg_signal! { pub mod signal; } +cfg_signal_internal! { + #[cfg(not(feature = "signal"))] + #[allow(dead_code)] + #[allow(unreachable_pub)] + pub(crate) mod signal; +} + cfg_stream! { pub mod stream; } diff --git a/tokio/src/macros/cfg.rs b/tokio/src/macros/cfg.rs index 1336c63d..aa8dd675 100644 --- a/tokio/src/macros/cfg.rs +++ b/tokio/src/macros/cfg.rs @@ -223,6 +223,25 @@ macro_rules! cfg_signal { } } +macro_rules! cfg_signal_internal { + ($($item:item)*) => { + $( + #[cfg(any(feature = "signal", all(unix, feature = "process")))] + #[cfg(not(loom))] + $item + )* + } +} + +macro_rules! cfg_not_signal_internal { + ($($item:item)*) => { + $( + #[cfg(any(loom, not(unix), not(any(feature = "signal", all(unix, feature = "process")))))] + $item + )* + } +} + macro_rules! cfg_stream { ($($item:item)*) => { $( diff --git a/tokio/src/runtime/context.rs b/tokio/src/runtime/context.rs index 7498175f..a4f88e90 100644 --- a/tokio/src/runtime/context.rs +++ b/tokio/src/runtime/context.rs @@ -22,7 +22,7 @@ cfg_io_driver! { } } -cfg_signal! { +cfg_signal_internal! { #[cfg(unix)] pub(crate) fn signal_handle() -> crate::runtime::driver::SignalHandle { CONTEXT.with(|ctx| match *ctx.borrow() { diff --git a/tokio/src/runtime/driver.rs b/tokio/src/runtime/driver.rs index 2ea50890..148e0b16 100644 --- a/tokio/src/runtime/driver.rs +++ b/tokio/src/runtime/driver.rs @@ -38,26 +38,14 @@ cfg_not_io_driver! { } // ===== signal driver ===== - -macro_rules! cfg_unix_and_signal { - ($($item:item)*) => { - $( - #[cfg(all(not(loom), unix, feature = "signal"))] - $item - )* - } -} - -macro_rules! cfg_neither_unix_nor_windows { +macro_rules! cfg_signal_internal_and_unix { ($($item:item)*) => { - $( - #[cfg(any(loom, not(all(unix, feature = "signal"))))] - $item - )* + #[cfg(unix)] + cfg_signal_internal! { $($item)* } } } -cfg_unix_and_signal! { +cfg_signal_internal_and_unix! { type SignalDriver = crate::park::Either<crate::signal::unix::driver::Driver, IoDriver>; pub(crate) type SignalHandle = Option<crate::signal::unix::driver::Handle>; @@ -76,7 +64,7 @@ cfg_unix_and_signal! { } } -cfg_neither_unix_nor_windows! { +cfg_not_signal_internal! { type SignalDriver = IoDriver; pub(crate) type SignalHandle = (); diff --git a/tokio/src/signal/windows.rs b/tokio/src/signal/windows.rs index b3f495b6..f638eed8 100644 --- a/tokio/src/signal/windows.rs +++ b/tokio/src/signal/windows.rs @@ -14,9 +14,9 @@ use std::convert::TryFrom; use std::io; use std::sync::Once; use std::task::{Context, Poll}; -use winapi::shared::minwindef::*; +use winapi::shared::minwindef::{BOOL, DWORD, FALSE, TRUE}; use winapi::um::consoleapi::SetConsoleCtrlHandler; -use winapi::um::wincon::*; +use winapi::um::wincon::{CTRL_BREAK_EVENT, CTRL_C_EVENT}; #[derive(Debug)] pub(crate) struct OsStorage { diff --git a/tokio/src/sync/mod.rs b/tokio/src/sync/mod.rs index 88cc4b84..4c069467 100644 --- a/tokio/src/sync/mod.rs +++ b/tokio/src/sync/mod.rs @@ -471,7 +471,7 @@ cfg_not_sync! { feature = "signal"))] pub(crate) mod oneshot; - cfg_signal! { + cfg_signal_internal! { pub(crate) mod mpsc; pub(crate) mod semaphore_ll; } |