Tracing: FIFO Tracing

Add FIFO tracing hook, default hooks, and documentation.

Signed-off-by: Torbjörn Leksell <torbjorn.leksell@percepio.com>
This commit is contained in:
Torbjörn Leksell 2021-03-26 11:42:16 +01:00 committed by Anas Nashif
commit 83ae27bb88
2 changed files with 187 additions and 9 deletions

View file

@ -2055,7 +2055,11 @@ struct k_fifo {
* @return N/A
*/
#define k_fifo_init(fifo) \
k_queue_init(&(fifo)->_queue)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, init, fifo); \
k_queue_init(&(fifo)->_queue); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, init, fifo); \
})
/**
* @brief Cancel waiting on a FIFO queue.
@ -2071,7 +2075,11 @@ struct k_fifo {
* @return N/A
*/
#define k_fifo_cancel_wait(fifo) \
k_queue_cancel_wait(&(fifo)->_queue)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, cancel_wait, fifo); \
k_queue_cancel_wait(&(fifo)->_queue); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, cancel_wait, fifo); \
})
/**
* @brief Add an element to a FIFO queue.
@ -2088,7 +2096,11 @@ struct k_fifo {
* @return N/A
*/
#define k_fifo_put(fifo, data) \
k_queue_append(&(fifo)->_queue, data)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, put, fifo, data); \
k_queue_append(&(fifo)->_queue, data); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, put, fifo, data); \
})
/**
* @brief Add an element to a FIFO queue.
@ -2107,7 +2119,12 @@ struct k_fifo {
* @retval -ENOMEM if there isn't sufficient RAM in the caller's resource pool
*/
#define k_fifo_alloc_put(fifo, data) \
k_queue_alloc_append(&(fifo)->_queue, data)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, alloc_put, fifo, data); \
int ret = k_queue_alloc_append(&(fifo)->_queue, data); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, alloc_put, fifo, data, ret); \
ret; \
})
/**
* @brief Atomically add a list of elements to a FIFO.
@ -2126,7 +2143,11 @@ struct k_fifo {
* @return N/A
*/
#define k_fifo_put_list(fifo, head, tail) \
k_queue_append_list(&(fifo)->_queue, head, tail)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, put_list, fifo, head, tail); \
k_queue_append_list(&(fifo)->_queue, head, tail); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, put_list, fifo, head, tail); \
})
/**
* @brief Atomically add a list of elements to a FIFO queue.
@ -2144,7 +2165,11 @@ struct k_fifo {
* @return N/A
*/
#define k_fifo_put_slist(fifo, list) \
k_queue_merge_slist(&(fifo)->_queue, list)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, put_slist, fifo, list); \
k_queue_merge_slist(&(fifo)->_queue, list); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, put_slist, fifo, list); \
})
/**
* @brief Get an element from a FIFO queue.
@ -2164,7 +2189,12 @@ struct k_fifo {
* without waiting, or waiting period timed out.
*/
#define k_fifo_get(fifo, timeout) \
k_queue_get(&(fifo)->_queue, timeout)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, get, fifo, timeout); \
void *ret = k_queue_get(&(fifo)->_queue, timeout); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, get, fifo, timeout, ret); \
ret; \
})
/**
* @brief Query a FIFO queue to see if it has data available.
@ -2196,7 +2226,12 @@ struct k_fifo {
* @return Head element, or NULL if the FIFO queue is empty.
*/
#define k_fifo_peek_head(fifo) \
k_queue_peek_head(&(fifo)->_queue)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, peek_head, fifo); \
void *ret = k_queue_peek_head(&(fifo)->_queue); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, peek_head, fifo, ret); \
ret; \
})
/**
* @brief Peek element at the tail of FIFO queue.
@ -2210,7 +2245,12 @@ struct k_fifo {
* @return Tail element, or NULL if a FIFO queue is empty.
*/
#define k_fifo_peek_tail(fifo) \
k_queue_peek_tail(&(fifo)->_queue)
({ \
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_fifo, peek_tail, fifo); \
void *ret = k_queue_peek_tail(&(fifo)->_queue); \
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_fifo, peek_tail, fifo, ret); \
ret; \
})
/**
* @brief Statically define and initialize a FIFO queue.