diff --git a/src/context/switch.rs b/src/context/switch.rs index bbdc8ad447d853658f0ec197b662728bb514b89c..60cd46bad6c5904402abf7eb0af87a37b0460881 100644 --- a/src/context/switch.rs +++ b/src/context/switch.rs @@ -45,6 +45,7 @@ pub unsafe fn switch() -> bool { let current = arch::time::monotonic(); if current.0 > wake.0 || (current.0 == wake.0 && current.1 >= wake.1) { + context.wake = None; context.unblock(); } } diff --git a/src/sync/wait_condition.rs b/src/sync/wait_condition.rs index cb170265d8237b5ef845657cf0c1ea1c29187eb6..d48af9d67a250f10c42dcbb2b50db4fe6c86c354 100644 --- a/src/sync/wait_condition.rs +++ b/src/sync/wait_condition.rs @@ -12,7 +12,7 @@ pub struct WaitCondition { impl WaitCondition { pub fn new() -> WaitCondition { WaitCondition { - contexts: Mutex::new(Vec::with_capacity(16)) + contexts: Mutex::new(Vec::new()) } }