aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen/hardware_tasks.rs
diff options
context:
space:
mode:
authorGravatar bors[bot] <26634292+bors[bot]@users.noreply.github.com> 2021-04-08 08:15:05 +0000
committerGravatar GitHub <noreply@github.com> 2021-04-08 08:15:05 +0000
commit83cdf00eecb0f14857b5e0f28e884b2120eabb18 (patch)
tree17f732cbb06dd480bd0881d0ec627cc173ba5bfc /macros/src/codegen/hardware_tasks.rs
parent6c8257bb73de0f68072467447692a1f7dff555f9 (diff)
parent51500a1d7096395be9162599fae647ec121db91d (diff)
downloadrtic-83cdf00eecb0f14857b5e0f28e884b2120eabb18.tar.gz
rtic-83cdf00eecb0f14857b5e0f28e884b2120eabb18.tar.zst
rtic-83cdf00eecb0f14857b5e0f28e884b2120eabb18.zip
Merge #466
466: Fix for type aliases in `mod app`, UB in `spawn_at`, and `#[cfg]` in hardware tasks r=AfoHT a=korken89 Type aliases such as the following did not work in `0.6-alpha`: ```rust use rtic::app; #[app(device = lm3s6965, dispatchers = [SSI0])] mod app { type Test = u32; #[task] fn t1(_: t1::Context, _val: Test) {} } ``` Plus that accessing associated constants of monotonic timers was not working as it should dues to the syntax and codegen transforming: ```rust #[monotonic(binds = SysTick, default = true)] type MyMono = DwtSystick<8_000_000>; // 8 MHz ``` into ```rust mod MyMono { // ... } ``` causing the original `type MyMono` to not exist anymore. This PR fixes this and adds test to check for this by doing the following expansion instead: ```rust #[monotonic(binds = SysTick, default = true)] type MyMono = DwtSystick<8_000_000>; // 8 MHz ``` into ```rust type MyMono = DwtSystick<8_000_000>; mod monotonics { mod MyMono { // ... } // And other monotonics go here as well } ``` **Breaking change** This causes a breaking change in accessing the `MyMono::now()` method which now exists under `monotonics::MyMono::now()`. --- Moreover a UB issue was found and fixed in `spawn_at` and hardware tasks properly propagate `#[cfg]`s. Closes #460 Closes #462 Closes #463 Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
Diffstat (limited to 'macros/src/codegen/hardware_tasks.rs')
-rw-r--r--macros/src/codegen/hardware_tasks.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/macros/src/codegen/hardware_tasks.rs b/macros/src/codegen/hardware_tasks.rs
index 4a1d7492..540b95e5 100644
--- a/macros/src/codegen/hardware_tasks.rs
+++ b/macros/src/codegen/hardware_tasks.rs
@@ -37,12 +37,16 @@ pub fn codegen(
let symbol = task.args.binds.clone();
let priority = task.args.priority;
+ let cfgs = &task.cfgs;
+ let attrs = &task.attrs;
let app_name = &app.name;
let app_path = quote! {crate::#app_name};
mod_app.push(quote!(
#[allow(non_snake_case)]
#[no_mangle]
+ #(#attrs)*
+ #(#cfgs)*
unsafe fn #symbol() {
const PRIORITY: u8 = #priority;