1 /*
2  * Copyright (c) 2018 Oticon A/S
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef _TRACE_CTF_H
8 #define _TRACE_CTF_H
9 
10 #include <zephyr/kernel.h>
11 #include <zephyr/kernel_structs.h>
12 #include <zephyr/init.h>
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 
19 #define sys_port_trace_k_thread_foreach_enter()
20 #define sys_port_trace_k_thread_foreach_exit()
21 #define sys_port_trace_k_thread_foreach_unlocked_enter()
22 #define sys_port_trace_k_thread_foreach_unlocked_exit()
23 
24 #define sys_port_trace_k_thread_create(new_thread)                             \
25 	sys_trace_k_thread_create(new_thread, stack_size, prio)
26 
27 #define sys_port_trace_k_thread_user_mode_enter()                              \
28 	sys_trace_k_thread_user_mode_enter()
29 
30 #define sys_port_trace_k_thread_heap_assign(thread, heap)
31 #define sys_port_trace_k_thread_join_enter(thread, timeout)
32 #define sys_port_trace_k_thread_join_blocking(thread, timeout)
33 #define sys_port_trace_k_thread_join_exit(thread, timeout, ret)
34 
35 #define sys_port_trace_k_thread_sleep_enter(timeout)                           \
36 	sys_trace_k_thread_sleep_enter(timeout)
37 #define sys_port_trace_k_thread_sleep_exit(timeout, ret)                       \
38 	sys_trace_k_thread_sleep_exit(timeout, ret)
39 
40 #define sys_port_trace_k_thread_msleep_enter(ms)
41 #define sys_port_trace_k_thread_msleep_exit(ms, ret)
42 #define sys_port_trace_k_thread_usleep_enter(us)
43 #define sys_port_trace_k_thread_usleep_exit(us, ret)
44 #define sys_port_trace_k_thread_busy_wait_enter(usec_to_wait)
45 #define sys_port_trace_k_thread_busy_wait_exit(usec_to_wait)
46 #define sys_port_trace_k_thread_yield()
47 #define sys_port_trace_k_thread_wakeup(thread) sys_trace_k_thread_wakeup(thread)
48 #define sys_port_trace_k_thread_start(thread) sys_trace_k_thread_start(thread)
49 #define sys_port_trace_k_thread_abort(thread) sys_trace_k_thread_abort(thread)
50 #define sys_port_trace_k_thread_suspend_enter(thread)                          \
51 	sys_trace_k_thread_suspend(thread)
52 #define sys_port_trace_k_thread_suspend_exit(thread)
53 #define sys_port_trace_k_thread_resume_enter(thread)                           \
54 	sys_trace_k_thread_resume(thread)
55 
56 #define sys_port_trace_k_thread_sched_lock()
57 
58 #define sys_port_trace_k_thread_sched_unlock()
59 
60 #define sys_port_trace_k_thread_name_set(thread, ret)                          \
61 	sys_trace_k_thread_name_set(thread, ret)
62 
63 #define sys_port_trace_k_thread_switched_out() sys_trace_k_thread_switched_out()
64 
65 #define sys_port_trace_k_thread_switched_in() sys_trace_k_thread_switched_in()
66 
67 #define sys_port_trace_k_thread_info(thread) sys_trace_k_thread_info(thread)
68 
69 #define sys_port_trace_k_thread_sched_wakeup(thread)
70 #define sys_port_trace_k_thread_sched_abort(thread)
71 #define sys_port_trace_k_thread_sched_priority_set(thread, prio)
72 #define sys_port_trace_k_thread_sched_ready(thread)
73 
74 #define sys_port_trace_k_thread_sched_pend(thread)
75 
76 #define sys_port_trace_k_thread_sched_resume(thread)
77 
78 #define sys_port_trace_k_thread_sched_suspend(thread)
79 
80 #define sys_port_trace_k_work_init(work)
81 #define sys_port_trace_k_work_submit_to_queue_enter(queue, work)
82 #define sys_port_trace_k_work_submit_to_queue_exit(queue, work, ret)
83 #define sys_port_trace_k_work_submit_enter(work)
84 #define sys_port_trace_k_work_submit_exit(work, ret)
85 #define sys_port_trace_k_work_flush_enter(work)
86 #define sys_port_trace_k_work_flush_blocking(work, timeout)
87 #define sys_port_trace_k_work_flush_exit(work, ret)
88 #define sys_port_trace_k_work_cancel_enter(work)
89 #define sys_port_trace_k_work_cancel_exit(work, ret)
90 #define sys_port_trace_k_work_cancel_sync_enter(work, sync)
91 #define sys_port_trace_k_work_cancel_sync_blocking(work, sync)
92 #define sys_port_trace_k_work_cancel_sync_exit(work, sync, ret)
93 
94 #define sys_port_trace_k_work_queue_init(queue)
95 #define sys_port_trace_k_work_queue_start_enter(queue)
96 #define sys_port_trace_k_work_queue_start_exit(queue)
97 #define sys_port_trace_k_work_queue_stop_enter(queue, timeout)
98 #define sys_port_trace_k_work_queue_stop_blocking(queue, timeout)
99 #define sys_port_trace_k_work_queue_stop_exit(queue, timeout, ret)
100 #define sys_port_trace_k_work_queue_drain_enter(queue)
101 #define sys_port_trace_k_work_queue_drain_exit(queue, ret)
102 #define sys_port_trace_k_work_queue_unplug_enter(queue)
103 #define sys_port_trace_k_work_queue_unplug_exit(queue, ret)
104 
105 #define sys_port_trace_k_work_delayable_init(dwork)
106 #define sys_port_trace_k_work_schedule_for_queue_enter(queue, dwork, delay)
107 #define sys_port_trace_k_work_schedule_for_queue_exit(queue, dwork, delay,     \
108 						      ret)
109 #define sys_port_trace_k_work_schedule_enter(dwork, delay)
110 #define sys_port_trace_k_work_schedule_exit(dwork, delay, ret)
111 #define sys_port_trace_k_work_reschedule_for_queue_enter(queue, dwork, delay)
112 #define sys_port_trace_k_work_reschedule_for_queue_exit(queue, dwork, delay,   \
113 							ret)
114 #define sys_port_trace_k_work_reschedule_enter(dwork, delay)
115 #define sys_port_trace_k_work_reschedule_exit(dwork, delay, ret)
116 #define sys_port_trace_k_work_flush_delayable_enter(dwork, sync)
117 #define sys_port_trace_k_work_flush_delayable_exit(dwork, sync, ret)
118 #define sys_port_trace_k_work_cancel_delayable_enter(dwork)
119 #define sys_port_trace_k_work_cancel_delayable_exit(dwork, ret)
120 #define sys_port_trace_k_work_cancel_delayable_sync_enter(dwork, sync)
121 #define sys_port_trace_k_work_cancel_delayable_sync_exit(dwork, sync, ret)
122 
123 #define sys_port_trace_k_work_poll_init_enter(work)
124 #define sys_port_trace_k_work_poll_init_exit(work)
125 #define sys_port_trace_k_work_poll_submit_to_queue_enter(work_q, work,         \
126 							 timeout)
127 #define sys_port_trace_k_work_poll_submit_to_queue_blocking(work_q, work,      \
128 							    timeout)
129 #define sys_port_trace_k_work_poll_submit_to_queue_exit(work_q, work, timeout, \
130 							ret)
131 #define sys_port_trace_k_work_poll_submit_enter(work, timeout)
132 #define sys_port_trace_k_work_poll_submit_exit(work, timeout, ret)
133 #define sys_port_trace_k_work_poll_cancel_enter(work)
134 #define sys_port_trace_k_work_poll_cancel_exit(work, ret)
135 
136 #define sys_port_trace_k_poll_api_event_init(event)
137 #define sys_port_trace_k_poll_api_poll_enter(events)
138 #define sys_port_trace_k_poll_api_poll_exit(events, ret)
139 #define sys_port_trace_k_poll_api_signal_init(signal)
140 #define sys_port_trace_k_poll_api_signal_reset(signal)
141 #define sys_port_trace_k_poll_api_signal_check(signal)
142 #define sys_port_trace_k_poll_api_signal_raise(signal, ret)
143 
144 #define sys_port_trace_k_sem_init(sem, ret)                                    \
145 	sys_trace_k_sem_init(sem, ret)
146 
147 #define sys_port_trace_k_sem_give_enter(sem) sys_trace_k_sem_give_enter(sem)
148 #define sys_port_trace_k_sem_give_exit(sem) sys_trace_k_sem_give_exit(sem)
149 #define sys_port_trace_k_sem_take_enter(sem, timeout)                          \
150 	sys_trace_k_sem_take_enter(sem, timeout)
151 #define sys_port_trace_k_sem_take_blocking(sem, timeout)                       \
152 	sys_trace_k_sem_take_blocking(sem, timeout)
153 #define sys_port_trace_k_sem_take_exit(sem, timeout, ret)                      \
154 	sys_trace_k_sem_take_exit(sem, timeout, ret)
155 #define sys_port_trace_k_sem_reset(sem) sys_trace_k_sem_reset(sem)
156 
157 #define sys_port_trace_k_mutex_init(mutex, ret)                                \
158 	sys_trace_k_mutex_init(mutex, ret)
159 #define sys_port_trace_k_mutex_lock_enter(mutex, timeout)                      \
160 	sys_trace_k_mutex_lock_enter(mutex, timeout)
161 #define sys_port_trace_k_mutex_lock_blocking(mutex, timeout)                   \
162 	sys_trace_k_mutex_lock_blocking(mutex, timeout)
163 #define sys_port_trace_k_mutex_lock_exit(mutex, timeout, ret)                  \
164 	sys_trace_k_mutex_lock_exit(mutex, timeout, ret)
165 #define sys_port_trace_k_mutex_unlock_enter(mutex)                             \
166 	sys_trace_k_mutex_unlock_enter(mutex)
167 #define sys_port_trace_k_mutex_unlock_exit(mutex, ret)                         \
168 	sys_trace_k_mutex_unlock_exit(mutex, ret)
169 
170 /* Timer */
171 #define sys_port_trace_k_timer_init(timer)					\
172 	sys_trace_k_timer_init(timer)
173 #define sys_port_trace_k_timer_start(timer, duration, period)			\
174 	sys_trace_k_timer_start(timer, duration, period)
175 #define sys_port_trace_k_timer_stop(timer)					\
176 	sys_trace_k_timer_stop(timer)
177 #define sys_port_trace_k_timer_status_sync_enter(timer)				\
178 	sys_trace_k_timer_status_sync_enter(timer)
179 #define sys_port_trace_k_timer_status_sync_blocking(timer, timeout)		\
180 	sys_trace_k_timer_status_sync_blocking(timer, timeout)
181 #define sys_port_trace_k_timer_status_sync_exit(timer, result)			\
182 	sys_trace_k_timer_status_sync_exit(timer, result)
183 
184 #define sys_port_trace_k_condvar_init(condvar, ret)
185 #define sys_port_trace_k_condvar_signal_enter(condvar)
186 #define sys_port_trace_k_condvar_signal_blocking(condvar, timeout)
187 #define sys_port_trace_k_condvar_signal_exit(condvar, ret)
188 #define sys_port_trace_k_condvar_broadcast_enter(condvar)
189 #define sys_port_trace_k_condvar_broadcast_exit(condvar, ret)
190 #define sys_port_trace_k_condvar_wait_enter(condvar)
191 #define sys_port_trace_k_condvar_wait_exit(condvar, ret)
192 
193 #define sys_port_trace_k_queue_init(queue)
194 #define sys_port_trace_k_queue_cancel_wait(queue)
195 #define sys_port_trace_k_queue_queue_insert_enter(queue, alloc)
196 #define sys_port_trace_k_queue_queue_insert_blocking(queue, alloc, timeout)
197 #define sys_port_trace_k_queue_queue_insert_exit(queue, alloc, ret)
198 #define sys_port_trace_k_queue_append_enter(queue)
199 #define sys_port_trace_k_queue_append_exit(queue)
200 #define sys_port_trace_k_queue_alloc_append_enter(queue)
201 #define sys_port_trace_k_queue_alloc_append_exit(queue, ret)
202 #define sys_port_trace_k_queue_prepend_enter(queue)
203 #define sys_port_trace_k_queue_prepend_exit(queue)
204 #define sys_port_trace_k_queue_alloc_prepend_enter(queue)
205 #define sys_port_trace_k_queue_alloc_prepend_exit(queue, ret)
206 #define sys_port_trace_k_queue_insert_enter(queue)
207 #define sys_port_trace_k_queue_insert_blocking(queue, timeout)
208 #define sys_port_trace_k_queue_insert_exit(queue)
209 #define sys_port_trace_k_queue_append_list_enter(queue)
210 #define sys_port_trace_k_queue_append_list_exit(queue, ret)
211 #define sys_port_trace_k_queue_merge_slist_enter(queue)
212 #define sys_port_trace_k_queue_merge_slist_exit(queue, ret)
213 #define sys_port_trace_k_queue_get_enter(queue, timeout)
214 #define sys_port_trace_k_queue_get_blocking(queue, timeout)
215 #define sys_port_trace_k_queue_get_exit(queue, timeout, ret)
216 #define sys_port_trace_k_queue_remove_enter(queue)
217 #define sys_port_trace_k_queue_remove_exit(queue, ret)
218 #define sys_port_trace_k_queue_unique_append_enter(queue)
219 #define sys_port_trace_k_queue_unique_append_exit(queue, ret)
220 #define sys_port_trace_k_queue_peek_head(queue, ret)
221 #define sys_port_trace_k_queue_peek_tail(queue, ret)
222 
223 #define sys_port_trace_k_fifo_init_enter(fifo)
224 #define sys_port_trace_k_fifo_init_exit(fifo)
225 #define sys_port_trace_k_fifo_cancel_wait_enter(fifo)
226 #define sys_port_trace_k_fifo_cancel_wait_exit(fifo)
227 #define sys_port_trace_k_fifo_put_enter(fifo, data)
228 #define sys_port_trace_k_fifo_put_exit(fifo, data)
229 #define sys_port_trace_k_fifo_alloc_put_enter(fifo, data)
230 #define sys_port_trace_k_fifo_alloc_put_exit(fifo, data, ret)
231 #define sys_port_trace_k_fifo_put_list_enter(fifo, head, tail)
232 #define sys_port_trace_k_fifo_put_list_exit(fifo, head, tail)
233 #define sys_port_trace_k_fifo_put_slist_enter(fifo, list)
234 #define sys_port_trace_k_fifo_put_slist_exit(fifo, list)
235 #define sys_port_trace_k_fifo_get_enter(fifo, timeout)
236 #define sys_port_trace_k_fifo_get_exit(fifo, timeout, ret)
237 #define sys_port_trace_k_fifo_peek_head_enter(fifo)
238 #define sys_port_trace_k_fifo_peek_head_exit(fifo, ret)
239 #define sys_port_trace_k_fifo_peek_tail_enter(fifo)
240 #define sys_port_trace_k_fifo_peek_tail_exit(fifo, ret)
241 
242 #define sys_port_trace_k_lifo_init_enter(lifo)
243 #define sys_port_trace_k_lifo_init_exit(lifo)
244 #define sys_port_trace_k_lifo_put_enter(lifo, data)
245 #define sys_port_trace_k_lifo_put_exit(lifo, data)
246 #define sys_port_trace_k_lifo_alloc_put_enter(lifo, data)
247 #define sys_port_trace_k_lifo_alloc_put_exit(lifo, data, ret)
248 #define sys_port_trace_k_lifo_get_enter(lifo, timeout)
249 #define sys_port_trace_k_lifo_get_exit(lifo, timeout, ret)
250 
251 #define sys_port_trace_k_stack_init(stack)
252 #define sys_port_trace_k_stack_alloc_init_enter(stack)
253 #define sys_port_trace_k_stack_alloc_init_exit(stack, ret)
254 #define sys_port_trace_k_stack_cleanup_enter(stack)
255 #define sys_port_trace_k_stack_cleanup_exit(stack, ret)
256 #define sys_port_trace_k_stack_push_enter(stack)
257 #define sys_port_trace_k_stack_push_exit(stack, ret)
258 #define sys_port_trace_k_stack_pop_enter(stack, timeout)
259 #define sys_port_trace_k_stack_pop_blocking(stack, timeout)
260 #define sys_port_trace_k_stack_pop_exit(stack, timeout, ret)
261 
262 #define sys_port_trace_k_msgq_init(msgq)
263 #define sys_port_trace_k_msgq_alloc_init_enter(msgq)
264 #define sys_port_trace_k_msgq_alloc_init_exit(msgq, ret)
265 #define sys_port_trace_k_msgq_cleanup_enter(msgq)
266 #define sys_port_trace_k_msgq_cleanup_exit(msgq, ret)
267 #define sys_port_trace_k_msgq_put_enter(msgq, timeout)
268 #define sys_port_trace_k_msgq_put_blocking(msgq, timeout)
269 #define sys_port_trace_k_msgq_put_exit(msgq, timeout, ret)
270 #define sys_port_trace_k_msgq_put_front_enter(msgq, timeout)
271 #define sys_port_trace_k_msgq_put_front_blocking(msgq, timeout)
272 #define sys_port_trace_k_msgq_put_front_exit(msgq, timeout, ret)
273 #define sys_port_trace_k_msgq_get_enter(msgq, timeout)
274 #define sys_port_trace_k_msgq_get_blocking(msgq, timeout)
275 #define sys_port_trace_k_msgq_get_exit(msgq, timeout, ret)
276 #define sys_port_trace_k_msgq_peek(msgq, ret)
277 #define sys_port_trace_k_msgq_purge(msgq)
278 
279 #define sys_port_trace_k_mbox_init(mbox)
280 #define sys_port_trace_k_mbox_message_put_enter(mbox, timeout)
281 #define sys_port_trace_k_mbox_message_put_blocking(mbox, timeout)
282 #define sys_port_trace_k_mbox_message_put_exit(mbox, timeout, ret)
283 #define sys_port_trace_k_mbox_put_enter(mbox, timeout)
284 #define sys_port_trace_k_mbox_put_exit(mbox, timeout, ret)
285 #define sys_port_trace_k_mbox_async_put_enter(mbox, sem)
286 #define sys_port_trace_k_mbox_async_put_exit(mbox, sem)
287 #define sys_port_trace_k_mbox_get_enter(mbox, timeout)
288 #define sys_port_trace_k_mbox_get_blocking(mbox, timeout)
289 #define sys_port_trace_k_mbox_get_exit(mbox, timeout, ret)
290 #define sys_port_trace_k_mbox_data_get(rx_msg)
291 
292 #define sys_port_trace_k_pipe_init(pipe, buffer, size)
293 #define sys_port_trace_k_pipe_reset_enter(pipe)
294 #define sys_port_trace_k_pipe_reset_exit(pipe)
295 #define sys_port_trace_k_pipe_close_enter(pipe)
296 #define sys_port_trace_k_pipe_close_exit(pipe)
297 #define sys_port_trace_k_pipe_write_enter(pipe, data, len, timeout)
298 #define sys_port_trace_k_pipe_write_blocking(pipe, timeout)
299 #define sys_port_trace_k_pipe_write_exit(pipe, ret)
300 #define sys_port_trace_k_pipe_read_enter(pipe, data, len, timeout)
301 #define sys_port_trace_k_pipe_read_blocking(pipe, timeout)
302 #define sys_port_trace_k_pipe_read_exit(pipe, ret)
303 
304 #define sys_port_trace_k_pipe_cleanup_enter(pipe)
305 #define sys_port_trace_k_pipe_cleanup_exit(pipe, ret)
306 #define sys_port_trace_k_pipe_alloc_init_enter(pipe)
307 #define sys_port_trace_k_pipe_alloc_init_exit(pipe, ret)
308 #define sys_port_trace_k_pipe_flush_enter(pipe)
309 #define sys_port_trace_k_pipe_flush_exit(pipe)
310 #define sys_port_trace_k_pipe_buffer_flush_enter(pipe)
311 #define sys_port_trace_k_pipe_buffer_flush_exit(pipe)
312 #define sys_port_trace_k_pipe_put_enter(pipe, timeout)
313 #define sys_port_trace_k_pipe_put_blocking(pipe, timeout)
314 #define sys_port_trace_k_pipe_put_exit(pipe, timeout, ret)
315 #define sys_port_trace_k_pipe_get_enter(pipe, timeout)
316 #define sys_port_trace_k_pipe_get_blocking(pipe, timeout)
317 #define sys_port_trace_k_pipe_get_exit(pipe, timeout, ret)
318 
319 #define sys_port_trace_k_heap_init(heap)
320 #define sys_port_trace_k_heap_aligned_alloc_enter(heap, timeout)
321 #define sys_port_trace_k_heap_alloc_helper_blocking(heap, timeout)
322 #define sys_port_trace_k_heap_aligned_alloc_exit(heap, timeout, ret)
323 #define sys_port_trace_k_heap_alloc_enter(heap, timeout)
324 #define sys_port_trace_k_heap_alloc_exit(heap, timeout, ret)
325 #define sys_port_trace_k_heap_calloc_enter(heap, timeout)
326 #define sys_port_trace_k_heap_calloc_exit(heap, timeout, ret)
327 #define sys_port_trace_k_heap_free(heap)
328 #define sys_port_trace_k_heap_realloc_enter(h, ptr, bytes, timeout)
329 #define sys_port_trace_k_heap_realloc_exit(h, ptr, bytes, timeout, ret)
330 #define sys_port_trace_k_heap_sys_k_aligned_alloc_enter(heap)
331 #define sys_port_trace_k_heap_sys_k_aligned_alloc_exit(heap, ret)
332 #define sys_port_trace_k_heap_sys_k_malloc_enter(heap)
333 #define sys_port_trace_k_heap_sys_k_malloc_exit(heap, ret)
334 #define sys_port_trace_k_heap_sys_k_free_enter(heap, heap_ref)
335 #define sys_port_trace_k_heap_sys_k_free_exit(heap, heap_ref)
336 #define sys_port_trace_k_heap_sys_k_calloc_enter(heap)
337 #define sys_port_trace_k_heap_sys_k_calloc_exit(heap, ret)
338 #define sys_port_trace_k_heap_sys_k_realloc_enter(heap, ptr)
339 #define sys_port_trace_k_heap_sys_k_realloc_exit(heap, ptr, ret)
340 
341 #define sys_port_trace_k_mem_slab_init(slab, rc)
342 #define sys_port_trace_k_mem_slab_alloc_enter(slab, timeout)
343 #define sys_port_trace_k_mem_slab_alloc_blocking(slab, timeout)
344 #define sys_port_trace_k_mem_slab_alloc_exit(slab, timeout, ret)
345 #define sys_port_trace_k_mem_slab_free_enter(slab)
346 #define sys_port_trace_k_mem_slab_free_exit(slab)
347 
348 #define sys_port_trace_k_event_init(event)
349 #define sys_port_trace_k_event_post_enter(event, events, events_mask)
350 #define sys_port_trace_k_event_post_exit(event, events, events_mask)
351 #define sys_port_trace_k_event_wait_enter(event, events, options, timeout)
352 #define sys_port_trace_k_event_wait_blocking(event, events, options, timeout)
353 #define sys_port_trace_k_event_wait_exit(event, events, ret)
354 
355 #define sys_port_trace_k_thread_abort_exit(thread)
356 #define sys_port_trace_k_thread_abort_enter(thread)
357 #define sys_port_trace_k_thread_resume_exit(thread)
358 
359 
360 #define sys_port_trace_pm_system_suspend_enter(ticks)
361 #define sys_port_trace_pm_system_suspend_exit(ticks, state)
362 
363 #define sys_port_trace_pm_device_runtime_get_enter(dev)
364 #define sys_port_trace_pm_device_runtime_get_exit(dev, ret)
365 #define sys_port_trace_pm_device_runtime_put_enter(dev)
366 #define sys_port_trace_pm_device_runtime_put_exit(dev, ret)
367 #define sys_port_trace_pm_device_runtime_put_async_enter(dev, delay)
368 #define sys_port_trace_pm_device_runtime_put_async_exit(dev, delay, ret)
369 #define sys_port_trace_pm_device_runtime_enable_enter(dev)
370 #define sys_port_trace_pm_device_runtime_enable_exit(dev, ret)
371 #define sys_port_trace_pm_device_runtime_disable_enter(dev)
372 #define sys_port_trace_pm_device_runtime_disable_exit(dev, ret)
373 
374 #define sys_trace_sys_init_enter(...)
375 #define sys_trace_sys_init_exit(...)
376 
377 void sys_trace_idle(void);
378 void sys_trace_idle_exit(void);
379 void sys_trace_isr_enter(void);
380 void sys_trace_isr_exit(void);
381 
382 void sys_trace_k_thread_abort_exit(struct k_thread *thread);
383 void sys_trace_k_thread_abort_enter(struct k_thread *thread);
384 void sys_trace_k_thread_resume_exit(struct k_thread *thread);
385 void sys_trace_k_thread_sched_abort(struct k_thread *thread);
386 void sys_trace_k_thread_sched_ready(struct k_thread *thread);
387 
388 void sys_trace_k_thread_sched_resume(struct k_thread *thread);
389 void sys_trace_k_thread_sched_suspend(struct k_thread *thread);
390 
391 void sys_trace_k_thread_foreach_enter(k_thread_user_cb_t user_cb,
392 				      void *user_data);
393 void sys_trace_k_thread_foreach_exit(k_thread_user_cb_t user_cb,
394 				     void *user_data);
395 void sys_trace_k_thread_foreach_unlocked_enter(k_thread_user_cb_t user_cb,
396 					       void *user_data);
397 void sys_trace_k_thread_foreach_unlocked_exit(k_thread_user_cb_t user_cb,
398 					      void *user_data);
399 void sys_trace_k_thread_create(struct k_thread *new_thread, size_t stack_size,
400 			       int prio);
401 void sys_trace_k_thread_user_mode_enter(void);
402 void sys_trace_k_thread_heap_assign(struct k_thread *thread,
403 				    struct k_heap *heap);
404 void sys_trace_k_thread_join_blocking(struct k_thread *thread,
405 				      k_timeout_t timeout);
406 void sys_trace_k_thread_join_exit(struct k_thread *thread, k_timeout_t timeout,
407 				  int ret);
408 void sys_trace_k_thread_sleep_enter(k_timeout_t timeout);
409 void sys_trace_k_thread_sleep_exit(k_timeout_t timeout, int ret);
410 void sys_trace_k_thread_msleep_enter(int32_t ms);
411 void sys_trace_k_thread_msleep_exit(int32_t ms, int ret);
412 void sys_trace_k_thread_usleep_enter(int32_t us);
413 void sys_trace_k_thread_usleep_exit(int32_t us, int ret);
414 void sys_trace_k_thread_busy_wait_enter(uint32_t usec_to_wait);
415 void sys_trace_k_thread_busy_wait_exit(uint32_t usec_to_wait);
416 void sys_trace_k_thread_yield(void);
417 void sys_trace_k_thread_wakeup(struct k_thread *thread);
418 void sys_trace_k_thread_abort(struct k_thread *thread);
419 void sys_trace_k_thread_start(struct k_thread *thread);
420 void sys_trace_k_thread_priority_set(struct k_thread *thread);
421 void sys_trace_k_thread_suspend(struct k_thread *thread);
422 void sys_trace_k_thread_resume(struct k_thread *thread);
423 void sys_trace_k_thread_sched_lock(void);
424 void sys_trace_k_thread_sched_unlock(void);
425 void sys_trace_k_thread_name_set(struct k_thread *thread, int ret);
426 void sys_trace_k_thread_switched_out(void);
427 void sys_trace_k_thread_switched_in(void);
428 void sys_trace_k_thread_ready(struct k_thread *thread);
429 void sys_trace_k_thread_pend(struct k_thread *thread);
430 void sys_trace_k_thread_info(struct k_thread *thread);
431 
432 /* Semaphore */
433 
434 void sys_trace_k_sem_init(struct k_sem *sem, int ret);
435 void sys_trace_k_sem_give_enter(struct k_sem *sem);
436 
437 void sys_trace_k_sem_give_exit(struct k_sem *sem);
438 
439 void sys_trace_k_sem_take_enter(struct k_sem *sem, k_timeout_t timeout);
440 void sys_trace_k_sem_take_blocking(struct k_sem *sem, k_timeout_t timeout);
441 void sys_trace_k_sem_take_exit(struct k_sem *sem, k_timeout_t timeout, int ret);
442 void sys_trace_k_sem_reset(struct k_sem *sem);
443 
444 /* Mutex */
445 void sys_trace_k_mutex_init(struct k_mutex *mutex, int ret);
446 void sys_trace_k_mutex_lock_enter(struct k_mutex *mutex, k_timeout_t timeout);
447 void sys_trace_k_mutex_lock_blocking(struct k_mutex *mutex,
448 				     k_timeout_t timeout);
449 void sys_trace_k_mutex_lock_exit(struct k_mutex *mutex, k_timeout_t timeout,
450 				 int ret);
451 void sys_trace_k_mutex_unlock_enter(struct k_mutex *mutex);
452 void sys_trace_k_mutex_unlock_exit(struct k_mutex *mutex, int ret);
453 
454 /* Timer */
455 void sys_trace_k_timer_init(struct k_timer *timer);
456 
457 void sys_trace_k_timer_start(struct k_timer *timer, k_timeout_t duration,
458 			     k_timeout_t period);
459 void sys_trace_k_timer_stop(struct k_timer *timer);
460 void sys_trace_k_timer_status_sync_blocking(struct k_timer *timer, k_timeout_t timeout);
461 void sys_trace_k_timer_status_sync_enter(struct k_timer *timer);
462 void sys_trace_k_timer_status_sync_exit(struct k_timer *timer, uint32_t result);
463 
464 void sys_trace_k_event_init(struct k_event *event);
465 
466 
467 #define sys_port_trace_socket_init(sock, family, type, proto)	\
468 	sys_trace_socket_init(sock, family, type, proto)
469 #define sys_port_trace_socket_close_enter(sock) \
470 	sys_trace_socket_close_enter(sock)
471 #define sys_port_trace_socket_close_exit(sock, ret) \
472 	sys_trace_socket_close_exit(sock, ret)
473 #define sys_port_trace_socket_shutdown_enter(sock, how) \
474 	sys_trace_socket_shutdown_enter(sock, how)
475 #define sys_port_trace_socket_shutdown_exit(sock, ret) \
476 	sys_trace_socket_shutdown_exit(sock, ret)
477 #define sys_port_trace_socket_bind_enter(sock, addr, addrlen) \
478 	sys_trace_socket_bind_enter(sock, addr, addrlen)
479 #define sys_port_trace_socket_bind_exit(sock, ret) \
480 	sys_trace_socket_bind_exit(sock, ret)
481 #define sys_port_trace_socket_connect_enter(sock, addr, addrlen) \
482 	sys_trace_socket_connect_enter(sock, addr, addrlen)
483 #define sys_port_trace_socket_connect_exit(sock, ret) \
484 	sys_trace_socket_connect_exit(sock, ret)
485 #define sys_port_trace_socket_listen_enter(sock, backlog) \
486 	sys_trace_socket_listen_enter(sock, backlog)
487 #define sys_port_trace_socket_listen_exit(sock, ret) \
488 	sys_trace_socket_listen_exit(sock, ret)
489 #define sys_port_trace_socket_accept_enter(sock) \
490 	sys_trace_socket_accept_enter(sock)
491 #define sys_port_trace_socket_accept_exit(sock, addr, addrlen, ret) \
492 	sys_trace_socket_accept_exit(sock, addr, addrlen, ret)
493 #define sys_port_trace_socket_sendto_enter(sock, len, flags, dest_addr, addrlen) \
494 	sys_trace_socket_sendto_enter(sock, len, flags, dest_addr, addrlen)
495 #define sys_port_trace_socket_sendto_exit(sock, ret) \
496 	sys_trace_socket_sendto_exit(sock, ret)
497 #define sys_port_trace_socket_sendmsg_enter(sock, msg, flags) \
498 	sys_trace_socket_sendmsg_enter(sock, msg, flags)
499 #define sys_port_trace_socket_sendmsg_exit(sock, ret) \
500 	sys_trace_socket_sendmsg_exit(sock, ret)
501 #define sys_port_trace_socket_recvfrom_enter(sock, max_len, flags, addr, addrlen) \
502 	sys_trace_socket_recvfrom_enter(sock, max_len, flags, addr, addrlen)
503 #define sys_port_trace_socket_recvfrom_exit(sock, src_addr, addrlen, ret) \
504 	sys_trace_socket_recvfrom_exit(sock, src_addr, addrlen, ret)
505 #define sys_port_trace_socket_recvmsg_enter(sock, msg, flags) \
506 	sys_trace_socket_recvmsg_enter(sock, msg, flags)
507 #define sys_port_trace_socket_recvmsg_exit(sock, msg, ret) \
508 	sys_trace_socket_recvmsg_exit(sock, msg, ret)
509 #define sys_port_trace_socket_fcntl_enter(sock, cmd, flags) \
510 	sys_trace_socket_fcntl_enter(sock, cmd, flags)
511 #define sys_port_trace_socket_fcntl_exit(sock, ret) \
512 	sys_trace_socket_fcntl_exit(sock, ret)
513 #define sys_port_trace_socket_ioctl_enter(sock, req) \
514 	sys_trace_socket_ioctl_enter(sock, req)
515 #define sys_port_trace_socket_ioctl_exit(sock, ret) \
516 	sys_trace_socket_ioctl_exit(sock, ret)
517 #define sys_port_trace_socket_poll_enter(fds, nfds, timeout) \
518 	sys_trace_socket_poll_enter(fds, nfds, timeout)
519 #define sys_port_trace_socket_poll_exit(fds, nfds, ret) \
520 	sys_trace_socket_poll_exit(fds, nfds, ret)
521 #define sys_port_trace_socket_getsockopt_enter(sock, level, optname) \
522 	sys_trace_socket_getsockopt_enter(sock, level, optname)
523 #define sys_port_trace_socket_getsockopt_exit(sock, level, optname, optval, optlen, ret) \
524 	sys_trace_socket_getsockopt_exit(sock, level, optname, optval, optlen, ret)
525 #define sys_port_trace_socket_setsockopt_enter(sock, level, optname, optval, optlen) \
526 	sys_trace_socket_setsockopt_enter(sock, level, optname, optval, optlen)
527 #define sys_port_trace_socket_setsockopt_exit(sock, ret) \
528 	sys_trace_socket_setsockopt_exit(sock, ret)
529 #define sys_port_trace_socket_getpeername_enter(sock) \
530 	sys_trace_socket_getpeername_enter(sock)
531 #define sys_port_trace_socket_getpeername_exit(sock, addr, addrlen, ret) \
532 	sys_trace_socket_getpeername_exit(sock, addr, addrlen, ret)
533 #define sys_port_trace_socket_getsockname_enter(sock) \
534 	sys_trace_socket_getsockname_enter(sock)
535 #define sys_port_trace_socket_getsockname_exit(sock, addr, addrlen, ret) \
536 	sys_trace_socket_getsockname_exit(sock, addr, addrlen, ret)
537 #define sys_port_trace_socket_socketpair_enter(family, type, proto, sv)	\
538 	sys_trace_socket_socketpair_enter(family, type, proto, sv)
539 #define sys_port_trace_socket_socketpair_exit(sockA, sockB, ret) \
540 	sys_trace_socket_socketpair_exit(sockA, sockB, ret)
541 
542 /* Do not try to include network headers as it just leads to inclusion
543  * nightmare, just declare couple of structs that are needed.
544  */
545 struct sockaddr;
546 struct msghdr;
547 struct zvfs_pollfd;
548 
549 void sys_trace_socket_init(int sock, int family, int type, int proto);
550 void sys_trace_socket_close_enter(int sock);
551 void sys_trace_socket_close_exit(int sock, int ret);
552 void sys_trace_socket_shutdown_enter(int sock, int how);
553 void sys_trace_socket_shutdown_exit(int sock, int ret);
554 void sys_trace_socket_bind_enter(int sock, const struct sockaddr *addr, size_t addrlen);
555 void sys_trace_socket_bind_exit(int sock, int ret);
556 void sys_trace_socket_connect_enter(int sock, const struct sockaddr *addr, size_t addrlen);
557 void sys_trace_socket_connect_exit(int sock, int ret);
558 void sys_trace_socket_listen_enter(int sock, int backlog);
559 void sys_trace_socket_listen_exit(int sock, int ret);
560 void sys_trace_socket_accept_enter(int sock);
561 void sys_trace_socket_accept_exit(int sock, const struct sockaddr *addr, const size_t *addrlen,
562 				  int ret);
563 void sys_trace_socket_sendto_enter(int sock, int len, int flags, const struct sockaddr *dest_addr,
564 				   size_t addrlen);
565 void sys_trace_socket_sendto_exit(int sock, int ret);
566 void sys_trace_socket_sendmsg_enter(int sock, const struct msghdr *msg, int flags);
567 void sys_trace_socket_sendmsg_exit(int sock, int ret);
568 void sys_trace_socket_recvfrom_enter(int sock, int max_len, int flags, struct sockaddr *addr,
569 				     size_t *addrlen);
570 void sys_trace_socket_recvfrom_exit(int sock, const struct sockaddr *src_addr,
571 				    const size_t *addrlen, int ret);
572 void sys_trace_socket_recvmsg_enter(int sock, const struct msghdr *msg, int flags);
573 void sys_trace_socket_recvmsg_exit(int sock, const struct msghdr *msg, int ret);
574 void sys_trace_socket_fcntl_enter(int sock, int cmd, int flags);
575 void sys_trace_socket_fcntl_exit(int sock, int ret);
576 void sys_trace_socket_ioctl_enter(int sock, int req);
577 void sys_trace_socket_ioctl_exit(int sock, int ret);
578 void sys_trace_socket_poll_enter(const struct zvfs_pollfd *fds, int nfds, int timeout);
579 void sys_trace_socket_poll_exit(const struct zvfs_pollfd *fds, int nfds, int ret);
580 void sys_trace_socket_getsockopt_enter(int sock, int level, int optname);
581 void sys_trace_socket_getsockopt_exit(int sock, int level, int optname, void *optval,
582 				      size_t optlen, int ret);
583 void sys_trace_socket_setsockopt_enter(int sock, int level, int optname, const void *optval,
584 				       size_t optlen);
585 void sys_trace_socket_setsockopt_exit(int sock, int ret);
586 void sys_trace_socket_getpeername_enter(int sock);
587 void sys_trace_socket_getpeername_exit(int sock,  struct sockaddr *addr, const size_t *addrlen,
588 				       int ret);
589 void sys_trace_socket_getsockname_enter(int sock);
590 void sys_trace_socket_getsockname_exit(int sock, const struct sockaddr *addr, const size_t *addrlen,
591 				       int ret);
592 void sys_trace_socket_socketpair_enter(int family, int type, int proto, int *sv);
593 void sys_trace_socket_socketpair_exit(int sock_A, int sock_B, int ret);
594 
595 #define sys_port_trace_net_recv_data_enter(iface, pkt)          \
596 	sys_trace_net_recv_data_enter(iface, pkt)
597 #define sys_port_trace_net_recv_data_exit(iface, pkt, ret)	\
598 	sys_trace_net_recv_data_exit(iface, pkt, ret)
599 #define sys_port_trace_net_send_data_enter(pkt)			\
600 	sys_trace_net_send_data_enter(pkt)
601 #define sys_port_trace_net_send_data_exit(pkt, ret)		\
602 	sys_trace_net_send_data_exit(pkt, ret)
603 #define sys_port_trace_net_rx_time(pkt, end_time)		\
604 	sys_trace_net_rx_time(pkt, end_time)
605 #define sys_port_trace_net_tx_time(pkt, end_time)		\
606 	sys_trace_net_tx_time(pkt, end_time)
607 
608 struct net_if;
609 struct net_pkt;
610 
611 void sys_trace_net_recv_data_enter(struct net_if *iface, struct net_pkt *pkt);
612 void sys_trace_net_recv_data_exit(struct net_if *iface, struct net_pkt *pkt, int ret);
613 void sys_trace_net_send_data_enter(struct net_pkt *pkt);
614 void sys_trace_net_send_data_exit(struct net_pkt *pkt, int ret);
615 void sys_trace_net_rx_time(struct net_pkt *pkt, uint32_t end_time);
616 void sys_trace_net_tx_time(struct net_pkt *pkt, uint32_t end_time);
617 
618 void sys_trace_named_event(const char *name, uint32_t arg0, uint32_t arg1);
619 
620 /* GPIO */
621 struct gpio_callback;
622 typedef uint8_t gpio_pin_t;
623 typedef uint32_t gpio_port_pins_t;
624 typedef uint32_t gpio_flags_t;
625 typedef uint32_t gpio_port_value_t;
626 typedef void (*gpio_callback_handler_t)(const struct device *port, struct gpio_callback *cb,
627 					gpio_port_pins_t pins);
628 
629 void sys_trace_gpio_pin_interrupt_configure_enter(const struct device *port, gpio_pin_t pin,
630 						  gpio_flags_t flags);
631 void sys_trace_gpio_pin_interrupt_configure_exit(const struct device *port, gpio_pin_t pin,
632 						 int ret);
633 void sys_trace_gpio_pin_configure_enter(const struct device *port, gpio_pin_t pin,
634 					gpio_flags_t flags);
635 void sys_trace_gpio_pin_configure_exit(const struct device *port, gpio_pin_t pin, int ret);
636 void sys_trace_gpio_port_get_direction_enter(const struct device *port, gpio_port_pins_t map,
637 					     gpio_port_pins_t *inputs, gpio_port_pins_t *outputs);
638 void sys_trace_gpio_port_get_direction_exit(const struct device *port, int ret);
639 void sys_trace_gpio_pin_get_config_enter(const struct device *port, gpio_pin_t pin,
640 					 gpio_flags_t flags);
641 void sys_trace_gpio_pin_get_config_exit(const struct device *port, gpio_pin_t pin, int ret);
642 void sys_trace_gpio_port_get_raw_enter(const struct device *port, gpio_port_value_t *value);
643 void sys_trace_gpio_port_get_raw_exit(const struct device *port, int ret);
644 void sys_trace_gpio_port_set_masked_raw_enter(const struct device *port, gpio_port_pins_t mask,
645 					      gpio_port_value_t value);
646 void sys_trace_gpio_port_set_masked_raw_exit(const struct device *port, int ret);
647 void sys_trace_gpio_port_set_bits_raw_enter(const struct device *port, gpio_port_pins_t pins);
648 void sys_trace_gpio_port_set_bits_raw_exit(const struct device *port, int ret);
649 void sys_trace_gpio_port_clear_bits_raw_enter(const struct device *port, gpio_port_pins_t pins);
650 void sys_trace_gpio_port_clear_bits_raw_exit(const struct device *port, int ret);
651 void sys_trace_gpio_port_toggle_bits_enter(const struct device *port, gpio_port_pins_t pins);
652 void sys_trace_gpio_port_toggle_bits_exit(const struct device *port, int ret);
653 void sys_trace_gpio_init_callback_enter(struct gpio_callback *callback,
654 					gpio_callback_handler_t handler, gpio_port_pins_t pin_mask);
655 void sys_trace_gpio_init_callback_exit(struct gpio_callback *callback);
656 void sys_trace_gpio_add_callback_enter(const struct device *port, struct gpio_callback *callback);
657 void sys_trace_gpio_add_callback_exit(const struct device *port, int ret);
658 void sys_trace_gpio_remove_callback_enter(const struct device *port,
659 					  struct gpio_callback *callback);
660 void sys_trace_gpio_remove_callback_exit(const struct device *port, int ret);
661 void sys_trace_gpio_get_pending_int_enter(const struct device *dev);
662 void sys_trace_gpio_get_pending_int_exit(const struct device *dev, int ret);
663 void sys_trace_gpio_fire_callbacks_enter(sys_slist_t *list, const struct device *port,
664 					 gpio_port_pins_t pins);
665 void sys_trace_gpio_fire_callback(const struct device *port, struct gpio_callback *callback);
666 
667 #define sys_port_trace_gpio_pin_interrupt_configure_enter(port, pin, flags)                        \
668 	sys_trace_gpio_pin_interrupt_configure_enter(port, pin, flags)
669 #define sys_port_trace_gpio_pin_interrupt_configure_exit(port, pin, ret)                           \
670 	sys_trace_gpio_pin_interrupt_configure_exit(port, pin, ret)
671 #define sys_port_trace_gpio_pin_configure_enter(port, pin, flags)                                  \
672 	sys_trace_gpio_pin_configure_enter(port, pin, flags)
673 #define sys_port_trace_gpio_pin_configure_exit(port, pin, ret)                                     \
674 	sys_trace_gpio_pin_configure_exit(port, pin, ret)
675 #define sys_port_trace_gpio_port_get_direction_enter(port, map, inputs, outputs)                   \
676 	sys_trace_gpio_port_get_direction_enter(port, map, inputs, outputs)
677 #define sys_port_trace_gpio_port_get_direction_exit(port, ret)                                     \
678 	sys_trace_gpio_port_get_direction_exit(port, ret)
679 #define sys_port_trace_gpio_pin_get_config_enter(port, pin, flags)                                 \
680 	sys_trace_gpio_pin_get_config_enter(port, pin, flags)
681 #define sys_port_trace_gpio_pin_get_config_exit(port, pin, ret)                                    \
682 	sys_trace_gpio_pin_get_config_exit(port, pin, ret)
683 #define sys_port_trace_gpio_port_get_raw_enter(port, value)                                        \
684 	sys_trace_gpio_port_get_raw_enter(port, value)
685 #define sys_port_trace_gpio_port_get_raw_exit(port, ret) sys_trace_gpio_port_get_raw_exit(port, ret)
686 #define sys_port_trace_gpio_port_set_masked_raw_enter(port, mask, value)                           \
687 	sys_trace_gpio_port_set_masked_raw_enter(port, mask, value)
688 #define sys_port_trace_gpio_port_set_masked_raw_exit(port, ret)                                    \
689 	sys_trace_gpio_port_set_masked_raw_exit(port, ret)
690 #define sys_port_trace_gpio_port_set_bits_raw_enter(port, pins)                                    \
691 	sys_trace_gpio_port_set_bits_raw_enter(port, pins)
692 #define sys_port_trace_gpio_port_set_bits_raw_exit(port, ret)                                      \
693 	sys_trace_gpio_port_set_bits_raw_exit(port, ret)
694 #define sys_port_trace_gpio_port_clear_bits_raw_enter(port, pins)                                  \
695 	sys_trace_gpio_port_clear_bits_raw_enter(port, pins)
696 #define sys_port_trace_gpio_port_clear_bits_raw_exit(port, ret)                                    \
697 	sys_trace_gpio_port_clear_bits_raw_exit(port, ret)
698 #define sys_port_trace_gpio_port_toggle_bits_enter(port, pins)                                     \
699 	sys_trace_gpio_port_toggle_bits_enter(port, pins)
700 #define sys_port_trace_gpio_port_toggle_bits_exit(port, ret)                                       \
701 	sys_trace_gpio_port_toggle_bits_exit(port, ret)
702 #define sys_port_trace_gpio_init_callback_enter(callback, handler, pin_mask)                       \
703 	sys_trace_gpio_init_callback_enter(callback, handler, pin_mask)
704 #define sys_port_trace_gpio_init_callback_exit(callback) sys_trace_gpio_init_callback_exit(callback)
705 #define sys_port_trace_gpio_add_callback_enter(port, callback)                                     \
706 	sys_trace_gpio_add_callback_enter(port, callback)
707 #define sys_port_trace_gpio_add_callback_exit(port, ret) sys_trace_gpio_add_callback_exit(port, ret)
708 #define sys_port_trace_gpio_remove_callback_enter(port, callback)                                  \
709 	sys_trace_gpio_remove_callback_enter(port, callback)
710 #define sys_port_trace_gpio_remove_callback_exit(port, ret)                                        \
711 	sys_trace_gpio_remove_callback_exit(port, ret)
712 #define sys_port_trace_gpio_get_pending_int_enter(dev) sys_trace_gpio_get_pending_int_enter(dev)
713 #define sys_port_trace_gpio_get_pending_int_exit(dev, ret)                                         \
714 	sys_trace_gpio_get_pending_int_exit(dev, ret)
715 #define sys_port_trace_gpio_fire_callbacks_enter(list, port, pins)                                 \
716 	sys_trace_gpio_fire_callbacks_enter(list, port, pins)
717 #define sys_port_trace_gpio_fire_callback(port, cb) sys_trace_gpio_fire_callback(port, cb)
718 
719 #ifdef __cplusplus
720 }
721 #endif
722 
723 #endif /* _TRACE_CTF_H */
724