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
This commit is contained in:
Ivan Petkov 2020-09-24 10:51:46 -07:00 committed by GitHub
parent 4dfbdbff7e
commit a1d0681cd2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 23 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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)*) => {
$(

View File

@ -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() {

View File

@ -38,26 +38,14 @@ cfg_not_io_driver! {
}
// ===== signal driver =====
macro_rules! cfg_unix_and_signal {
macro_rules! cfg_signal_internal_and_unix {
($($item:item)*) => {
$(
#[cfg(all(not(loom), unix, feature = "signal"))]
$item
)*
#[cfg(unix)]
cfg_signal_internal! { $($item)* }
}
}
macro_rules! cfg_neither_unix_nor_windows {
($($item:item)*) => {
$(
#[cfg(any(loom, not(all(unix, feature = "signal"))))]
$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 = ();

View File

@ -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 {

View File

@ -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;
}