rt: keep driver cfgs in driver.rs (#5141)

This patch removes driver related cfg_* macro calls from `scheduler` in
favor of keeping it in the driver module.
This commit is contained in:
Carl Lerche
2022-10-28 13:04:09 -07:00
committed by GitHub
parent 121f839b4b
commit 7483509746
7 changed files with 24 additions and 38 deletions
+6
View File
@@ -109,6 +109,12 @@ impl Handle {
.as_ref()
.expect("A Tokio 1.x context was found, but timers are disabled. Call `enable_time` on the runtime builder to enable timers.")
}
cfg_test_util! {
pub(crate) fn clock(&self) -> &Clock {
&self.clock
}
}
}
}
+2 -2
View File
@@ -73,7 +73,7 @@ impl Registration {
interest: Interest,
handle: scheduler::Handle,
) -> io::Result<Registration> {
let shared = handle.io().add_source(io, interest)?;
let shared = handle.driver().io().add_source(io, interest)?;
Ok(Registration { handle, shared })
}
@@ -199,7 +199,7 @@ impl Registration {
}
fn handle(&self) -> &Handle {
self.handle.io()
self.handle.driver().io()
}
}
-20
View File
@@ -39,26 +39,6 @@ impl Handle {
Handle::Disabled => unreachable!(),
}
}
cfg_io_driver! {
#[track_caller]
pub(crate) fn io(&self) -> &crate::runtime::io::Handle {
self.driver().io()
}
}
cfg_time! {
#[track_caller]
pub(crate) fn time(&self) -> &crate::runtime::time::Handle {
self.driver().time()
}
cfg_test_util! {
pub(crate) fn clock(&self) -> &driver::Clock {
&self.driver().clock
}
}
}
}
cfg_rt! {
+2 -2
View File
@@ -497,7 +497,7 @@ impl TimerEntry {
#[track_caller]
pub(crate) fn new(handle: &scheduler::Handle, deadline: Instant) -> Self {
// Panic if the time driver is not enabled
let _ = handle.time();
let _ = handle.driver().time();
let driver = handle.clone();
@@ -577,7 +577,7 @@ impl TimerEntry {
}
pub(crate) fn driver(&self) -> &super::Handle {
self.driver.time()
self.driver.driver().time()
}
}
+12 -12
View File
@@ -50,7 +50,7 @@ fn single_timer() {
let jh = thread::spawn(move || {
let entry = TimerEntry::new(
&handle_.inner,
handle_.inner.clock().now() + Duration::from_secs(1),
handle_.inner.driver().clock().now() + Duration::from_secs(1),
);
pin!(entry);
@@ -62,7 +62,7 @@ fn single_timer() {
thread::yield_now();
let handle = handle.inner.time();
let handle = handle.inner.driver().time();
// This may or may not return Some (depending on how it races with the
// thread). If it does return None, however, the timer should complete
@@ -83,7 +83,7 @@ fn drop_timer() {
let jh = thread::spawn(move || {
let entry = TimerEntry::new(
&handle_.inner,
handle_.inner.clock().now() + Duration::from_secs(1),
handle_.inner.driver().clock().now() + Duration::from_secs(1),
);
pin!(entry);
@@ -97,7 +97,7 @@ fn drop_timer() {
thread::yield_now();
let handle = handle.inner.time();
let handle = handle.inner.driver().time();
// advance 2s in the future.
handle.process_at_time(handle.time_source().now() + 2_000_000_000);
@@ -116,7 +116,7 @@ fn change_waker() {
let jh = thread::spawn(move || {
let entry = TimerEntry::new(
&handle_.inner,
handle_.inner.clock().now() + Duration::from_secs(1),
handle_.inner.driver().clock().now() + Duration::from_secs(1),
);
pin!(entry);
@@ -132,7 +132,7 @@ fn change_waker() {
thread::yield_now();
let handle = handle.inner.time();
let handle = handle.inner.driver().time();
// advance 2s
handle.process_at_time(handle.time_source().now() + 2_000_000_000);
@@ -151,7 +151,7 @@ fn reset_future() {
let handle_ = handle.clone();
let finished_early_ = finished_early.clone();
let start = handle.inner.clock().now();
let start = handle.inner.driver().clock().now();
let jh = thread::spawn(move || {
let entry = TimerEntry::new(&handle_.inner, start + Duration::from_secs(1));
@@ -174,7 +174,7 @@ fn reset_future() {
thread::yield_now();
let handle = handle.inner.time();
let handle = handle.inner.driver().time();
// This may or may not return a wakeup time.
handle.process_at_time(
@@ -217,7 +217,7 @@ fn poll_process_levels() {
for i in 0..normal_or_miri(1024, 64) {
let mut entry = Box::pin(TimerEntry::new(
&handle.inner,
handle.inner.clock().now() + Duration::from_millis(i),
handle.inner.driver().clock().now() + Duration::from_millis(i),
));
let _ = entry
@@ -228,7 +228,7 @@ fn poll_process_levels() {
}
for t in 1..normal_or_miri(1024, 64) {
handle.inner.time().process_at_time(t as u64);
handle.inner.driver().time().process_at_time(t as u64);
for (deadline, future) in entries.iter_mut().enumerate() {
let mut context = Context::from_waker(noop_waker_ref());
@@ -251,11 +251,11 @@ fn poll_process_levels_targeted() {
let e1 = TimerEntry::new(
&handle.inner,
handle.inner.clock().now() + Duration::from_millis(193),
handle.inner.driver().clock().now() + Duration::from_millis(193),
);
pin!(e1);
let handle = handle.inner.time();
let handle = handle.inner.driver().time();
handle.process_at_time(62);
assert!(e1.as_mut().poll_elapsed(&mut context).is_pending());
+1 -1
View File
@@ -36,7 +36,7 @@ cfg_test_util! {
use crate::runtime::Handle;
match Handle::try_current() {
Ok(handle) => Some(handle.inner.clock().clone()),
Ok(handle) => Some(handle.inner.driver().clock().clone()),
Err(ref e) if e.is_missing_context() => None,
Err(_) => panic!("{}", crate::util::error::THREAD_LOCAL_DESTROYED_ERROR),
}
+1 -1
View File
@@ -261,7 +261,7 @@ impl Sleep {
#[cfg(all(tokio_unstable, feature = "tracing"))]
let inner = {
let handle = &handle.time();
let handle = &handle.driver().time();
let time_source = handle.time_source();
let deadline_tick = time_source.deadline_to_tick(deadline);
let duration = deadline_tick.saturating_sub(time_source.now());