aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Smith <[email protected]>2022-08-16 00:42:08 -0400
committerQuentin Smith <[email protected]>2022-08-16 00:42:08 -0400
commit0bf178dd1b11d97f20cb93c5fdb0c779259be0f8 (patch)
tree4a6e4ef6cfad569e1491e1e81f505a0b9fa3fb58
parent145af0e4ab75d931cba401f1755f383bcc713892 (diff)
Add separate feature flag to enable interrupt tracing
-rw-r--r--embassy-executor/Cargo.toml3
-rw-r--r--embassy-executor/src/lib.rs12
-rw-r--r--embassy-macros/src/macros/cortex_m_interrupt_take.rs4
3 files changed, 11 insertions, 8 deletions
diff --git a/embassy-executor/Cargo.toml b/embassy-executor/Cargo.toml
index d10752b3e..ca00f2e71 100644
--- a/embassy-executor/Cargo.toml
+++ b/embassy-executor/Cargo.toml
@@ -50,6 +50,9 @@ time-tick-1000hz = ["time"]
50time-tick-1mhz = ["time"] 50time-tick-1mhz = ["time"]
51time-tick-16mhz = ["time"] 51time-tick-16mhz = ["time"]
52 52
53# Trace interrupt invocations with rtos-trace.
54rtos-trace-interrupt = ["rtos-trace"]
55
53[dependencies] 56[dependencies]
54defmt = { version = "0.3", optional = true } 57defmt = { version = "0.3", optional = true }
55log = { version = "0.4.14", optional = true } 58log = { version = "0.4.14", optional = true }
diff --git a/embassy-executor/src/lib.rs b/embassy-executor/src/lib.rs
index 32724c15c..47c0c1d64 100644
--- a/embassy-executor/src/lib.rs
+++ b/embassy-executor/src/lib.rs
@@ -23,20 +23,20 @@ pub mod export {
23 pub use rtos_trace::trace; 23 pub use rtos_trace::trace;
24 24
25 /// Expands the given block of code when `embassy-executor` is compiled with 25 /// Expands the given block of code when `embassy-executor` is compiled with
26 /// the `rtos-trace` feature. 26 /// the `rtos-trace-interrupt` feature.
27 #[doc(hidden)] 27 #[doc(hidden)]
28 #[macro_export] 28 #[macro_export]
29 #[cfg(feature = "rtos-trace")] 29 #[cfg(feature = "rtos-trace-interrupt")]
30 macro_rules! rtos_trace { 30 macro_rules! rtos_trace_interrupt {
31 ($($tt:tt)*) => { $($tt)* }; 31 ($($tt:tt)*) => { $($tt)* };
32 } 32 }
33 33
34 /// Does not expand the given block of code when `embassy-executor` is 34 /// Does not expand the given block of code when `embassy-executor` is
35 /// compiled without the `rtos-trace` feature. 35 /// compiled without the `rtos-trace-interrupt` feature.
36 #[doc(hidden)] 36 #[doc(hidden)]
37 #[macro_export] 37 #[macro_export]
38 #[cfg(not(feature = "rtos-trace"))] 38 #[cfg(not(feature = "rtos-trace-interrupt"))]
39 macro_rules! rtos_trace { 39 macro_rules! rtos_trace_interrupt {
40 ($($tt:tt)*) => {}; 40 ($($tt:tt)*) => {};
41 } 41 }
42} 42}
diff --git a/embassy-macros/src/macros/cortex_m_interrupt_take.rs b/embassy-macros/src/macros/cortex_m_interrupt_take.rs
index 5431704da..62249807e 100644
--- a/embassy-macros/src/macros/cortex_m_interrupt_take.rs
+++ b/embassy-macros/src/macros/cortex_m_interrupt_take.rs
@@ -19,11 +19,11 @@ pub fn run(name: syn::Ident) -> Result<TokenStream, TokenStream> {
19 let func = HANDLER.func.load(::embassy_executor::export::atomic::Ordering::Relaxed); 19 let func = HANDLER.func.load(::embassy_executor::export::atomic::Ordering::Relaxed);
20 let ctx = HANDLER.ctx.load(::embassy_executor::export::atomic::Ordering::Relaxed); 20 let ctx = HANDLER.ctx.load(::embassy_executor::export::atomic::Ordering::Relaxed);
21 let func: fn(*mut ()) = ::core::mem::transmute(func); 21 let func: fn(*mut ()) = ::core::mem::transmute(func);
22 ::embassy_executor::rtos_trace! { 22 ::embassy_executor::rtos_trace_interrupt! {
23 ::embassy_executor::export::trace::isr_enter(); 23 ::embassy_executor::export::trace::isr_enter();
24 } 24 }
25 func(ctx); 25 func(ctx);
26 ::embassy_executor::rtos_trace! { 26 ::embassy_executor::rtos_trace_interrupt! {
27 ::embassy_executor::export::trace::isr_exit(); 27 ::embassy_executor::export::trace::isr_exit();
28 } 28 }
29 } 29 }