Tracing: Timer tracing
Add Timer tracing, default tracing hooks, and documentation. Signed-off-by: Torbjörn Leksell <torbjorn.leksell@percepio.com>
This commit is contained in:
parent
65b376eb87
commit
3a66d6c695
2 changed files with 67 additions and 0 deletions
|
@ -1465,6 +1465,58 @@
|
|||
*/ /* end of mslab_tracing_apis */
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Timer Tracing APIs
|
||||
* @defgroup timer_tracing_apis Timer Tracing APIs
|
||||
* @ingroup tracing_apis
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Trace initialization of Timer
|
||||
* @param timer Timer object
|
||||
*/
|
||||
#define sys_port_trace_k_timer_init(timer)
|
||||
|
||||
/**
|
||||
* @brief Trace Timer start
|
||||
* @param timer Timer object
|
||||
*/
|
||||
#define sys_port_trace_k_timer_start(timer)
|
||||
|
||||
/**
|
||||
* @brief Trace Timer stop
|
||||
* @param timer Timer object
|
||||
*/
|
||||
#define sys_port_trace_k_timer_stop(timer)
|
||||
|
||||
/**
|
||||
* @brief Trace Timer status sync entry
|
||||
* @param timer Timer object
|
||||
*/
|
||||
#define sys_port_trace_k_timer_status_sync_enter(timer)
|
||||
|
||||
/**
|
||||
* @brief Trace Timer Status sync blocking
|
||||
* @param timer Timer object
|
||||
* @param timeout Timeout period
|
||||
*/
|
||||
#define sys_port_trace_k_timer_status_sync_blocking(timer, timeout)
|
||||
|
||||
/**
|
||||
* @brief Trace Time Status sync outcome
|
||||
* @param timer Timer object
|
||||
* @param result Return value
|
||||
*/
|
||||
#define sys_port_trace_k_timer_status_sync_exit(timer, result)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/ /* end of timer_tracing_apis */
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -105,6 +105,9 @@ void k_timer_init(struct k_timer *timer,
|
|||
}
|
||||
|
||||
z_init_timeout(&timer->timeout);
|
||||
|
||||
SYS_PORT_TRACING_OBJ_INIT(k_timer, timer);
|
||||
|
||||
SYS_TRACING_OBJ_INIT(k_timer, timer);
|
||||
|
||||
timer->user_data = NULL;
|
||||
|
@ -116,6 +119,8 @@ void k_timer_init(struct k_timer *timer,
|
|||
void z_impl_k_timer_start(struct k_timer *timer, k_timeout_t duration,
|
||||
k_timeout_t period)
|
||||
{
|
||||
SYS_PORT_TRACING_OBJ_FUNC(k_timer, start, timer);
|
||||
|
||||
if (K_TIMEOUT_EQ(duration, K_FOREVER)) {
|
||||
return;
|
||||
}
|
||||
|
@ -162,6 +167,8 @@ static inline void z_vrfy_k_timer_start(struct k_timer *timer,
|
|||
|
||||
void z_impl_k_timer_stop(struct k_timer *timer)
|
||||
{
|
||||
SYS_PORT_TRACING_OBJ_FUNC(k_timer, stop, timer);
|
||||
|
||||
int inactive = z_abort_timeout(&timer->timeout) != 0;
|
||||
|
||||
if (inactive) {
|
||||
|
@ -214,6 +221,7 @@ static inline uint32_t z_vrfy_k_timer_status_get(struct k_timer *timer)
|
|||
uint32_t z_impl_k_timer_status_sync(struct k_timer *timer)
|
||||
{
|
||||
__ASSERT(!arch_is_in_isr(), "");
|
||||
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_timer, status_sync, timer);
|
||||
|
||||
if (!IS_ENABLED(CONFIG_MULTITHREADING)) {
|
||||
uint32_t result;
|
||||
|
@ -243,6 +251,8 @@ uint32_t z_impl_k_timer_status_sync(struct k_timer *timer)
|
|||
|
||||
if (result == 0U) {
|
||||
if (!z_is_inactive_timeout(&timer->timeout)) {
|
||||
SYS_PORT_TRACING_OBJ_FUNC_BLOCKING(k_timer, status_sync, timer, K_FOREVER);
|
||||
|
||||
/* wait for timer to expire or stop */
|
||||
(void)z_pend_curr(&lock, key, &timer->wait_q, K_FOREVER);
|
||||
|
||||
|
@ -259,6 +269,11 @@ uint32_t z_impl_k_timer_status_sync(struct k_timer *timer)
|
|||
timer->status = 0U;
|
||||
k_spin_unlock(&lock, key);
|
||||
|
||||
/**
|
||||
* @note New tracing hook
|
||||
*/
|
||||
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_timer, status_sync, timer, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue