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