diff options
| author | diondokter <[email protected]> | 2025-08-29 14:36:17 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2025-09-11 14:45:27 +0200 |
| commit | 52d178560501a464dba67da89a1570ae9a2cf66c (patch) | |
| tree | 285b11fe4f91a77789f649377e431414e43f7ac2 /embassy-executor/src/raw/deadline.rs | |
| parent | d6d4df1c768f8ae43ad1339b74d351f4cbad0386 (diff) | |
Introduce metadata-deadline and let the EDF scheduler use it
Diffstat (limited to 'embassy-executor/src/raw/deadline.rs')
| -rw-r--r-- | embassy-executor/src/raw/deadline.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/embassy-executor/src/raw/deadline.rs b/embassy-executor/src/raw/deadline.rs index cbb379b82..5b585195d 100644 --- a/embassy-executor/src/raw/deadline.rs +++ b/embassy-executor/src/raw/deadline.rs | |||
| @@ -62,7 +62,7 @@ impl Deadline { | |||
| 62 | pub fn set_current_task_deadline(instant_ticks: u64) -> impl Future<Output = ()> { | 62 | pub fn set_current_task_deadline(instant_ticks: u64) -> impl Future<Output = ()> { |
| 63 | poll_fn(move |cx| { | 63 | poll_fn(move |cx| { |
| 64 | let task = super::task_from_waker(cx.waker()); | 64 | let task = super::task_from_waker(cx.waker()); |
| 65 | task.header().deadline.set(instant_ticks); | 65 | task.header().metadata.deadline().set(instant_ticks); |
| 66 | Poll::Ready(()) | 66 | Poll::Ready(()) |
| 67 | }) | 67 | }) |
| 68 | } | 68 | } |
| @@ -87,7 +87,7 @@ impl Deadline { | |||
| 87 | // reasons later. | 87 | // reasons later. |
| 88 | let deadline = now.saturating_add(duration_ticks); | 88 | let deadline = now.saturating_add(duration_ticks); |
| 89 | 89 | ||
| 90 | task.header().deadline.set(deadline); | 90 | task.header().metadata.deadline().set(deadline); |
| 91 | 91 | ||
| 92 | Poll::Ready(Deadline::new(deadline)) | 92 | Poll::Ready(Deadline::new(deadline)) |
| 93 | }) | 93 | }) |
| @@ -109,10 +109,10 @@ impl Deadline { | |||
| 109 | #[must_use = "Setting deadline must be polled to be effective"] | 109 | #[must_use = "Setting deadline must be polled to be effective"] |
| 110 | pub fn increment_current_task_deadline(increment_ticks: u64) -> impl Future<Output = Deadline> { | 110 | pub fn increment_current_task_deadline(increment_ticks: u64) -> impl Future<Output = Deadline> { |
| 111 | poll_fn(move |cx| { | 111 | poll_fn(move |cx| { |
| 112 | let task = super::task_from_waker(cx.waker()); | 112 | let task_header = super::task_from_waker(cx.waker()).header(); |
| 113 | 113 | ||
| 114 | // Get the last value | 114 | // Get the last value |
| 115 | let last = task.header().deadline.instant_ticks(); | 115 | let last = task_header.metadata.deadline().instant_ticks(); |
| 116 | 116 | ||
| 117 | // Since ticks is a u64, saturating add is PROBABLY overly cautious, leave | 117 | // Since ticks is a u64, saturating add is PROBABLY overly cautious, leave |
| 118 | // it for now, we can probably make this wrapping_add for performance | 118 | // it for now, we can probably make this wrapping_add for performance |
| @@ -120,7 +120,7 @@ impl Deadline { | |||
| 120 | let deadline = last.saturating_add(increment_ticks); | 120 | let deadline = last.saturating_add(increment_ticks); |
| 121 | 121 | ||
| 122 | // Store the new value | 122 | // Store the new value |
| 123 | task.header().deadline.set(deadline); | 123 | task_header.metadata.deadline().set(deadline); |
| 124 | 124 | ||
| 125 | Poll::Ready(Deadline::new(deadline)) | 125 | Poll::Ready(Deadline::new(deadline)) |
| 126 | }) | 126 | }) |
| @@ -134,7 +134,7 @@ impl Deadline { | |||
| 134 | poll_fn(move |cx| { | 134 | poll_fn(move |cx| { |
| 135 | let task = super::task_from_waker(cx.waker()); | 135 | let task = super::task_from_waker(cx.waker()); |
| 136 | 136 | ||
| 137 | let deadline = task.header().deadline.instant_ticks(); | 137 | let deadline = task.header().metadata.deadline().instant_ticks(); |
| 138 | Poll::Ready(Self::new(deadline)) | 138 | Poll::Ready(Self::new(deadline)) |
| 139 | }) | 139 | }) |
| 140 | } | 140 | } |
| @@ -146,12 +146,12 @@ impl Deadline { | |||
| 146 | #[must_use = "Clearing deadline must be polled to be effective"] | 146 | #[must_use = "Clearing deadline must be polled to be effective"] |
| 147 | pub fn clear_current_task_deadline() -> impl Future<Output = Self> { | 147 | pub fn clear_current_task_deadline() -> impl Future<Output = Self> { |
| 148 | poll_fn(move |cx| { | 148 | poll_fn(move |cx| { |
| 149 | let task = super::task_from_waker(cx.waker()); | 149 | let task_header = super::task_from_waker(cx.waker()).header(); |
| 150 | 150 | ||
| 151 | // get the old value | 151 | // get the old value |
| 152 | let deadline = task.header().deadline.instant_ticks(); | 152 | let deadline = task_header.metadata.deadline().instant_ticks(); |
| 153 | // Store the default value | 153 | // Store the default value |
| 154 | task.header().deadline.set(Self::UNSET_DEADLINE_TICKS); | 154 | task_header.metadata.deadline().set(Self::UNSET_DEADLINE_TICKS); |
| 155 | 155 | ||
| 156 | Poll::Ready(Self::new(deadline)) | 156 | Poll::Ready(Self::new(deadline)) |
| 157 | }) | 157 | }) |
