From ba5a75cd7d0b97bafd02d3b95baf40fd36522fac Mon Sep 17 00:00:00 2001 From: Florian Grandel Date: Sat, 5 Jul 2025 18:25:53 +0200 Subject: executor: rtos-trace: name main task Assigns a name to the main task when (rtos-)tracing is active. This improves tracing usability with the SystemView backend. Signed-off-by: Florian Grandel --- embassy-executor-macros/src/macros/main.rs | 16 ++++++++++++++-- embassy-executor/CHANGELOG.md | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/embassy-executor-macros/src/macros/main.rs b/embassy-executor-macros/src/macros/main.rs index fcc04d9c0..f043ff7f6 100644 --- a/embassy-executor-macros/src/macros/main.rs +++ b/embassy-executor-macros/src/macros/main.rs @@ -170,6 +170,14 @@ For example: `#[embassy_executor::main(entry = ..., executor = \"some_crate::Exe let f_body = f.body; let out = &f.sig.output; + let name_main_task = if cfg!(feature = "rtos-trace") { + quote!( + main_task.metadata().set_name("main\0"); + ) + } else { + quote!() + }; + let (main_ret, mut main_body) = match arch.flavor { Flavor::Standard => ( quote!(!), @@ -181,7 +189,9 @@ For example: `#[embassy_executor::main(entry = ..., executor = \"some_crate::Exe let mut executor = #executor::new(); let executor = unsafe { __make_static(&mut executor) }; executor.run(|spawner| { - spawner.spawn(__embassy_main(spawner).unwrap()); + let main_task = __embassy_main(spawner).unwrap(); + #name_main_task + spawner.spawn(main_task); }) }, ), @@ -191,7 +201,9 @@ For example: `#[embassy_executor::main(entry = ..., executor = \"some_crate::Exe let executor = ::std::boxed::Box::leak(::std::boxed::Box::new(#executor::new())); executor.start(|spawner| { - spawner.spawn(__embassy_main(spawner).unwrap()); + let main_task = __embassy_main(spawner).unwrap(); + #name_main_task + spawner.spawn(main_task); }); Ok(()) diff --git a/embassy-executor/CHANGELOG.md b/embassy-executor/CHANGELOG.md index f2db46ef9..999c77a83 100644 --- a/embassy-executor/CHANGELOG.md +++ b/embassy-executor/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased - ReleaseDate - Added new metadata API for tasks +- Named main task when rtos-trace feature is enabled. ## 0.9.0 - 2025-08-26 -- cgit