Skip to content

Commit c120673

Browse files
committed
subsys: 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 e44a952 commit c120673

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed

doc/releases/release-notes-4.2.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,39 @@ New Samples
9292
Same as above for boards and drivers, this will also be recomputed at the time of the release.
9393
Just link the sample, further details go in the sample documentation itself.
9494
95+
96+
Libraries / Subsystems
97+
**********************
98+
99+
* Tracing
100+
101+
* Add the :c:macro:`SYS_PORT_TRACK_FOREACH` macro for iterating over
102+
a tracking list.
103+
104+
* Add the following wrapper for the :c:macro:`SYS_PORT_TRACK_NEXT` macro to
105+
provide a more visible way to access the global tracking list:
106+
107+
* :c:macro:`SYS_PORT_TRACK_K_TIMER_NEXT` is equivalent to
108+
``SYS_PORT_TRACK_NEXT(_track_list_k_timer)``.
109+
* :c:macro:`SYS_PORT_TRACK_K_MEM_SLAB_NEXT` is equivalent to
110+
``SYS_PORT_TRACK_NEXT(_track_list_k_mem_slab)``.
111+
* :c:macro:`SYS_PORT_TRACK_K_SEM_NEXT` is equivalent to
112+
``SYS_PORT_TRACK_NEXT(_track_list_k_sem)``.
113+
* :c:macro:`SYS_PORT_TRACK_K_MUTEX_NEXT` is equivalent to
114+
``SYS_PORT_TRACK_NEXT(_track_list_k_mutex)``.
115+
* :c:macro:`SYS_PORT_TRACK_K_STACK_NEXT` is equivalent to
116+
``SYS_PORT_TRACK_NEXT(_track_list_k_stack)``.
117+
* :c:macro:`SYS_PORT_TRACK_K_MSGQ_NEXT` is equivalent to
118+
``SYS_PORT_TRACK_NEXT(_track_list_k_msgq)``.
119+
* :c:macro:`SYS_PORT_TRACK_K_MBOX_NEXT` is equivalent to
120+
``SYS_PORT_TRACK_NEXT(_track_list_k_mbox)``.
121+
* :c:macro:`SYS_PORT_TRACK_K_PIPE_NEXT` is equivalent to
122+
``SYS_PORT_TRACK_NEXT(_track_list_k_pipe)``.
123+
* :c:macro:`SYS_PORT_TRACK_K_QUEUE_NEXT` is equivalent to
124+
``SYS_PORT_TRACK_NEXT(_track_list_k_queue)``.
125+
* :c:macro:`SYS_PORT_TRACK_K_EVENT_NEXT` is equivalent to
126+
``SYS_PORT_TRACK_NEXT(_track_list_k_event)``.
127+
95128
Other notable changes
96129
*********************
97130

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)