aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor/src/raw/deadline.rs
diff options
context:
space:
mode:
authordiondokter <[email protected]>2025-08-29 14:36:17 +0200
committerDario Nieuwenhuis <[email protected]>2025-09-11 14:45:27 +0200
commit52d178560501a464dba67da89a1570ae9a2cf66c (patch)
tree285b11fe4f91a77789f649377e431414e43f7ac2 /embassy-executor/src/raw/deadline.rs
parentd6d4df1c768f8ae43ad1339b74d351f4cbad0386 (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.rs18
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 })