From 4488ac0421b53ffa5b97e6dddd396cbdb52c6283 Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Wed, 3 Aug 2022 20:48:56 +0200 Subject: [PATCH] Revert async idle --- examples/async-idle.rs | 51 -------------------------------------- macros/src/codegen/idle.rs | 20 +++------------ 2 files changed, 4 insertions(+), 67 deletions(-) delete mode 100644 examples/async-idle.rs diff --git a/examples/async-idle.rs b/examples/async-idle.rs deleted file mode 100644 index 0161a2eca4..0000000000 --- a/examples/async-idle.rs +++ /dev/null @@ -1,51 +0,0 @@ -#![no_main] -#![no_std] -#![feature(type_alias_impl_trait)] - -use panic_semihosting as _; - -// NOTES: -// -// - Async tasks cannot have `#[lock_free]` resources, as they can interleve and each async -// task can have a mutable reference stored. -// - Spawning an async task equates to it being polled once. - -#[rtic::app(device = lm3s6965, dispatchers = [SSI0, UART0], peripherals = true)] -mod app { - use cortex_m_semihosting::{debug, hprintln}; - use systick_monotonic::*; - - #[shared] - struct Shared {} - - #[local] - struct Local {} - - #[monotonic(binds = SysTick, default = true)] - type MyMono = Systick<100>; - - #[init] - fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) { - hprintln!("init").unwrap(); - - ( - Shared {}, - Local {}, - init::Monotonics(Systick::new(cx.core.SYST, 12_000_000)), - ) - } - - #[idle] - async fn idle(_: idle::Context) -> ! { - hprintln!("idle"); - - for i in 0..2 { - monotonics::delay(100.millis()).await; - hprintln!("async delay {}").ok(); - } - - debug::exit(debug::EXIT_SUCCESS); - - loop {} - } -} diff --git a/macros/src/codegen/idle.rs b/macros/src/codegen/idle.rs index 64189a3287..83b85d7ba6 100644 --- a/macros/src/codegen/idle.rs +++ b/macros/src/codegen/idle.rs @@ -63,15 +63,10 @@ pub fn codegen( let attrs = &idle.attrs; let context = &idle.context; let stmts = &idle.stmts; - let async_ = if idle.is_async { - quote!(async) - } else { - quote!() - }; let user_idle = Some(quote!( #(#attrs)* #[allow(non_snake_case)] - #async_ fn #name(#context: #name::Context) -> ! { + fn #name(#context: #name::Context) -> ! { use rtic::Mutex as _; use rtic::mutex::prelude::*; @@ -79,16 +74,9 @@ pub fn codegen( } )); - let call_idle = if idle.is_async { - quote!( - let idle_task = #name(#name::Context::new(&rtic::export::Priority::new(0))); - rtic::export::idle_executor::IdleExecutor::new(idle_task).run(); - ) - } else { - quote!(#name( - #name::Context::new(&rtic::export::Priority::new(0)) - )) - }; + let call_idle = quote!(#name( + #name::Context::new(&rtic::export::Priority::new(0)) + )); (mod_app, root_idle, user_idle, call_idle) } else {