From d765445b3be22fc4d97a0296220bff8fbdec5afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Leksell?= Date: Fri, 26 Mar 2021 12:21:24 +0100 Subject: [PATCH] Tracing: LIFO Tracing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add LIFO tracing hooks, default hooks, and documentation. Signed-off-by: Torbjörn Leksell --- include/kernel.h | 26 ++++++++++++--- include/tracing/tracing.h | 70 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 4 deletions(-) diff --git a/include/kernel.h b/include/kernel.h index d13e93866a3..36ffec910d7 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -2300,7 +2300,11 @@ struct k_lifo { * @return N/A */ #define k_lifo_init(lifo) \ - k_queue_init(&(lifo)->_queue) + ({ \ + SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_lifo, init, lifo); \ + k_queue_init(&(lifo)->_queue); \ + SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_lifo, init, lifo); \ + }) /** * @brief Add an element to a LIFO queue. @@ -2317,7 +2321,11 @@ struct k_lifo { * @return N/A */ #define k_lifo_put(lifo, data) \ - k_queue_prepend(&(lifo)->_queue, data) + ({ \ + SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_lifo, put, lifo, data); \ + k_queue_prepend(&(lifo)->_queue, data); \ + SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_lifo, put, lifo, data); \ + }) /** * @brief Add an element to a LIFO queue. @@ -2336,7 +2344,12 @@ struct k_lifo { * @retval -ENOMEM if there isn't sufficient RAM in the caller's resource pool */ #define k_lifo_alloc_put(lifo, data) \ - k_queue_alloc_prepend(&(lifo)->_queue, data) + ({ \ + SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_lifo, alloc_put, lifo, data); \ + int ret = k_queue_alloc_prepend(&(lifo)->_queue, data); \ + SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_lifo, alloc_put, lifo, data, ret); \ + ret; \ + }) /** * @brief Get an element from a LIFO queue. @@ -2356,7 +2369,12 @@ struct k_lifo { * without waiting, or waiting period timed out. */ #define k_lifo_get(lifo, timeout) \ - k_queue_get(&(lifo)->_queue, timeout) + ({ \ + SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_lifo, get, lifo, timeout); \ + void *ret = k_queue_get(&(lifo)->_queue, timeout); \ + SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_lifo, get, lifo, timeout, ret); \ + ret; \ + }) /** * @brief Statically define and initialize a LIFO queue. diff --git a/include/tracing/tracing.h b/include/tracing/tracing.h index 467a401c42f..564ea70dd9e 100644 --- a/include/tracing/tracing.h +++ b/include/tracing/tracing.h @@ -839,6 +839,76 @@ */ /* end of fifo_tracing_apis */ + + +/** + * @brief LIFO Tracing APIs + * @defgroup lifo_tracing_apis LIFO Tracing APIs + * @ingroup tracing_apis + * @{ + */ + +/** + * @brief Trace initialization of LIFO Queue entry + * @param lifo LIFO object + */ +#define sys_port_trace_k_lifo_init_enter(lifo) + +/** + * @brief Trace initialization of LIFO Queue exit + * @param lifo LIFO object + */ +#define sys_port_trace_k_lifo_init_exit(lifo) + +/** + * @brief Trace LIFO Queue put entry + * @param lifo LIFO object + * @param data Data item + */ +#define sys_port_trace_k_lifo_put_enter(lifo, data) + +/** + * @brief Trace LIFO Queue put exit + * @param lifo LIFO object + * @param data Data item + */ +#define sys_port_trace_k_lifo_put_exit(lifo, data) + +/** + * @brief Trace LIFO Queue alloc put entry + * @param lifo LIFO object + * @param data Data item + */ +#define sys_port_trace_k_lifo_alloc_put_enter(lifo, data) + +/** + * @brief Trace LIFO Queue alloc put exit + * @param lifo LIFO object + * @param data Data item + * @param ret Return value + */ +#define sys_port_trace_k_lifo_alloc_put_exit(lifo, data, ret) + +/** + * @brief Trace LIFO Queue get entry + * @param lifo LIFO object + * @param timeout Timeout period + */ +#define sys_port_trace_k_lifo_get_enter(lifo, timeout) + +/** + * @brief Trace LIFO Queue get exit + * @param lifo LIFO object + * @param timeout Timeout period + * @param ret Return value + */ +#define sys_port_trace_k_lifo_get_exit(lifo, timeout, ret) + +/** + * @} + */ /* end of lifo_tracing_apis */ + + /** * @} */