aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor/src/raw
diff options
context:
space:
mode:
authorTyler Gilbert <[email protected]>2023-09-29 21:08:21 -0500
committerTyler Gilbert <[email protected]>2023-09-29 21:08:21 -0500
commit2addfc4b86621f1012441a8cea07d69cb6d42edc (patch)
treec4a9122a5f2ede4fd8762a6f00c33b961c24a893 /embassy-executor/src/raw
parent92df87781d6a0f0e85753d3d58c6594846bb2f0b (diff)
parenta35d149cb151d53fd95b5073cef927116b34fe0d (diff)
Merge branch 'issue-1974-add-sai-driver' of https://github.com/tyler-gilbert/embassy into issue-1974-add-sai-driver
Diffstat (limited to 'embassy-executor/src/raw')
-rw-r--r--embassy-executor/src/raw/mod.rs2
-rw-r--r--embassy-executor/src/raw/util.rs5
2 files changed, 4 insertions, 3 deletions
diff --git a/embassy-executor/src/raw/mod.rs b/embassy-executor/src/raw/mod.rs
index c1d82e18a..6d2c1c18a 100644
--- a/embassy-executor/src/raw/mod.rs
+++ b/embassy-executor/src/raw/mod.rs
@@ -203,7 +203,7 @@ impl<F: Future + 'static> AvailableTask<F> {
203 fn initialize_impl<S>(self, future: impl FnOnce() -> F) -> SpawnToken<S> { 203 fn initialize_impl<S>(self, future: impl FnOnce() -> F) -> SpawnToken<S> {
204 unsafe { 204 unsafe {
205 self.task.raw.poll_fn.set(Some(TaskStorage::<F>::poll)); 205 self.task.raw.poll_fn.set(Some(TaskStorage::<F>::poll));
206 self.task.future.write(future()); 206 self.task.future.write_in_place(future);
207 207
208 let task = TaskRef::new(self.task); 208 let task = TaskRef::new(self.task);
209 209
diff --git a/embassy-executor/src/raw/util.rs b/embassy-executor/src/raw/util.rs
index e2e8f4df8..c46085e45 100644
--- a/embassy-executor/src/raw/util.rs
+++ b/embassy-executor/src/raw/util.rs
@@ -17,8 +17,9 @@ impl<T> UninitCell<T> {
17 &mut *self.as_mut_ptr() 17 &mut *self.as_mut_ptr()
18 } 18 }
19 19
20 pub unsafe fn write(&self, val: T) { 20 #[inline(never)]
21 ptr::write(self.as_mut_ptr(), val) 21 pub unsafe fn write_in_place(&self, func: impl FnOnce() -> T) {
22 ptr::write(self.as_mut_ptr(), func())
22 } 23 }
23 24
24 pub unsafe fn drop_in_place(&self) { 25 pub unsafe fn drop_in_place(&self) {