Crate rtos_trace
source · [−]Expand description
Set of traits used to trace RTOS internals.
Features
trace_impl
: Activates tracing function (on by default). Can be used by the RTOS to deactivate tracing.
Implementation
The backend is required implement RtosTrace
.
Existing implementation:
Usage
RTOS
The RTOS can implement RtosTraceOSCallbacks
to provide additional
information upon request from the tracing software. For example:
rtos_trace::global_os_callbacks!{Scheduler}
impl rtos_trace::RtosTraceOSCallbacks for Scheduler {
fn task_list() {
/*..*/
for task in tasks.iter() {
trace::task_send_info(task.id(), task.info());
}
}
/*..*/
}
Usage for the RTOS maintainer is simple:
use rtos_trace::{RtosTrace, trace}
pub fn spawn_task(/*..*/) {
/*..*/
trace::task_new(task_id);
}
Application
Similar to a global logger the user must provide a tracing backend, i.e.:
use systemview_target::SystemView;
rtos_trace::global_trace!{SystemView}
The user can implement RtosTraceApplicationCallbacks
to provide
additional information upon request from the tracing software. For example:
struct Application;
rtos_trace::global_application_callbacks!{Application}
impl rtos_trace::RtosTraceApplicationCallbacks for Application {
fn system_description() {
systemview_target::send_system_desc_app_name!("Espresso Machine");
systemview_target::send_system_desc_device!("STM32F769NI");
systemview_target::send_system_desc_core!("Cortex-M7");
systemview_target::send_system_desc_os!("Bern RTOS");
systemview_target::send_system_desc_interrupt!(15, "SysTick");
}
/*..*/
}
Modules
Macros
Structs
Task info block.
Traits
Collection of tracing functions which are called by the RTOS.
Callbacks to the application invoked by the tracing system. This trait can be implemented by user.
Callbacks to the OS invoked by the tracing system. This trait can be implemented in the RTOS.