add executer tracing for debug
This commit is contained in:
+66
@@ -12,3 +12,69 @@ pub mod navigation;
|
||||
pub mod network;
|
||||
pub mod peripherals;
|
||||
pub mod views;
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn _embassy_trace_poll_start(executor_id: u32) {}
|
||||
|
||||
/// This callback is called AFTER a task is initialized/allocated, and BEFORE
|
||||
/// it is enqueued to run for the first time. If the task ends (and does not
|
||||
/// loop "forever"), there will be a matching call to `_embassy_trace_task_end`.
|
||||
///
|
||||
/// Tasks start life in the SPAWNED state.
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn _embassy_trace_task_new(executor_id: u32, task_id: u32) {
|
||||
log::debug!("Started new task on executer 0x{executor_id:x} with id 0x{task_id:x}")
|
||||
}
|
||||
|
||||
/// This callback is called AFTER a task is destructed/freed. This will always
|
||||
/// have a prior matching call to `_embassy_trace_task_new`.
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn _embassy_trace_task_end(executor_id: u32, task_id: u32) {
|
||||
log::debug!("Ended task on executer 0x{executor_id:x} with id 0x{task_id:x}")
|
||||
}
|
||||
|
||||
/// This callback is called AFTER a task has been dequeued from the runqueue,
|
||||
/// and BEFORE the task is polled. There will always be a matching call to
|
||||
/// `_embassy_trace_task_exec_end`.
|
||||
///
|
||||
/// This marks the TASK state transition from WAITING -> RUNNING
|
||||
/// This marks the EXECUTOR state transition from SCHEDULING -> POLLING
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn _embassy_trace_task_exec_begin(executor_id: u32, task_id: u32) {}
|
||||
|
||||
/// This callback is called AFTER a task has completed polling. There will
|
||||
/// always be a matching call to `_embassy_trace_task_exec_begin`.
|
||||
///
|
||||
/// This marks the TASK state transition from either:
|
||||
/// * RUNNING -> IDLE - if there were no `_embassy_trace_task_ready_begin` events
|
||||
/// for this task since the last `_embassy_trace_task_exec_begin` for THIS task
|
||||
/// * RUNNING -> WAITING - if there WAS a `_embassy_trace_task_ready_begin` event
|
||||
/// for this task since the last `_embassy_trace_task_exec_begin` for THIS task
|
||||
///
|
||||
/// This marks the EXECUTOR state transition from POLLING -> SCHEDULING
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn _embassy_trace_task_exec_end(excutor_id: u32, task_id: u32) {}
|
||||
|
||||
/// This callback is called AFTER the waker for a task is awoken, and BEFORE it
|
||||
/// is added to the run queue.
|
||||
///
|
||||
/// If the given task is currently RUNNING, this marks no state change, BUT the
|
||||
/// RUNNING task will then move to the WAITING stage when polling is complete.
|
||||
///
|
||||
/// If the given task is currently IDLE, this marks the TASK state transition
|
||||
/// from IDLE -> WAITING.
|
||||
///
|
||||
/// NOTE: This may be called from an interrupt, outside the contpub ext of the current
|
||||
/// task or executor.
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn _embassy_trace_task_ready_begin(executor_id: u32, task_id: u32) {}
|
||||
|
||||
/// This callback is called AFTER all dequeued tasks in a single call to poll
|
||||
/// have been processed. This will always be paired with a call to
|
||||
/// `_embassy_trace_executor_idle`.
|
||||
///
|
||||
///
|
||||
/// This marks the EXECUTOR state transition from SCHEDULING -> IDLE
|
||||
///
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn _embassy_trace_executor_idle(executor_id: u32) {}
|
||||
|
||||
Reference in New Issue
Block a user