aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-executor/src/raw/mod.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/embassy-executor/src/raw/mod.rs b/embassy-executor/src/raw/mod.rs
index 10a154a9f..183c5e6a2 100644
--- a/embassy-executor/src/raw/mod.rs
+++ b/embassy-executor/src/raw/mod.rs
@@ -444,14 +444,10 @@ impl Executor {
444 } 444 }
445} 445}
446 446
447/// Wake a task by raw pointer. 447/// Wake a task by `TaskRef`.
448/// 448///
449/// You can obtain task pointers from `Waker`s using [`task_from_waker`]. 449/// You can obtain a `TaskRef` from a `Waker` using [`task_from_waker`].
450/// 450pub fn wake_task(task: TaskRef) {
451/// # Safety
452///
453/// `task` must be a valid task pointer obtained from [`task_from_waker`].
454pub unsafe fn wake_task(task: TaskRef) {
455 critical_section::with(|cs| { 451 critical_section::with(|cs| {
456 let header = task.header(); 452 let header = task.header();
457 let state = header.state.load(Ordering::Relaxed); 453 let state = header.state.load(Ordering::Relaxed);
@@ -465,8 +461,10 @@ pub unsafe fn wake_task(task: TaskRef) {
465 header.state.store(state | STATE_RUN_QUEUED, Ordering::Relaxed); 461 header.state.store(state | STATE_RUN_QUEUED, Ordering::Relaxed);
466 462
467 // We have just marked the task as scheduled, so enqueue it. 463 // We have just marked the task as scheduled, so enqueue it.
468 let executor = &*header.executor.get(); 464 unsafe {
469 executor.enqueue(cs, task); 465 let executor = &*header.executor.get();
466 executor.enqueue(cs, task);
467 }
470 }) 468 })
471} 469}
472 470