aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Grandel <[email protected]>2025-07-05 18:25:53 +0200
committerFlorian Grandel <[email protected]>2025-08-30 17:42:37 +0200
commitba5a75cd7d0b97bafd02d3b95baf40fd36522fac (patch)
treee6b836066900e5d95a40971aa15414b1430a3ad8
parentf86cf87f2f20f723e2ba2fe7d83908a2b3bac2d1 (diff)
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 <[email protected]>
-rw-r--r--embassy-executor-macros/src/macros/main.rs16
-rw-r--r--embassy-executor/CHANGELOG.md1
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
170 let f_body = f.body; 170 let f_body = f.body;
171 let out = &f.sig.output; 171 let out = &f.sig.output;
172 172
173 let name_main_task = if cfg!(feature = "rtos-trace") {
174 quote!(
175 main_task.metadata().set_name("main\0");
176 )
177 } else {
178 quote!()
179 };
180
173 let (main_ret, mut main_body) = match arch.flavor { 181 let (main_ret, mut main_body) = match arch.flavor {
174 Flavor::Standard => ( 182 Flavor::Standard => (
175 quote!(!), 183 quote!(!),
@@ -181,7 +189,9 @@ For example: `#[embassy_executor::main(entry = ..., executor = \"some_crate::Exe
181 let mut executor = #executor::new(); 189 let mut executor = #executor::new();
182 let executor = unsafe { __make_static(&mut executor) }; 190 let executor = unsafe { __make_static(&mut executor) };
183 executor.run(|spawner| { 191 executor.run(|spawner| {
184 spawner.spawn(__embassy_main(spawner).unwrap()); 192 let main_task = __embassy_main(spawner).unwrap();
193 #name_main_task
194 spawner.spawn(main_task);
185 }) 195 })
186 }, 196 },
187 ), 197 ),
@@ -191,7 +201,9 @@ For example: `#[embassy_executor::main(entry = ..., executor = \"some_crate::Exe
191 let executor = ::std::boxed::Box::leak(::std::boxed::Box::new(#executor::new())); 201 let executor = ::std::boxed::Box::leak(::std::boxed::Box::new(#executor::new()));
192 202
193 executor.start(|spawner| { 203 executor.start(|spawner| {
194 spawner.spawn(__embassy_main(spawner).unwrap()); 204 let main_task = __embassy_main(spawner).unwrap();
205 #name_main_task
206 spawner.spawn(main_task);
195 }); 207 });
196 208
197 Ok(()) 209 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
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11- Added new metadata API for tasks 11- Added new metadata API for tasks
12- Named main task when rtos-trace feature is enabled.
12 13
13## 0.9.0 - 2025-08-26 14## 0.9.0 - 2025-08-26
14 15