Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ ForEachMacros:
- 'FOR_EACH_FIXED_ARG_NONEMPTY_TERM'
- 'RB_FOR_EACH'
- 'RB_FOR_EACH_CONTAINER'
- 'SYS_PORT_TRACK_FOR_EACH'
- 'SYS_DLIST_FOR_EACH_CONTAINER'
- 'SYS_DLIST_FOR_EACH_CONTAINER_SAFE'
- 'SYS_DLIST_FOR_EACH_NODE'
Expand Down
34 changes: 34 additions & 0 deletions doc/releases/release-notes-4.3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,40 @@ New APIs and options
like you need to add more details, add them in the API documentation code
instead.


Libraries / Subsystems
**********************

* Tracing

* Add the :c:macro:`SYS_PORT_TRACK_FOR_EACH` macro for iterating over
a tracking list.

* Add the following wrapper for the :c:macro:`SYS_PORT_TRACK_NEXT` macro to
provide a more visible way to access the global tracking list:

* :c:macro:`SYS_PORT_TRACK_K_TIMER_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_timer)``.
* :c:macro:`SYS_PORT_TRACK_K_MEM_SLAB_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_mem_slab)``.
* :c:macro:`SYS_PORT_TRACK_K_SEM_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_sem)``.
* :c:macro:`SYS_PORT_TRACK_K_MUTEX_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_mutex)``.
* :c:macro:`SYS_PORT_TRACK_K_STACK_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_stack)``.
* :c:macro:`SYS_PORT_TRACK_K_MSGQ_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_msgq)``.
* :c:macro:`SYS_PORT_TRACK_K_MBOX_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_mbox)``.
* :c:macro:`SYS_PORT_TRACK_K_PIPE_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_pipe)``.
* :c:macro:`SYS_PORT_TRACK_K_QUEUE_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_queue)``.
* :c:macro:`SYS_PORT_TRACK_K_EVENT_NEXT` is equivalent to
``SYS_PORT_TRACK_NEXT(_track_list_k_event)``.


New Boards
**********

Expand Down
75 changes: 75 additions & 0 deletions include/zephyr/tracing/tracking.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,81 @@ extern struct k_event *_track_list_k_event;
*/
#define SYS_PORT_TRACK_NEXT(list)((list)->_obj_track_next)

/**
* @brief Gets node's next element in a object tracking list.
*
* Example:
* SYS_PORT_TRACK_FOREACH(k_mutex, m) {
* ...
* }
*
* @param object Type of tracking object to iterate over.
* @param var Temporary variable used during iteration.
*/
#define SYS_PORT_TRACK_FOR_EACH(object, var) \
for (struct object *var = _track_list_##object \
; var != NULL; var++)

/**
* @brief Gets node's next element in a k_timer tracking list.
*/
#define SYS_PORT_TRACK_K_TIMER_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_timer)

/**
* @brief Gets node's next element in a k_mem_slab tracking list.
*/
#define SYS_PORT_TRACK_K_MEM_SLAB_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_mem_slab)

/**
* @brief Gets node's next element in a k_sem tracking list.
*/
#define SYS_PORT_TRACK_K_SEM_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_sem)

/**
* @brief Gets node's next element in a k_mutex tracking list.
*/
#define SYS_PORT_TRACK_K_MUTEX_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_mutex)

/**
* @brief Gets node's next element in a k_stack tracking list.
*/
#define SYS_PORT_TRACK_K_STACK_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_stack)

/**
* @brief Gets node's next element in a k_msgq tracking list.
*/
#define SYS_PORT_TRACK_K_MSGQ_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_msgq)

/**
* @brief Gets node's next element in a k_mbox tracking list.
*/
#define SYS_PORT_TRACK_K_MBOX_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_mbox)

/**
* @brief Gets node's next element in a k_pipe tracking list.
*/
#define SYS_PORT_TRACK_K_PIPE_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_pipe)

/**
* @brief Gets node's next element in a k_queue tracking list.
*/
#define SYS_PORT_TRACK_K_QUEUE_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_queue)

/**
* @brief Gets node's next element in a k_event tracking list.
*/
#define SYS_PORT_TRACK_K_EVENT_NEXT() \
SYS_PORT_TRACK_NEXT(_track_list_k_event)

/** @cond INTERNAL_HIDDEN */

#define sys_port_track_k_thread_start(thread)
Expand Down