/*
 * Copyright (c) 2021 Intel corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#ifndef ZEPHYR_TRACE_TEST_H
#define ZEPHYR_TRACE_TEST_H
#include <kernel.h>
#include <init.h>

#define sys_port_trace_k_thread_foreach_enter() sys_trace_k_thread_foreach_enter(user_cb, user_data)
#define sys_port_trace_k_thread_foreach_exit() sys_trace_k_thread_foreach_exit(user_cb, user_data)
#define sys_port_trace_k_thread_foreach_unlocked_enter()                                           \
	sys_trace_k_thread_foreach_unlocked_enter(user_cb, user_data)
#define sys_port_trace_k_thread_foreach_unlocked_exit()                                            \
	sys_trace_k_thread_foreach_unlocked_exit(user_cb, user_data)
#define sys_port_trace_k_thread_create(new_thread)                                                 \
	sys_trace_k_thread_create(new_thread, stack_size, prio)
#define sys_port_trace_k_thread_user_mode_enter()                                                  \
	sys_trace_k_thread_user_mode_enter(entry, p1, p2, p3)
#define sys_port_trace_k_thread_heap_assign(thread, heap)                                          \
	sys_trace_k_thread_heap_assign(thread, heap)
#define sys_port_trace_k_thread_join_enter(thread, timeout)                                        \
	sys_trace_k_thread_join_blocking(thread, timeout)
#define sys_port_trace_k_thread_join_blocking(thread, timeout)                                     \
	sys_trace_k_thread_join_blocking(thread, timeout)
#define sys_port_trace_k_thread_join_exit(thread, timeout, ret)                                    \
	sys_trace_k_thread_join_exit(thread, timeout, ret)
#define sys_port_trace_k_thread_sleep_enter(timeout) sys_trace_k_thread_sleep_enter(timeout)
#define sys_port_trace_k_thread_sleep_exit(timeout, ret) sys_trace_k_thread_sleep_exit(timeout, ret)
#define sys_port_trace_k_thread_msleep_enter(ms) sys_trace_k_thread_msleep_enter(ms)
#define sys_port_trace_k_thread_msleep_exit(ms, ret) sys_trace_k_thread_msleep_exit(ms, ret)
#define sys_port_trace_k_thread_usleep_enter(us) sys_trace_k_thread_usleep_enter(us)
#define sys_port_trace_k_thread_usleep_exit(us, ret) sys_trace_k_thread_usleep_exit(us, ret)
#define sys_port_trace_k_thread_busy_wait_enter(usec_to_wait)
#define sys_port_trace_k_thread_busy_wait_exit(usec_to_wait)
#define sys_port_trace_k_thread_yield() sys_trace_k_thread_yield()
#define sys_port_trace_k_thread_wakeup(thread) sys_trace_k_thread_wakeup(thread)
#define sys_port_trace_k_thread_start(thread) sys_trace_k_thread_start(thread)
#define sys_port_trace_k_thread_abort(thread) sys_trace_k_thread_abort(thread)
#define sys_port_trace_k_thread_priority_set(thread) sys_trace_k_thread_priority_set(thread)
#define sys_port_trace_k_thread_suspend_enter(thread) sys_trace_k_thread_suspend(thread)
#define sys_port_trace_k_thread_suspend_exit(thread)
#define sys_port_trace_k_thread_resume_enter(thread) sys_trace_k_thread_resume(thread)

#define sys_port_trace_k_thread_sched_lock(...) sys_trace_k_thread_sched_lock()

#define sys_port_trace_k_thread_sched_unlock(...) sys_trace_k_thread_sched_unlock()

#define sys_port_trace_k_thread_name_set(thread, ret) sys_trace_k_thread_name_set(thread, ret)

#define sys_port_trace_k_thread_switched_out() sys_trace_k_thread_switched_out()

#define sys_port_trace_k_thread_switched_in() sys_trace_k_thread_switched_in()

#define sys_port_trace_k_thread_info(thread) sys_trace_k_thread_info(thread)

#define sys_port_trace_k_thread_sched_wakeup(thread) sys_trace_k_thread_sched_wakeup(thread)
#define sys_port_trace_k_thread_sched_abort(thread) sys_trace_k_thread_sched_abort(thread)
#define sys_port_trace_k_thread_sched_priority_set(thread, prio)                                   \
	sys_trace_k_thread_sched_set_priority(thread, prio)
#define sys_port_trace_k_thread_sched_ready(thread) sys_trace_k_thread_sched_ready(thread)
#define sys_port_trace_k_thread_sched_pend(thread) sys_trace_k_thread_sched_pend(thread)
#define sys_port_trace_k_thread_sched_resume(thread) sys_trace_k_thread_sched_resume(thread)
#define sys_port_trace_k_thread_sched_suspend(thread) sys_trace_k_thread_sched_suspend(thread)

#define sys_port_trace_k_work_init(work)
#define sys_port_trace_k_work_submit_to_queue_enter(queue, work)
#define sys_port_trace_k_work_submit_to_queue_exit(queue, work, ret)
#define sys_port_trace_k_work_submit_enter(work)
#define sys_port_trace_k_work_submit_exit(work, ret)
#define sys_port_trace_k_work_flush_enter(work)
#define sys_port_trace_k_work_flush_blocking(work, timeout)
#define sys_port_trace_k_work_flush_exit(work, ret)
#define sys_port_trace_k_work_cancel_enter(work)
#define sys_port_trace_k_work_cancel_exit(work, ret)
#define sys_port_trace_k_work_cancel_sync_enter(work, sync)
#define sys_port_trace_k_work_cancel_sync_blocking(work, sync)
#define sys_port_trace_k_work_cancel_sync_exit(work, sync, ret)

#define sys_port_trace_k_work_queue_init(queue)
#define sys_port_trace_k_work_queue_start_enter(queue)
#define sys_port_trace_k_work_queue_start_exit(queue)
#define sys_port_trace_k_work_queue_drain_enter(queue)
#define sys_port_trace_k_work_queue_drain_exit(queue, ret)
#define sys_port_trace_k_work_queue_unplug_enter(queue)
#define sys_port_trace_k_work_queue_unplug_exit(queue, ret)

#define sys_port_trace_k_work_delayable_init(dwork)
#define sys_port_trace_k_work_schedule_for_queue_enter(queue, dwork, delay)
#define sys_port_trace_k_work_schedule_for_queue_exit(queue, dwork, delay, ret)
#define sys_port_trace_k_work_schedule_enter(dwork, delay)
#define sys_port_trace_k_work_schedule_exit(dwork, delay, ret)
#define sys_port_trace_k_work_reschedule_for_queue_enter(queue, dwork, delay)
#define sys_port_trace_k_work_reschedule_for_queue_exit(queue, dwork, delay, ret)
#define sys_port_trace_k_work_reschedule_enter(dwork, delay)
#define sys_port_trace_k_work_reschedule_exit(dwork, delay, ret)
#define sys_port_trace_k_work_flush_delayable_enter(dwork, sync)
#define sys_port_trace_k_work_flush_delayable_exit(dwork, sync, ret)
#define sys_port_trace_k_work_cancel_delayable_enter(dwork)
#define sys_port_trace_k_work_cancel_delayable_exit(dwork, ret)
#define sys_port_trace_k_work_cancel_delayable_sync_enter(dwork, sync)
#define sys_port_trace_k_work_cancel_delayable_sync_exit(dwork, sync, ret)

#define sys_port_trace_k_work_poll_init_enter(work)
#define sys_port_trace_k_work_poll_init_exit(work)
#define sys_port_trace_k_work_poll_submit_to_queue_enter(work_q, work, timeout)
#define sys_port_trace_k_work_poll_submit_to_queue_blocking(work_q, work, timeout)
#define sys_port_trace_k_work_poll_submit_to_queue_exit(work_q, work, timeout, ret)
#define sys_port_trace_k_work_poll_submit_enter(work, timeout)
#define sys_port_trace_k_work_poll_submit_exit(work, timeout, ret)
#define sys_port_trace_k_work_poll_cancel_enter(work)
#define sys_port_trace_k_work_poll_cancel_exit(work, ret)

#define sys_port_trace_k_poll_api_event_init(event)
#define sys_port_trace_k_poll_api_poll_enter(events)
#define sys_port_trace_k_poll_api_poll_exit(events, ret)
#define sys_port_trace_k_poll_api_signal_init(signal)
#define sys_port_trace_k_poll_api_signal_reset(signal)
#define sys_port_trace_k_poll_api_signal_check(signal)
#define sys_port_trace_k_poll_api_signal_raise(signal, ret)

#define sys_port_trace_k_sem_init(sem, ret) sys_trace_k_sem_init(sem, ret)
#define sys_port_trace_k_sem_give_enter(sem) sys_trace_k_sem_give_enter(sem)
#define sys_port_trace_k_sem_give_exit(sem)
#define sys_port_trace_k_sem_take_enter(sem, timeout) sys_trace_k_sem_take_enter(sem, timeout)
#define sys_port_trace_k_sem_take_blocking(sem, timeout) sys_trace_k_sem_take_blocking(sem, timeout)
#define sys_port_trace_k_sem_take_exit(sem, timeout, ret)                                          \
	sys_trace_k_sem_take_exit(sem, timeout, ret)
#define sys_port_trace_k_sem_reset(sem) sys_trace_k_sem_reset(sem)

#define sys_port_trace_k_mutex_init(mutex, ret) sys_trace_k_mutex_init(mutex, ret)
#define sys_port_trace_k_mutex_lock_enter(mutex, timeout)                                          \
	sys_trace_k_mutex_lock_enter(mutex, timeout)
#define sys_port_trace_k_mutex_lock_blocking(mutex, timeout)                                       \
	sys_trace_k_mutex_lock_blocking(mutex, timeout)
#define sys_port_trace_k_mutex_lock_exit(mutex, timeout, ret)                                      \
	sys_trace_k_mutex_lock_exit(mutex, timeout, ret)
#define sys_port_trace_k_mutex_unlock_enter(mutex) sys_trace_k_mutex_unlock_enter(mutex)
#define sys_port_trace_k_mutex_unlock_exit(mutex, ret) sys_trace_k_mutex_unlock_exit(mutex, ret)

#define sys_port_trace_k_condvar_init(condvar, ret) sys_trace_k_condvar_init(condvar, ret)
#define sys_port_trace_k_condvar_signal_enter(condvar) sys_trace_k_condvar_signal_enter(condvar)
#define sys_port_trace_k_condvar_signal_blocking(condvar, timeout)                                 \
	sys_trace_k_condvar_signal_blocking(condvar)
#define sys_port_trace_k_condvar_signal_exit(condvar, ret)                                         \
	sys_trace_k_condvar_signal_exit(condvar, ret)
#define sys_port_trace_k_condvar_broadcast_enter(condvar)                                          \
	sys_trace_k_condvar_broadcast_enter(condvar)
#define sys_port_trace_k_condvar_broadcast_exit(condvar, ret)                                      \
	sys_trace_k_condvar_broadcast_exit(condvar, ret)
#define sys_port_trace_k_condvar_wait_enter(condvar)                                               \
	sys_trace_k_condvar_wait_enter(condvar, mutex, timeout)
#define sys_port_trace_k_condvar_wait_exit(condvar, ret)                                           \
	sys_trace_k_condvar_wait_exit(condvar, mutex, timeout, ret)

#define sys_port_trace_k_queue_init(queue) sys_trace_k_queue_init(queue)
#define sys_port_trace_k_queue_cancel_wait(queue) sys_trace_k_queue_cancel_wait(queue)
#define sys_port_trace_k_queue_queue_insert_enter(queue, alloc)                                    \
	sys_trace_k_queue_queue_insert_enter(queue, alloc, data);
#define sys_port_trace_k_queue_queue_insert_blocking(queue, alloc, timeout)                        \
	sys_trace_k_queue_queue_insert_enter(queue, alloc, data);
#define sys_port_trace_k_queue_queue_insert_exit(queue, alloc, ret)                                \
	sys_trace_k_queue_queue_insert_exit(queue, alloc, data, ret);
#define sys_port_trace_k_queue_append_enter(queue) sys_trace_k_queue_append_enter(queue, data)
#define sys_port_trace_k_queue_append_exit(queue) sys_trace_k_queue_append_exit(queue, data)
#define sys_port_trace_k_queue_alloc_append_enter(queue)                                           \
	sys_trace_k_queue_alloc_append_enter(queue, data)
#define sys_port_trace_k_queue_alloc_append_exit(queue, ret)                                       \
	sys_trace_k_queue_alloc_append_exit(queue, data, ret)
#define sys_port_trace_k_queue_prepend_enter(queue) sys_trace_k_queue_prepend_enter(queue, data)
#define sys_port_trace_k_queue_prepend_exit(queue) sys_trace_k_queue_prepend_exit(queue, data)
#define sys_port_trace_k_queue_alloc_prepend_enter(queue)                                          \
	sys_trace_k_queue_alloc_prepend_enter(queue, data)
#define sys_port_trace_k_queue_alloc_prepend_exit(queue, ret)                                      \
	sys_trace_k_queue_alloc_prepend_exit(queue, data, ret)
#define sys_port_trace_k_queue_insert_enter(queue) sys_trace_k_queue_insert_enter(queue, prev, data)
#define sys_port_trace_k_queue_insert_blocking(queue, timeout)                                     \
	sys_trace_k_queue_insert_blocking(queue, prev, data)
#define sys_port_trace_k_queue_insert_exit(queue) sys_trace_k_queue_insert_exit(queue, prev, data)
#define sys_port_trace_k_queue_append_list_enter(queue)
#define sys_port_trace_k_queue_append_list_exit(queue, ret)                                        \
	sys_trace_k_queue_append_list_exit(queue, head, tail, ret)
#define sys_port_trace_k_queue_merge_slist_enter(queue)                                            \
	sys_trace_k_queue_merge_slist_enter(queue, list)
#define sys_port_trace_k_queue_merge_slist_exit(queue, ret)                                        \
	sys_trace_k_queue_merge_slist_exit(queue, list, ret)
#define sys_port_trace_k_queue_get_enter(queue, timeout)
#define sys_port_trace_k_queue_get_blocking(queue, timeout)                                        \
	sys_trace_k_queue_get_blocking(queue, timeout)
#define sys_port_trace_k_queue_get_exit(queue, timeout, ret)                                       \
	sys_trace_k_queue_get_exit(queue, timeout, ret)
#define sys_port_trace_k_queue_remove_enter(queue) sys_trace_k_queue_remove_enter(queue, data)
#define sys_port_trace_k_queue_remove_exit(queue, ret)                                             \
	sys_trace_k_queue_remove_exit(queue, data, ret)
#define sys_port_trace_k_queue_unique_append_enter(queue)                                          \
	sys_trace_k_queue_unique_append_enter(queue, data)
#define sys_port_trace_k_queue_unique_append_exit(queue, ret)                                      \
	sys_trace_k_queue_unique_append_exit(queue, data, ret)
#define sys_port_trace_k_queue_peek_head(queue, ret) sys_trace_k_queue_peek_head(queue, ret)
#define sys_port_trace_k_queue_peek_tail(queue, ret) sys_trace_k_queue_peek_tail(queue, ret)

/* FIFO */

#define sys_port_trace_k_fifo_init_enter(fifo) sys_trace_k_fifo_init_enter(fifo)

#define sys_port_trace_k_fifo_init_exit(fifo) sys_trace_k_fifo_init_exit(fifo)

#define sys_port_trace_k_fifo_cancel_wait_enter(fifo) sys_trace_k_fifo_cancel_wait_enter(fifo)

#define sys_port_trace_k_fifo_cancel_wait_exit(fifo) sys_trace_k_fifo_cancel_wait_exit(fifo)

#define sys_port_trace_k_fifo_put_enter(fifo, data) sys_trace_k_fifo_put_enter(fifo, data)

#define sys_port_trace_k_fifo_put_exit(fifo, data) sys_trace_k_fifo_put_exit(fifo, data)

#define sys_port_trace_k_fifo_alloc_put_enter(fifo, data)                                          \
	sys_trace_k_fifo_alloc_put_enter(fifo, data)

#define sys_port_trace_k_fifo_alloc_put_exit(fifo, data, ret)                                      \
	sys_trace_k_fifo_alloc_put_exit(fifo, data, ret)

#define sys_port_trace_k_fifo_put_list_enter(fifo, head, tail)                                     \
	sys_trace_k_fifo_put_list_enter(fifo, head, tail)

#define sys_port_trace_k_fifo_put_list_exit(fifo, head, tail)                                      \
	sys_trace_k_fifo_put_list_exit(fifo, head, tail)

#define sys_port_trace_k_fifo_put_slist_enter(fifo, list)                                          \
	sys_trace_k_fifo_put_slist_enter(fifo, list)

#define sys_port_trace_k_fifo_put_slist_exit(fifo, list) sys_trace_k_fifo_put_slist_exit(fifo, list)

#define sys_port_trace_k_fifo_get_enter(fifo, timeout) sys_trace_k_fifo_get_enter(fifo, timeout)

#define sys_port_trace_k_fifo_get_exit(fifo, timeout, ret)                                         \
	sys_trace_k_fifo_get_exit(fifo, timeout, ret)

#define sys_port_trace_k_fifo_peek_head_enter(fifo) sys_trace_k_fifo_peek_head_enter(fifo)

#define sys_port_trace_k_fifo_peek_head_exit(fifo, ret) sys_trace_k_fifo_peek_head_exit(fifo, ret)

#define sys_port_trace_k_fifo_peek_tail_enter(fifo) sys_trace_k_fifo_peek_tail_enter(fifo)

#define sys_port_trace_k_fifo_peek_tail_exit(fifo, ret) sys_trace_k_fifo_peek_tail_exit(fifo, ret)

/* LIFO */
#define sys_port_trace_k_lifo_init_enter(lifo) sys_trace_k_lifo_init_enter(lifo)

#define sys_port_trace_k_lifo_init_exit(lifo) sys_trace_k_lifo_init_exit(lifo)

#define sys_port_trace_k_lifo_put_enter(lifo, data) sys_trace_k_lifo_put_enter(lifo, data)

#define sys_port_trace_k_lifo_put_exit(lifo, data) sys_trace_k_lifo_put_exit(lifo, data)

#define sys_port_trace_k_lifo_alloc_put_enter(lifo, data)                                          \
	sys_trace_k_lifo_alloc_put_enter(lifo, data)

#define sys_port_trace_k_lifo_alloc_put_exit(lifo, data, ret)                                      \
	sys_trace_k_lifo_alloc_put_exit(lifo, data, ret)

#define sys_port_trace_k_lifo_get_enter(lifo, timeout) sys_trace_k_lifo_get_enter(lifo, timeout)

#define sys_port_trace_k_lifo_get_exit(lifo, timeout, ret)                                         \
	sys_trace_k_lifo_get_exit(lifo, timeout, ret)

/* Stack */
#define sys_port_trace_k_stack_init(stack) sys_trace_k_stack_init(stack, buffer, num_entries)

#define sys_port_trace_k_stack_alloc_init_enter(stack)                                             \
	sys_trace_k_stack_alloc_init_enter(stack, num_entries)

#define sys_port_trace_k_stack_alloc_init_exit(stack, ret)                                         \
	sys_trace_k_stack_alloc_init_exit(stack, num_entries, ret)

#define sys_port_trace_k_stack_cleanup_enter(stack) sys_trace_k_stack_cleanup_enter(stack)

#define sys_port_trace_k_stack_cleanup_exit(stack, ret) sys_trace_k_stack_cleanup_exit(stack, ret)

#define sys_port_trace_k_stack_push_enter(stack) sys_trace_k_stack_push_enter(stack, data)

#define sys_port_trace_k_stack_push_exit(stack, ret) sys_trace_k_stack_push_exit(stack, data, ret)

#define sys_port_trace_k_stack_pop_enter(stack, timeout)

#define sys_port_trace_k_stack_pop_blocking(stack, timeout)                                        \
	sys_trace_k_stack_pop_blocking(stack, data, timeout)

#define sys_port_trace_k_stack_pop_exit(stack, timeout, ret)                                       \
	sys_trace_k_stack_pop_exit(stack, data, timeout, ret)

/* Message Queue */
#define sys_port_trace_k_msgq_init(msgq) sys_trace_k_msgq_init(msgq)

#define sys_port_trace_k_msgq_alloc_init_enter(msgq)                                               \
	sys_trace_k_msgq_alloc_init_enter(msgq, msg_size, max_msgs)

#define sys_port_trace_k_msgq_alloc_init_exit(msgq, ret)                                           \
	sys_trace_k_msgq_alloc_init_exit(msgq, msg_size, max_msgs, ret)

#define sys_port_trace_k_msgq_cleanup_enter(msgq) sys_trace_k_msgq_cleanup_enter(msgq)

#define sys_port_trace_k_msgq_cleanup_exit(msgq, ret) sys_trace_k_msgq_cleanup_exit(msgq, ret)

#define sys_port_trace_k_msgq_put_enter(msgq, timeout)                                             \
	sys_trace_k_msgq_put_enter(msgq, data, timeout)

#define sys_port_trace_k_msgq_put_blocking(msgq, timeout)                                          \
	sys_trace_k_msgq_put_blocking(msgq, data, timeout)
#define sys_port_trace_k_msgq_put_exit(msgq, timeout, ret)                                         \
	sys_trace_k_msgq_put_exit(msgq, data, timeout, ret)
#define sys_port_trace_k_msgq_get_enter(msgq, timeout)                                             \
	sys_trace_k_msgq_get_enter(msgq, data, timeout)
#define sys_port_trace_k_msgq_get_blocking(msgq, timeout)                                          \
	sys_trace_k_msgq_get_blocking(msgq, data, timeout)
#define sys_port_trace_k_msgq_get_exit(msgq, timeout, ret)                                         \
	sys_trace_k_msgq_get_exit(msgq, data, timeout, ret)
#define sys_port_trace_k_msgq_peek(msgq, ret) sys_trace_k_msgq_peek(msgq, data, ret)
#define sys_port_trace_k_msgq_purge(msgq) sys_trace_k_msgq_purge(msgq)

#define sys_port_trace_k_mbox_init(mbox) sys_trace_k_mbox_init(mbox)
#define sys_port_trace_k_mbox_message_put_enter(mbox, timeout)                                     \
	sys_trace_k_mbox_message_put_enter(mbox, tx_msg, timeout)
#define sys_port_trace_k_mbox_message_put_blocking(mbox, timeout)                                  \
	sys_trace_k_mbox_message_put_blocking(mbox, tx_msg, timeout)
#define sys_port_trace_k_mbox_message_put_exit(mbox, timeout, ret)                                 \
	sys_trace_k_mbox_message_put_exit(mbox, tx_msg, timeout, ret)
#define sys_port_trace_k_mbox_put_enter(mbox, timeout)                                             \
	sys_trace_k_mbox_put_enter(mbox, tx_msg, timeout)
#define sys_port_trace_k_mbox_put_exit(mbox, timeout, ret)                                         \
	sys_trace_k_mbox_put_exit(mbox, tx_msg, timeout, ret)
#define sys_port_trace_k_mbox_async_put_enter(mbox, sem) sys_trace_k_mbox_async_put_enter(mbox, sem)
#define sys_port_trace_k_mbox_async_put_exit(mbox, sem) sys_trace_k_mbox_async_put_exit(mbox, sem)
#define sys_port_trace_k_mbox_get_enter(mbox, timeout)                                             \
	sys_trace_k_mbox_get_enter(mbox, rx_msg, buffer, timeout)
#define sys_port_trace_k_mbox_get_blocking(mbox, timeout)                                          \
	sys_trace_k_mbox_get_blocking(mbox, rx_msg, buffer, timeout)
#define sys_port_trace_k_mbox_get_exit(mbox, timeout, ret)                                         \
	sys_trace_k_mbox_get_exit(mbox, rx_msg, buffer, timeout, ret)
#define sys_port_trace_k_mbox_data_get(rx_msg) sys_trace_k_mbox_data_get(mbox, rx_msg, buffer)

#define sys_port_trace_k_pipe_init(pipe) sys_trace_k_pipe_init(pipe, buffer, size)
#define sys_port_trace_k_pipe_cleanup_enter(pipe) sys_trace_k_pipe_cleanup_enter(pipe)
#define sys_port_trace_k_pipe_cleanup_exit(pipe, ret) sys_trace_k_pipe_cleanup_exit(pipe, ret)
#define sys_port_trace_k_pipe_alloc_init_enter(pipe) sys_trace_k_pipe_alloc_init_enter(pipe, size)
#define sys_port_trace_k_pipe_alloc_init_exit(pipe, ret)                                           \
	sys_trace_k_pipe_alloc_init_exit(pipe, size, ret)
#define sys_port_trace_k_pipe_flush_enter(pipe)  \
	sys_trace_k_pipe_flush_enter(pipe)
#define sys_port_trace_k_pipe_flush_exit(pipe)   \
	sys_trace_k_pipe_flush_exit(pipe)
#define sys_port_trace_k_pipe_buffer_flush_enter(pipe)  \
	sys_trace_k_pipe_buffer_flush_enter(pipe)
#define sys_port_trace_k_pipe_buffer_flush_exit(pipe)   \
	sys_trace_k_pipe_buffer_flush_exit(pipe)

#define sys_port_trace_k_pipe_put_enter(pipe, timeout)                                             \
	sys_trace_k_pipe_put_enter(pipe, data, bytes_to_write, bytes_written, min_xfer, timeout)
#define sys_port_trace_k_pipe_put_blocking(pipe, timeout)                                          \
	sys_trace_k_pipe_put_blocking(pipe, data, bytes_to_write, bytes_written, min_xfer, timeout)
#define sys_port_trace_k_pipe_put_exit(pipe, timeout, ret)                                         \
	sys_trace_k_pipe_put_exit(pipe, data, bytes_to_write, bytes_written, min_xfer, timeout, ret)
#define sys_port_trace_k_pipe_get_enter(pipe, timeout)                                             \
	sys_trace_k_pipe_get_enter(pipe, data, bytes_to_read, bytes_read, min_xfer, timeout)
#define sys_port_trace_k_pipe_get_blocking(pipe, timeout)                                          \
	sys_trace_k_pipe_get_blocking(pipe, data, bytes_to_read, bytes_read, min_xfer, timeout)
#define sys_port_trace_k_pipe_get_exit(pipe, timeout, ret)                                         \
	sys_trace_k_pipe_get_exit(pipe, data, bytes_to_read, bytes_read, min_xfer, timeout, ret)
#define sys_port_trace_k_pipe_block_put_enter(pipe, sem)                                           \
	sys_trace_k_pipe_block_put_enter(pipe, block, bytes_to_write, sem)
#define sys_port_trace_k_pipe_block_put_exit(pipe, sem)                                            \
	sys_trace_k_pipe_block_put_exit(pipe, block, bytes_to_write, sem)

#define sys_port_trace_k_heap_init(h) sys_trace_k_heap_init(h, mem, bytes)
#define sys_port_trace_k_heap_aligned_alloc_enter(h, timeout)                                      \
	sys_trace_k_heap_aligned_alloc_enter(h, bytes, timeout)
#define sys_port_trace_k_heap_aligned_alloc_blocking(h, timeout)                                   \
	sys_trace_k_heap_aligned_alloc_blocking(h, bytes, timeout)
#define sys_port_trace_k_heap_aligned_alloc_exit(h, timeout, ret)                                  \
	sys_trace_k_heap_aligned_alloc_exit(h, bytes, timeout, ret)
#define sys_port_trace_k_heap_alloc_enter(h, timeout)                                              \
	sys_trace_k_heap_alloc_enter(h, bytes, timeout)
#define sys_port_trace_k_heap_alloc_exit(h, timeout, ret)                                          \
	sys_trace_k_heap_alloc_exit(h, bytes, timeout, ret)
#define sys_port_trace_k_heap_free(h) sys_trace_k_heap_free(h, mem)
#define sys_port_trace_k_heap_sys_k_aligned_alloc_enter(heap)                                      \
	sys_trace_k_heap_sys_k_aligned_alloc_enter(heap, align, size)
#define sys_port_trace_k_heap_sys_k_aligned_alloc_exit(heap, ret)                                  \
	sys_trace_k_heap_sys_k_aligned_alloc_exit(heap, align, size, ret)
#define sys_port_trace_k_heap_sys_k_malloc_enter(heap)                                             \
	sys_trace_k_heap_sys_k_malloc_enter(heap, size)
#define sys_port_trace_k_heap_sys_k_malloc_exit(heap, ret)                                         \
	sys_trace_k_heap_sys_k_malloc_exit(heap, size, ret)
#define sys_port_trace_k_heap_sys_k_free_enter(heap, heap_ref)                                     \
	sys_trace_k_heap_sys_k_free_enter(heap, heap_ref)
#define sys_port_trace_k_heap_sys_k_free_exit(heap, heap_ref)                                      \
	sys_trace_k_heap_sys_k_free_exit(heap, heap_ref)
#define sys_port_trace_k_heap_sys_k_calloc_enter(heap)                                             \
	sys_trace_k_heap_sys_k_calloc_enter(heap, nmemb, size)
#define sys_port_trace_k_heap_sys_k_calloc_exit(heap, ret)                                         \
	sys_trace_k_heap_sys_k_calloc_exit(heap, nmemb, size, ret)

#define sys_port_trace_k_mem_slab_init(slab, rc)                                                   \
	sys_trace_k_mem_slab_init(slab, buffer, block_size, num_blocks, rc)
#define sys_port_trace_k_mem_slab_alloc_enter(slab, timeout)                                       \
	sys_trace_k_mem_slab_alloc_enter(slab, mem, timeout)
#define sys_port_trace_k_mem_slab_alloc_blocking(slab, timeout)                                    \
	sys_trace_k_mem_slab_alloc_blocking(slab, mem, timeout)
#define sys_port_trace_k_mem_slab_alloc_exit(slab, timeout, ret)                                   \
	sys_trace_k_mem_slab_alloc_exit(slab, mem, timeout, ret)
#define sys_port_trace_k_mem_slab_free_enter(slab)
#define sys_port_trace_k_mem_slab_free_exit(slab) sys_trace_k_mem_slab_free_exit(slab, mem)

#define sys_port_trace_k_timer_init(timer) sys_trace_k_timer_init(timer, expiry_fn, stop_fn)
#define sys_port_trace_k_timer_start(timer) sys_trace_k_timer_start(timer, duration, period)
#define sys_port_trace_k_timer_stop(timer) sys_trace_k_timer_stop(timer)
#define sys_port_trace_k_timer_status_sync_enter(timer)
#define sys_port_trace_k_timer_status_sync_blocking(timer, timeout)                                \
	sys_trace_k_timer_status_sync_blocking(timer)
#define sys_port_trace_k_timer_status_sync_exit(timer, result)                                     \
	sys_trace_k_timer_status_sync_exit(timer, result)

#define sys_port_trace_k_event_init(event) sys_trace_k_event_init(event)
#define sys_port_trace_k_event_post_enter(event, events, accumulate)   \
	sys_trace_k_event_post_enter(event, events, accumulate)
#define sys_port_trace_k_event_post_exit(event, events, accumulate)   \
	sys_trace_k_event_post_exit(event, events, accumulate)
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout)   \
	sys_trace_k_event_wait_enter(event, events, options, timeout)
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout) \
	sys_trace_k_event_wait_blocking(event, events, options, timeout)
#define sys_port_trace_k_event_wait_exit(event, events, ret)   \
	sys_trace_k_event_wait_exit(event, events, ret)

#define sys_port_trace_k_thread_abort_exit(thread) sys_trace_k_thread_abort_exit(thread)

#define sys_port_trace_k_thread_abort_enter(thread) sys_trace_k_thread_abort_enter(thread)

#define sys_port_trace_k_thread_resume_exit(thread) sys_trace_k_thread_resume_exit(thread)

#define sys_port_trace_pm_system_suspend_enter(ticks)
#define sys_port_trace_pm_system_suspend_exit(ticks, state)

#define sys_port_trace_pm_device_runtime_get_enter(dev)
#define sys_port_trace_pm_device_runtime_get_exit(dev, ret)
#define sys_port_trace_pm_device_runtime_put_enter(dev)
#define sys_port_trace_pm_device_runtime_put_exit(dev, ret)
#define sys_port_trace_pm_device_runtime_put_async_enter(dev)
#define sys_port_trace_pm_device_runtime_put_async_exit(dev, ret)
#define sys_port_trace_pm_device_runtime_enable_enter(dev)
#define sys_port_trace_pm_device_runtime_enable_exit(dev, ret)
#define sys_port_trace_pm_device_runtime_disable_enter(dev)
#define sys_port_trace_pm_device_runtime_disable_exit(dev, ret)

void sys_trace_idle(void);
void sys_trace_isr_enter(void);
void sys_trace_isr_exit(void);

void sys_trace_k_thread_abort_exit(struct k_thread *thread);
void sys_trace_k_thread_abort_enter(struct k_thread *thread);
void sys_trace_k_thread_resume_exit(struct k_thread *thread);
void sys_trace_k_thread_sched_wakeup(struct k_thread *thread);
void sys_trace_k_thread_sched_abort(struct k_thread *thread);
void sys_trace_k_thread_sched_set_priority(struct k_thread *thread, int prio);
void sys_trace_k_thread_sched_ready(struct k_thread *thread);
void sys_trace_k_thread_sched_pend(struct k_thread *thread);
void sys_trace_k_thread_sched_resume(struct k_thread *thread);
void sys_trace_k_thread_sched_suspend(struct k_thread *thread);

void sys_trace_k_thread_foreach_enter(k_thread_user_cb_t user_cb, void *user_data);
void sys_trace_k_thread_foreach_exit(k_thread_user_cb_t user_cb, void *user_data);
void sys_trace_k_thread_foreach_unlocked_enter(k_thread_user_cb_t user_cb, void *user_data);
void sys_trace_k_thread_foreach_unlocked_exit(k_thread_user_cb_t user_cb, void *user_data);
void sys_trace_k_thread_create(struct k_thread *new_thread, size_t stack_size, int prio);
void sys_trace_k_thread_user_mode_enter(k_thread_entry_t entry, void *p1, void *p2, void *p3);
void sys_trace_k_thread_heap_assign(struct k_thread *thread, struct k_heap *heap);
void sys_trace_k_thread_join_blocking(struct k_thread *thread, k_timeout_t timeout);
void sys_trace_k_thread_join_exit(struct k_thread *thread, k_timeout_t timeout, int ret);
void sys_trace_k_thread_sleep_enter(k_timeout_t timeout);
void sys_trace_k_thread_sleep_exit(k_timeout_t timeout, int ret);
void sys_trace_k_thread_msleep_enter(int32_t ms);
void sys_trace_k_thread_msleep_exit(int32_t ms, int ret);
void sys_trace_k_thread_usleep_enter(int32_t us);
void sys_trace_k_thread_usleep_exit(int32_t us, int ret);

void sys_trace_k_thread_yield(void);
void sys_trace_k_thread_wakeup(struct k_thread *thread);
void sys_trace_k_thread_abort(struct k_thread *thread);
void sys_trace_k_thread_start(struct k_thread *thread);
void sys_trace_k_thread_priority_set(struct k_thread *thread);
void sys_trace_k_thread_suspend(struct k_thread *thread);
void sys_trace_k_thread_resume(struct k_thread *thread);
void sys_trace_k_thread_sched_lock(void);
void sys_trace_k_thread_sched_unlock(void);
void sys_trace_k_thread_name_set(struct k_thread *thread, int ret);
void sys_trace_k_thread_switched_out(void);
void sys_trace_k_thread_switched_in(void);
void sys_trace_k_thread_ready(struct k_thread *thread);
void sys_trace_k_thread_pend(struct k_thread *thread);
void sys_trace_k_thread_info(struct k_thread *thread);

void sys_trace_k_sem_init(struct k_sem *sem, int ret);
void sys_trace_k_sem_give_enter(struct k_sem *sem);
void sys_trace_k_sem_take_enter(struct k_sem *sem, k_timeout_t timeout);
void sys_trace_k_sem_take_blocking(struct k_sem *sem, k_timeout_t timeout);
void sys_trace_k_sem_take_exit(struct k_sem *sem, k_timeout_t timeout, int ret);
void sys_trace_k_sem_reset(struct k_sem *sem);

void sys_trace_k_mutex_init(struct k_mutex *mutex, int ret);
void sys_trace_k_mutex_lock_enter(struct k_mutex *mutex, k_timeout_t timeout);
void sys_trace_k_mutex_lock_blocking(struct k_mutex *mutex, k_timeout_t timeout);
void sys_trace_k_mutex_lock_exit(struct k_mutex *mutex, k_timeout_t timeout, int ret);
void sys_trace_k_mutex_unlock_enter(struct k_mutex *mutex);
void sys_trace_k_mutex_unlock_exit(struct k_mutex *mutex, int ret);

void sys_trace_k_condvar_init(struct k_condvar *condvar, int ret);
void sys_trace_k_condvar_signal_enter(struct k_condvar *condvar);
void sys_trace_k_condvar_signal_blocking(struct k_condvar *condvar);
void sys_trace_k_condvar_signal_exit(struct k_condvar *condvar, int ret);
void sys_trace_k_condvar_broadcast_enter(struct k_condvar *condvar);
void sys_trace_k_condvar_broadcast_exit(struct k_condvar *condvar, int ret);
void sys_trace_k_condvar_wait_enter(struct k_condvar *condvar, struct k_mutex *mutex,
				    k_timeout_t timeout);
void sys_trace_k_condvar_wait_exit(struct k_condvar *condvar, struct k_mutex *mutex,
				   k_timeout_t timeout, int ret);

void sys_trace_k_queue_init(struct k_queue *queue);
void sys_trace_k_queue_cancel_wait(struct k_queue *queue);
void sys_trace_k_queue_queue_insert_enter(struct k_queue *queue, bool alloc, void *data);
void sys_trace_k_queue_queue_insert_blocking(struct k_queue *queue, bool alloc, void *data);
void sys_trace_k_queue_queue_insert_exit(struct k_queue *queue, bool alloc, void *data, int ret);
void sys_trace_k_queue_append_enter(struct k_queue *queue, void *data);
void sys_trace_k_queue_append_exit(struct k_queue *queue, void *data);
void sys_trace_k_queue_alloc_append_enter(struct k_queue *queue, void *data);
void sys_trace_k_queue_alloc_append_exit(struct k_queue *queue, void *data, int ret);
void sys_trace_k_queue_prepend_enter(struct k_queue *queue, void *data);
void sys_trace_k_queue_prepend_exit(struct k_queue *queue, void *data);
void sys_trace_k_queue_alloc_prepend_enter(struct k_queue *queue, void *data);
void sys_trace_k_queue_alloc_prepend_exit(struct k_queue *queue, void *data, int ret);
void sys_trace_k_queue_insert_enter(struct k_queue *queue, void *prev, void *data);
void sys_trace_k_queue_insert_exit(struct k_queue *queue, void *prev, void *data);
void sys_trace_k_queue_append_list_exit(struct k_queue *queue, void *head, void *tail, int ret);
void sys_trace_k_queue_merge_slist_enter(struct k_queue *queue, sys_slist_t *list);
void sys_trace_k_queue_merge_slist_exit(struct k_queue *queue, sys_slist_t *list, int ret);
void sys_trace_k_queue_get_blocking(struct k_queue *queue, k_timeout_t timeout);
void sys_trace_k_queue_get_exit(struct k_queue *queue, k_timeout_t timeout, void *ret);
void sys_trace_k_queue_remove_enter(struct k_queue *queue, void *data);
void sys_trace_k_queue_remove_exit(struct k_queue *queue, void *data, bool ret);
void sys_trace_k_queue_unique_append_enter(struct k_queue *queue, void *data);
void sys_trace_k_queue_unique_append_exit(struct k_queue *queue, void *data, bool ret);
void sys_trace_k_queue_peek_head(struct k_queue *queue, void *ret);
void sys_trace_k_queue_peek_tail(struct k_queue *queue, void *ret);

void sys_trace_k_fifo_init_enter(struct k_fifo *fifo);
void sys_trace_k_fifo_init_exit(struct k_fifo *fifo);
void sys_trace_k_fifo_cancel_wait_enter(struct k_fifo *fifo);
void sys_trace_k_fifo_cancel_wait_exit(struct k_fifo *fifo);
void sys_trace_k_fifo_put_enter(struct k_fifo *fifo, void *data);
void sys_trace_k_fifo_put_exit(struct k_fifo *fifo, void *data);
void sys_trace_k_fifo_alloc_put_enter(struct k_fifo *fifo, void *data);
void sys_trace_k_fifo_alloc_put_exit(struct k_fifo *fifo, void *data, int ret);
void sys_trace_k_fifo_put_list_enter(struct k_fifo *fifo, void *head, void *tail);
void sys_trace_k_fifo_put_list_exit(struct k_fifo *fifo, void *head, void *tail);
void sys_trace_k_fifo_put_slist_enter(struct k_fifo *fifo, sys_slist_t *list);
void sys_trace_k_fifo_put_slist_exit(struct k_fifo *fifo, sys_slist_t *list);
void sys_trace_k_fifo_get_enter(struct k_fifo *fifo, k_timeout_t timeout);
void sys_trace_k_fifo_get_exit(struct k_fifo *fifo, k_timeout_t timeout, void *ret);
void sys_trace_k_fifo_peek_head_enter(struct k_fifo *fifo);
void sys_trace_k_fifo_peek_head_exit(struct k_fifo *fifo, void *ret);
void sys_trace_k_fifo_peek_tail_enter(struct k_fifo *fifo);
void sys_trace_k_fifo_peek_tail_exit(struct k_fifo *fifo, void *ret);

void sys_trace_k_lifo_init_enter(struct k_lifo *lifo);
void sys_trace_k_lifo_init_exit(struct k_lifo *lifo);
void sys_trace_k_lifo_put_enter(struct k_lifo *lifo, void *data);
void sys_trace_k_lifo_put_exit(struct k_lifo *lifo, void *data);
void sys_trace_k_lifo_alloc_put_enter(struct k_lifo *lifo, void *data);
void sys_trace_k_lifo_alloc_put_exit(struct k_lifo *lifo, void *data, int ret);
void sys_trace_k_lifo_get_enter(struct k_lifo *lifo, k_timeout_t timeout);
void sys_trace_k_lifo_get_exit(struct k_lifo *lifo, k_timeout_t timeout, void *ret);

void sys_trace_k_stack_init(struct k_stack *stack, stack_data_t *buffer, uint32_t num_entries);
void sys_trace_k_stack_alloc_init_enter(struct k_stack *stack, uint32_t num_entries);
void sys_trace_k_stack_alloc_init_exit(struct k_stack *stack, uint32_t num_entries, int ret);
void sys_trace_k_stack_cleanup_enter(struct k_stack *stack);
void sys_trace_k_stack_cleanup_exit(struct k_stack *stack, int ret);
void sys_trace_k_stack_push_enter(struct k_stack *stack, stack_data_t data);
void sys_trace_k_stack_push_exit(struct k_stack *stack, stack_data_t data, int ret);
void sys_trace_k_stack_pop_blocking(struct k_stack *stack, stack_data_t *data, k_timeout_t timeout);
void sys_trace_k_stack_pop_exit(struct k_stack *stack, stack_data_t *data, k_timeout_t timeout,
				int ret);

void sys_trace_k_mbox_init(struct k_mbox *mbox);
void sys_trace_k_mbox_message_put_enter(struct k_mbox *mbox, struct k_mbox_msg *tx_msg,
					k_timeout_t timeout);
void sys_trace_k_mbox_message_put_blocking(struct k_mbox *mbox, struct k_mbox_msg *tx_msg,
					   k_timeout_t timeout);
void sys_trace_k_mbox_message_put_exit(struct k_mbox *mbox, struct k_mbox_msg *tx_msg,
				       k_timeout_t timeout, int ret);
void sys_trace_k_mbox_put_enter(struct k_mbox *mbox, struct k_mbox_msg *tx_msg,
				k_timeout_t timeout);
void sys_trace_k_mbox_put_exit(struct k_mbox *mbox, struct k_mbox_msg *tx_msg, k_timeout_t timeout,
			       int ret);
void sys_trace_k_mbox_async_put_enter(struct k_mbox *mbox, struct k_sem *sem);
void sys_trace_k_mbox_async_put_exit(struct k_mbox *mbox, struct k_sem *sem);
void sys_trace_k_mbox_get_enter(struct k_mbox *mbox, struct k_mbox_msg *rx_msg, void *buffer,
				k_timeout_t timeout);
void sys_trace_k_mbox_get_blocking(struct k_mbox *mbox, struct k_mbox_msg *rx_msg, void *buffer,
				   k_timeout_t timeout);
void sys_trace_k_mbox_get_exit(struct k_mbox *mbox, struct k_mbox_msg *rx_msg, void *buffer,
			       k_timeout_t timeout, int ret);
void sys_trace_k_mbox_data_get(struct k_mbox *mbox, struct k_mbox_msg *rx_msg, void *buffer);

void sys_trace_k_pipe_init(struct k_pipe *pipe, unsigned char *buffer, size_t size);
void sys_trace_k_pipe_cleanup_enter(struct k_pipe *pipe);
void sys_trace_k_pipe_cleanup_exit(struct k_pipe *pipe, int ret);
void sys_trace_k_pipe_alloc_init_enter(struct k_pipe *pipe, size_t size);
void sys_trace_k_pipe_alloc_init_exit(struct k_pipe *pipe, size_t size, int ret);
void sys_trace_k_pipe_flush_enter(struct k_pipe *pipe);
void sys_trace_k_pipe_flush_exit(struct k_pipe *pipe);
void sys_trace_k_pipe_buffer_flush_enter(struct k_pipe *pipe);
void sys_trace_k_pipe_buffer_flush_exit(struct k_pipe *pipe);
void sys_trace_k_pipe_put_enter(struct k_pipe *pipe, void *data, size_t bytes_to_write,
				size_t *bytes_written, size_t min_xfer, k_timeout_t timeout);
void sys_trace_k_pipe_put_blocking(struct k_pipe *pipe, void *data, size_t bytes_to_write,
				   size_t *bytes_written, size_t min_xfer, k_timeout_t timeout);
void sys_trace_k_pipe_put_exit(struct k_pipe *pipe, void *data, size_t bytes_to_write,
			       size_t *bytes_written, size_t min_xfer, k_timeout_t timeout,
			       int ret);
void sys_trace_k_pipe_get_enter(struct k_pipe *pipe, void *data, size_t bytes_to_read,
				size_t *bytes_read, size_t min_xfer, k_timeout_t timeout);
void sys_trace_k_pipe_get_blocking(struct k_pipe *pipe, void *data, size_t bytes_to_read,
				   size_t *bytes_read, size_t min_xfer, k_timeout_t timeout);
void sys_trace_k_pipe_get_exit(struct k_pipe *pipe, void *data, size_t bytes_to_read,
			       size_t *bytes_read, size_t min_xfer, k_timeout_t timeout, int ret);
void sys_trace_k_pipe_block_put_enter(struct k_pipe *pipe, struct k_mem_block *block, size_t size,
				      struct k_sem *sem);
void sys_trace_k_pipe_block_put_exit(struct k_pipe *pipe, struct k_mem_block *block, size_t size,
				     struct k_sem *sem);

void sys_trace_k_msgq_init(struct k_msgq *msgq);
void sys_trace_k_msgq_alloc_init_enter(struct k_msgq *msgq, size_t msg_size, uint32_t max_msgs);
void sys_trace_k_msgq_alloc_init_exit(struct k_msgq *msgq, size_t msg_size, uint32_t max_msgs,
				      int ret);
void sys_trace_k_msgq_cleanup_enter(struct k_msgq *msgq);
void sys_trace_k_msgq_cleanup_exit(struct k_msgq *msgq, int ret);
void sys_trace_k_msgq_put_enter(struct k_msgq *msgq, const void *data, k_timeout_t timeout);
void sys_trace_k_msgq_put_blocking(struct k_msgq *msgq, const void *data, k_timeout_t timeout);
void sys_trace_k_msgq_put_exit(struct k_msgq *msgq, const void *data, k_timeout_t timeout, int ret);
void sys_trace_k_msgq_get_enter(struct k_msgq *msgq, const void *data, k_timeout_t timeout);
void sys_trace_k_msgq_get_blocking(struct k_msgq *msgq, const void *data, k_timeout_t timeout);
void sys_trace_k_msgq_get_exit(struct k_msgq *msgq, const void *data, k_timeout_t timeout, int ret);
void sys_trace_k_msgq_peek(struct k_msgq *msgq, void *data, int ret);
void sys_trace_k_msgq_purge(struct k_msgq *msgq);

void sys_trace_k_heap_init(struct k_heap *h, void *mem, size_t bytes);
void sys_trace_k_heap_alloc_enter(struct k_heap *h, size_t bytes, k_timeout_t timeout);
void sys_trace_k_heap_alloc_exit(struct k_heap *h, size_t bytes, k_timeout_t timeout, void *ret);
void sys_trace_k_heap_aligned_alloc_enter(struct k_heap *h, size_t bytes, k_timeout_t timeout);
void sys_trace_k_heap_aligned_alloc_blocking(struct k_heap *h, size_t bytes, k_timeout_t timeout);
void sys_trace_k_heap_aligned_alloc_exit(struct k_heap *h, size_t bytes, k_timeout_t timeout,
					 void *ret);
void sys_trace_k_heap_free(struct k_heap *h, void *mem);
void sys_trace_k_heap_sys_k_aligned_alloc_enter(struct k_heap *h, size_t align, size_t size);
void sys_trace_k_heap_sys_k_aligned_alloc_exit(struct k_heap *h, size_t align, size_t size,
					       void *ret);
void sys_trace_k_heap_sys_k_malloc_enter(struct k_heap *h, size_t size);
void sys_trace_k_heap_sys_k_malloc_exit(struct k_heap *h, size_t size, void *ret);
void sys_trace_k_heap_sys_k_free_enter(struct k_heap *h, struct k_heap **heap_ref);
void sys_trace_k_heap_sys_k_free_exit(struct k_heap *h, struct k_heap **heap_ref);
void sys_trace_k_heap_sys_k_calloc_enter(struct k_heap *h, size_t nmemb, size_t size);
void sys_trace_k_heap_sys_k_calloc_exit(struct k_heap *h, size_t nmemb, size_t size, void *ret);

void sys_trace_k_mem_slab_init(struct k_mem_slab *slab, void *buffer, size_t block_size,
			       uint32_t num_blocks, int ret);
void sys_trace_k_mem_slab_alloc_enter(struct k_mem_slab *slab, void **mem, k_timeout_t timeout);
void sys_trace_k_mem_slab_alloc_blocking(struct k_mem_slab *slab, void **mem, k_timeout_t timeout);
void sys_trace_k_mem_slab_alloc_exit(struct k_mem_slab *slab, void **mem, k_timeout_t timeout,
				     int ret);
void sys_trace_k_mem_slab_free_exit(struct k_mem_slab *slab, void **mem);

void sys_trace_k_timer_init(struct k_timer *timer, k_timer_expiry_t expiry_fn,
			    k_timer_expiry_t stop_fn);
void sys_trace_k_timer_start(struct k_timer *timer, k_timeout_t duration, k_timeout_t period);
void sys_trace_k_timer_stop(struct k_timer *timer);
void sys_trace_k_timer_status_sync_blocking(struct k_timer *timer);
void sys_trace_k_timer_status_sync_exit(struct k_timer *timer, uint32_t result);

void sys_trace_k_event_init(struct k_event *event);

#endif /* ZEPHYR_TRACE_TEST_H */
