Skip to content

Commit c44f65e

Browse files
committed
subsystem: tracing: Add macros for tracking list operations
Add a set of 'SYS_PORT_TRACK_K_*' wrapper macros for visible access to the global tracking list, and a macro 'SYS_PORT_TRACK_FOREACH' for iterating over the tracking list. Signed-off-by: James Roy <rruuaanng@outlook.com>
1 parent 726fd18 commit c44f65e

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed

doc/releases/release-notes-4.2.rst

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,38 @@ New Samples
749749
* :zephyr:code-sample:`uuid`
750750
* :zephyr:code-sample:`veml6031`
751751

752+
Libraries / Subsystems
753+
**********************
754+
755+
* Tracing
756+
757+
* Add the :c:macro:`SYS_PORT_TRACK_FOREACH` macro for iterating over
758+
a tracking list.
759+
760+
* Add the following wrapper for the :c:macro:`SYS_PORT_TRACK_NEXT` macro to
761+
provide a more visible way to access the global tracking list:
762+
763+
* :c:macro:`SYS_PORT_TRACK_K_TIMER_NEXT` is equivalent to
764+
``SYS_PORT_TRACK_NEXT(_track_list_k_timer)``.
765+
* :c:macro:`SYS_PORT_TRACK_K_MEM_SLAB_NEXT` is equivalent to
766+
``SYS_PORT_TRACK_NEXT(_track_list_k_mem_slab)``.
767+
* :c:macro:`SYS_PORT_TRACK_K_SEM_NEXT` is equivalent to
768+
``SYS_PORT_TRACK_NEXT(_track_list_k_sem)``.
769+
* :c:macro:`SYS_PORT_TRACK_K_MUTEX_NEXT` is equivalent to
770+
``SYS_PORT_TRACK_NEXT(_track_list_k_mutex)``.
771+
* :c:macro:`SYS_PORT_TRACK_K_STACK_NEXT` is equivalent to
772+
``SYS_PORT_TRACK_NEXT(_track_list_k_stack)``.
773+
* :c:macro:`SYS_PORT_TRACK_K_MSGQ_NEXT` is equivalent to
774+
``SYS_PORT_TRACK_NEXT(_track_list_k_msgq)``.
775+
* :c:macro:`SYS_PORT_TRACK_K_MBOX_NEXT` is equivalent to
776+
``SYS_PORT_TRACK_NEXT(_track_list_k_mbox)``.
777+
* :c:macro:`SYS_PORT_TRACK_K_PIPE_NEXT` is equivalent to
778+
``SYS_PORT_TRACK_NEXT(_track_list_k_pipe)``.
779+
* :c:macro:`SYS_PORT_TRACK_K_QUEUE_NEXT` is equivalent to
780+
``SYS_PORT_TRACK_NEXT(_track_list_k_queue)``.
781+
* :c:macro:`SYS_PORT_TRACK_K_EVENT_NEXT` is equivalent to
782+
``SYS_PORT_TRACK_NEXT(_track_list_k_event)``.
783+
752784
Other notable changes
753785
*********************
754786

include/zephyr/tracing/tracking.h

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,81 @@ extern struct k_event *_track_list_k_event;
5252
*/
5353
#define SYS_PORT_TRACK_NEXT(list)((list)->_obj_track_next)
5454

55+
/**
56+
* @brief Gets node's next element in a object tracking list.
57+
*
58+
* Example:
59+
* SYS_PORT_TRACK_FOREACH(k_mutex, m) {
60+
* ...
61+
* }
62+
*
63+
* @param object Type of tracking object to iterate over.
64+
* @param var Temporary variable used during iteration.
65+
*/
66+
#define SYS_PORT_TRACK_FOREACH(object, var) \
67+
for (struct object *var = _track_list_##object \
68+
; var != NULL; var++)
69+
70+
/**
71+
* @brief Gets node's next element in a k_timer tracking list.
72+
*/
73+
#define SYS_PORT_TRACK_K_TIMER_NEXT() \
74+
SYS_PORT_TRACK_NEXT(_track_list_k_timer)
75+
76+
/**
77+
* @brief Gets node's next element in a k_mem_slab tracking list.
78+
*/
79+
#define SYS_PORT_TRACK_K_MEM_SLAB_NEXT() \
80+
SYS_PORT_TRACK_NEXT(_track_list_k_mem_slab)
81+
82+
/**
83+
* @brief Gets node's next element in a k_sem tracking list.
84+
*/
85+
#define SYS_PORT_TRACK_K_SEM_NEXT() \
86+
SYS_PORT_TRACK_NEXT(_track_list_k_sem)
87+
88+
/**
89+
* @brief Gets node's next element in a k_mutex tracking list.
90+
*/
91+
#define SYS_PORT_TRACK_K_MUTEX_NEXT() \
92+
SYS_PORT_TRACK_NEXT(_track_list_k_mutex)
93+
94+
/**
95+
* @brief Gets node's next element in a k_stack tracking list.
96+
*/
97+
#define SYS_PORT_TRACK_K_STACK_NEXT() \
98+
SYS_PORT_TRACK_NEXT(_track_list_k_stack)
99+
100+
/**
101+
* @brief Gets node's next element in a k_msgq tracking list.
102+
*/
103+
#define SYS_PORT_TRACK_K_MSGQ_NEXT() \
104+
SYS_PORT_TRACK_NEXT(_track_list_k_msgq)
105+
106+
/**
107+
* @brief Gets node's next element in a k_mbox tracking list.
108+
*/
109+
#define SYS_PORT_TRACK_K_MBOX_NEXT() \
110+
SYS_PORT_TRACK_NEXT(_track_list_k_mbox)
111+
112+
/**
113+
* @brief Gets node's next element in a k_pipe tracking list.
114+
*/
115+
#define SYS_PORT_TRACK_K_PIPE_NEXT() \
116+
SYS_PORT_TRACK_NEXT(_track_list_k_pipe)
117+
118+
/**
119+
* @brief Gets node's next element in a k_queue tracking list.
120+
*/
121+
#define SYS_PORT_TRACK_K_QUEUE_NEXT() \
122+
SYS_PORT_TRACK_NEXT(_track_list_k_queue)
123+
124+
/**
125+
* @brief Gets node's next element in a k_event tracking list.
126+
*/
127+
#define SYS_PORT_TRACK_K_EVENT_NEXT() \
128+
SYS_PORT_TRACK_NEXT(_track_list_k_event)
129+
55130
/** @cond INTERNAL_HIDDEN */
56131

57132
#define sys_port_track_k_thread_start(thread)

0 commit comments

Comments
 (0)