tracing_sysview.h 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  1. /*
  2. * Copyright (c) 2018 Intel Corporation
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #ifndef ZEPHYR_TRACE_SYSVIEW_H
  7. #define ZEPHYR_TRACE_SYSVIEW_H
  8. #include <string.h>
  9. #include <kernel.h>
  10. #include <init.h>
  11. #include <SEGGER_SYSVIEW.h>
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. #define TID_OFFSET (32u)
  16. #define TID_SCHED_LOCK (0u + TID_OFFSET)
  17. #define TID_SCHED_UNLOCK (1u + TID_OFFSET)
  18. #define TID_BUSYWAIT (2u + TID_OFFSET)
  19. #define TID_IRQ_ENABLE (3u + TID_OFFSET)
  20. #define TID_IRQ_DISABLE (4u + TID_OFFSET)
  21. #define TID_MUTEX_INIT (5u + TID_OFFSET)
  22. #define TID_MUTEX_UNLOCK (6u + TID_OFFSET)
  23. #define TID_MUTEX_LOCK (7u + TID_OFFSET)
  24. #define TID_SEMA_INIT (8u + TID_OFFSET)
  25. #define TID_SEMA_GIVE (9u + TID_OFFSET)
  26. #define TID_SEMA_TAKE (10u + TID_OFFSET)
  27. #define TID_SEMA_RESET (59u + TID_OFFSET)
  28. #define TID_QUEUE_INIT (11u + TID_OFFSET)
  29. #define TID_QUEUE_APPEND (12u + TID_OFFSET)
  30. #define TID_QUEUE_ALLOC_APPEND (13u + TID_OFFSET)
  31. #define TID_QUEUE_PREPEND (14u + TID_OFFSET)
  32. #define TID_QUEUE_ALLOC_PREPEND (15u + TID_OFFSET)
  33. #define TID_QUEUE_INSERT (16u + TID_OFFSET)
  34. #define TID_QUEUE_APPEND_LIST (17u + TID_OFFSET)
  35. #define TID_QUEUE_GET (18u + TID_OFFSET)
  36. #define TID_QUEUE_REMOVE (19u + TID_OFFSET)
  37. #define TID_QUEUE_CANCEL_WAIT (20u + TID_OFFSET)
  38. #define TID_QUEUE_PEAK_HEAD (21u + TID_OFFSET)
  39. #define TID_QUEUE_PEAK_TAIL (22u + TID_OFFSET)
  40. #define TID_STACK_INIT (23u + TID_OFFSET)
  41. #define TID_STACK_PUSH (24u + TID_OFFSET)
  42. #define TID_STACK_POP (25u + TID_OFFSET)
  43. #define TID_QUEUE_STACK_CLEANUP (26u + TID_OFFSET)
  44. #define TID_MSGQ_INIT (27u + TID_OFFSET)
  45. #define TID_MSGQ_PUT (28u + TID_OFFSET)
  46. #define TID_MSGQ_GET (29u + TID_OFFSET)
  47. #define TID_MSGQ_CLEANUP (30u + TID_OFFSET)
  48. #define TID_MSQG_PEEK (31u + TID_OFFSET)
  49. #define TID_MSGQ_PURGE (32u + TID_OFFSET)
  50. #define TID_MBOX_INIT (33u + TID_OFFSET)
  51. #define TID_MBOX_PUT (34u + TID_OFFSET)
  52. #define TID_MBOX_ASYNC_PUT (35u + TID_OFFSET)
  53. #define TID_MBOX_GET (36u + TID_OFFSET)
  54. #define TID_MBOX_DATA_GET (37u + TID_OFFSET)
  55. #define TID_MBOX_DATA_BLOCK_GET (38u + TID_OFFSET)
  56. #define TID_PIPE_INIT (39u + TID_OFFSET)
  57. #define TID_PIPE_CLEANUP (40u + TID_OFFSET)
  58. #define TID_PIPE_PUT (41u + TID_OFFSET)
  59. #define TID_PIPE_GET (42u + TID_OFFSET)
  60. #define TID_PIPE_BLOCK_GET (43u + TID_OFFSET)
  61. #define TID_HEAP_INIT (44u + TID_OFFSET)
  62. #define TID_HEAP_ALLOC (45u + TID_OFFSET)
  63. #define TID_HEAP_FREE (46u + TID_OFFSET)
  64. #define TID_HEAP_ALIGNED_ALLOC (47u + TID_OFFSET)
  65. #define TID_MSLAB_INIT (52u + TID_OFFSET)
  66. #define TID_MSLAB_ALLOC (53u + TID_OFFSET)
  67. #define TID_MSLAB_FREE (54u + TID_OFFSET)
  68. #define TID_TIMER_INIT (55u + TID_OFFSET)
  69. #define TID_TIMER_START (56u + TID_OFFSET)
  70. #define TID_TIMER_STOP (57u + TID_OFFSET)
  71. #define TID_TIMER_STATUS_SYNC (58u + TID_OFFSET)
  72. #define TID_TIMER_USER_DATA_SET (59u + TID_OFFSET)
  73. #define TID_TIMER_USER_DATA_GET (60u + TID_OFFSET)
  74. #define TID_TIMER_EXPIRY_FN (61u + TID_OFFSET)
  75. #define TID_TIMER_STOP_FN (62u + TID_OFFSET)
  76. #define TID_SLEEP (63u + TID_OFFSET)
  77. #define TID_MSLEEP (64u + TID_OFFSET)
  78. #define TID_USLEEP (65u + TID_OFFSET)
  79. #define TID_THREAD_PRIORITY_SET (66u + TID_OFFSET)
  80. #define TID_THREAD_WAKEUP (67u + TID_OFFSET)
  81. #define TID_THREAD_ABORT (68u + TID_OFFSET)
  82. #define TID_THREAD_START (69u + TID_OFFSET)
  83. #define TID_THREAD_SUSPEND (70u + TID_OFFSET)
  84. #define TID_THREAD_RESUME (71u + TID_OFFSET)
  85. #define TID_THREAD_JOIN (72u + TID_OFFSET)
  86. #define TID_THREAD_YIELD (73u + TID_OFFSET)
  87. #define TID_THREAD_USERMODE_ENTER (74u + TID_OFFSET)
  88. #define TID_THREAD_FOREACH (75u + TID_OFFSET)
  89. #define TID_THREAD_FOREACH_UNLOCKED (76u + TID_OFFSET)
  90. #define TID_THREAD_NAME_SET (123u + TID_OFFSET)
  91. #define TID_CONDVAR_INIT (77u + TID_OFFSET)
  92. #define TID_CONDVAR_SIGNAL (78u + TID_OFFSET)
  93. #define TID_CONDVAR_BROADCAST (79u + TID_OFFSET)
  94. #define TID_CONDVAR_WAIT (80u + TID_OFFSET)
  95. #define TID_WORK_CANCEL (81u + TID_OFFSET)
  96. #define TID_WORK_CANCEL_DELAYABLE (82u + TID_OFFSET)
  97. #define TID_WORK_CANCEL_DELAYABLE_SYNC (83u + TID_OFFSET)
  98. #define TID_WORK_CANCEL_SYNC (84u + TID_OFFSET)
  99. #define TID_WORK_DELAYABLE_INIT (85u + TID_OFFSET)
  100. #define TID_WORK_QUEUE_DRAIN (86u + TID_OFFSET)
  101. #define TID_WORK_FLUSH (87u + TID_OFFSET)
  102. #define TID_WORK_FLUSH_DELAYABLE (88u + TID_OFFSET)
  103. #define TID_WORK_INIT (89u + TID_OFFSET)
  104. #define TID_WORK_POLL_CANCEL (90u + TID_OFFSET)
  105. #define TID_WORK_POLL_INIT (91u + TID_OFFSET)
  106. #define TID_WORK_POLL_SUBMIT (92u + TID_OFFSET)
  107. #define TID_WORK_POLL_SUBMIT_TO_QUEUE (93u + TID_OFFSET)
  108. #define TID_WORK_QUEUE_START (94u + TID_OFFSET)
  109. #define TID_WORK_RESCHEDULE (95u + TID_OFFSET)
  110. #define TID_WORK_RESCHEDULE_FOR_QUEUE (96u + TID_OFFSET)
  111. #define TID_WORK_SCHEDULE (97u + TID_OFFSET)
  112. #define TID_WORK_SCHEDULE_FOR_QUEUE (98u + TID_OFFSET)
  113. #define TID_WORK_SUBMIT (99u + TID_OFFSET)
  114. #define TID_WORK_SUBMIT_TO_QUEUE (100u + TID_OFFSET)
  115. #define TID_WORK_QUEUE_UNPLUG (101u + TID_OFFSET)
  116. #define TID_WORK_QUEUE_INIT (102u + TID_OFFSET)
  117. #define TID_FIFO_INIT (110u + TID_OFFSET)
  118. #define TID_FIFO_CANCEL_WAIT (111u + TID_OFFSET)
  119. #define TID_FIFO_ALLOC_PUT (112u + TID_OFFSET)
  120. #define TID_FIFO_PUT_LIST (113u + TID_OFFSET)
  121. #define TID_FIFO_PUT_SLIST (114u + TID_OFFSET)
  122. #define TID_FIFO_PEAK_HEAD (115u + TID_OFFSET)
  123. #define TID_FIFO_PEAK_TAIL (116u + TID_OFFSET)
  124. #define TID_FIFO_PUT (117u + TID_OFFSET)
  125. #define TID_FIFO_GET (118u + TID_OFFSET)
  126. #define TID_LIFO_INIT (119u + TID_OFFSET)
  127. #define TID_LIFO_PUT (120u + TID_OFFSET)
  128. #define TID_LIFO_GET (121u + TID_OFFSET)
  129. #define TID_LIFO_ALLOC_PUT (122u + TID_OFFSET)
  130. #define TID_PM_SUSPEND (124u + TID_OFFSET)
  131. #define TID_PM_DEVICE_REQUEST (125u + TID_OFFSET)
  132. #define TID_PM_DEVICE_ENABLE (126u + TID_OFFSET)
  133. #define TID_PM_DEVICE_DISABLE (127u + TID_OFFSET)
  134. /* latest ID is 127 */
  135. void sys_trace_thread_info(struct k_thread *thread);
  136. #define sys_port_trace_k_thread_foreach_enter() SEGGER_SYSVIEW_RecordVoid(TID_THREAD_FOREACH)
  137. #define sys_port_trace_k_thread_foreach_exit() SEGGER_SYSVIEW_RecordEndCall(TID_THREAD_FOREACH)
  138. #define sys_port_trace_k_thread_foreach_unlocked_enter() \
  139. SEGGER_SYSVIEW_RecordVoid(TID_THREAD_FOREACH_UNLOCKED)
  140. #define sys_port_trace_k_thread_foreach_unlocked_exit() \
  141. SEGGER_SYSVIEW_RecordEndCall(TID_THREAD_FOREACH_UNLOCKED)
  142. #define sys_port_trace_k_thread_create(new_thread) \
  143. do { \
  144. SEGGER_SYSVIEW_OnTaskCreate((uint32_t)(uintptr_t)new_thread); \
  145. sys_trace_thread_info(new_thread); \
  146. } while (0)
  147. #define sys_port_trace_k_thread_user_mode_enter() \
  148. SEGGER_SYSVIEW_RecordVoid(TID_THREAD_USERMODE_ENTER)
  149. #define sys_port_trace_k_thread_heap_assign(thread, heap)
  150. #define sys_port_trace_k_thread_join_enter(thread, timeout) \
  151. SEGGER_SYSVIEW_RecordU32x2(TID_THREAD_JOIN, (uint32_t)(uintptr_t)thread, \
  152. (uint32_t)timeout.ticks)
  153. #define sys_port_trace_k_thread_join_blocking(thread, timeout)
  154. #define sys_port_trace_k_thread_join_exit(thread, timeout, ret) \
  155. SEGGER_SYSVIEW_RecordEndCallU32(TID_THREAD_JOIN, (int32_t)ret)
  156. #define sys_port_trace_k_thread_sleep_enter(timeout) \
  157. SEGGER_SYSVIEW_RecordU32(TID_SLEEP, (uint32_t)k_ticks_to_ms_floor32(timeout.ticks))
  158. #define sys_port_trace_k_thread_sleep_exit(timeout, ret) \
  159. SEGGER_SYSVIEW_RecordEndCallU32(TID_SLEEP, (int32_t)ret)
  160. #define sys_port_trace_k_thread_msleep_enter(ms) SEGGER_SYSVIEW_RecordU32(TID_MSLEEP, (uint32_t)ms)
  161. #define sys_port_trace_k_thread_msleep_exit(ms, ret) \
  162. SEGGER_SYSVIEW_RecordEndCallU32(TID_MSLEEP, (int32_t)ret)
  163. #define sys_port_trace_k_thread_usleep_enter(us) SEGGER_SYSVIEW_RecordU32(TID_USLEEP, (uint32_t)us)
  164. #define sys_port_trace_k_thread_usleep_exit(us, ret) \
  165. SEGGER_SYSVIEW_RecordEndCallU32(TID_USLEEP, (int32_t)ret)
  166. #define sys_port_trace_k_thread_busy_wait_enter(usec_to_wait) \
  167. SEGGER_SYSVIEW_RecordU32(TID_BUSYWAIT, (uint32_t)usec_to_wait)
  168. #define sys_port_trace_k_thread_busy_wait_exit(usec_to_wait) \
  169. SEGGER_SYSVIEW_RecordEndCall(TID_BUSYWAIT)
  170. #define sys_port_trace_k_thread_yield() SEGGER_SYSVIEW_RecordVoid(TID_THREAD_YIELD)
  171. #define sys_port_trace_k_thread_wakeup(thread) \
  172. SEGGER_SYSVIEW_RecordU32(TID_THREAD_WAKEUP, (uint32_t)(uintptr_t)thread)
  173. #define sys_port_trace_k_thread_start(thread) \
  174. SEGGER_SYSVIEW_RecordU32(TID_THREAD_START, (uint32_t)(uintptr_t)thread)
  175. #define sys_port_trace_k_thread_abort(thread) \
  176. SEGGER_SYSVIEW_RecordU32(TID_THREAD_ABORT, (uint32_t)(uintptr_t)thread)
  177. #define sys_port_trace_k_thread_suspend_enter(thread) \
  178. SEGGER_SYSVIEW_RecordU32(TID_THREAD_SUSPEND, (uint32_t)(uintptr_t)thread)
  179. #define sys_port_trace_k_thread_suspend_exit(thread) \
  180. SEGGER_SYSVIEW_RecordEndCall(TID_THREAD_SUSPEND)
  181. #define sys_port_trace_k_thread_resume_enter(thread) \
  182. SEGGER_SYSVIEW_RecordU32(TID_THREAD_RESUME, (uint32_t)(uintptr_t)thread)
  183. #define sys_port_trace_k_thread_resume_exit(thread) SEGGER_SYSVIEW_RecordEndCall(TID_THREAD_RESUME)
  184. #define sys_port_trace_k_thread_sched_lock()
  185. #define sys_port_trace_k_thread_sched_unlock()
  186. #define sys_port_trace_k_thread_name_set(thread, ret) do { \
  187. SEGGER_SYSVIEW_RecordU32(TID_THREAD_NAME_SET, (uint32_t)(uintptr_t)thread); \
  188. sys_trace_thread_info(thread); \
  189. } while (0)
  190. #define sys_port_trace_k_thread_switched_out() sys_trace_k_thread_switched_out()
  191. #define sys_port_trace_k_thread_switched_in() sys_trace_k_thread_switched_in()
  192. #define sys_port_trace_k_thread_info(thread) sys_trace_k_thread_info(thread)
  193. #define sys_port_trace_k_thread_sched_wakeup(thread) \
  194. SEGGER_SYSVIEW_RecordU32(TID_THREAD_WAKEUP, (uint32_t)(uintptr_t)thread)
  195. #define sys_port_trace_k_thread_sched_abort(thread) \
  196. SEGGER_SYSVIEW_RecordU32(TID_THREAD_ABORT, (uint32_t)(uintptr_t)thread)
  197. #define sys_port_trace_k_thread_sched_priority_set(thread, prio) \
  198. SEGGER_SYSVIEW_RecordU32x2(TID_THREAD_PRIORITY_SET, \
  199. SEGGER_SYSVIEW_ShrinkId((uint32_t)thread), prio);
  200. #define sys_port_trace_k_thread_sched_ready(thread) \
  201. SEGGER_SYSVIEW_OnTaskStartReady((uint32_t)(uintptr_t)thread)
  202. #define sys_port_trace_k_thread_sched_pend(thread) \
  203. SEGGER_SYSVIEW_OnTaskStopReady((uint32_t)(uintptr_t)thread, 3 << 3)
  204. #define sys_port_trace_k_thread_sched_resume(thread)
  205. #define sys_port_trace_k_thread_sched_suspend(thread) \
  206. SEGGER_SYSVIEW_OnTaskStopReady((uint32_t)(uintptr_t)thread, 3 << 3)
  207. #define sys_port_trace_k_work_init(work) \
  208. SEGGER_SYSVIEW_RecordU32(TID_WORK_INIT, (uint32_t)(uintptr_t)work)
  209. #define sys_port_trace_k_work_submit_to_queue_enter(queue, work) \
  210. SEGGER_SYSVIEW_RecordU32x2(TID_WORK_SUBMIT_TO_QUEUE, (uint32_t)(uintptr_t)queue, \
  211. (uint32_t)(uintptr_t)work)
  212. #define sys_port_trace_k_work_submit_to_queue_exit(queue, work, ret) \
  213. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_SUBMIT_TO_QUEUE, (uint32_t)ret)
  214. #define sys_port_trace_k_work_submit_enter(work) \
  215. SEGGER_SYSVIEW_RecordU32(TID_WORK_SUBMIT, (uint32_t)(uintptr_t)work)
  216. #define sys_port_trace_k_work_submit_exit(work, ret) \
  217. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_SUBMIT, (uint32_t)ret)
  218. #define sys_port_trace_k_work_flush_enter(work) \
  219. SEGGER_SYSVIEW_RecordU32(TID_WORK_FLUSH, (uint32_t)(uintptr_t)work)
  220. #define sys_port_trace_k_work_flush_blocking(work, timeout)
  221. #define sys_port_trace_k_work_flush_exit(work, ret) \
  222. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_FLUSH, (uint32_t)ret)
  223. #define sys_port_trace_k_work_cancel_enter(work) \
  224. SEGGER_SYSVIEW_RecordU32(TID_WORK_CANCEL, (uint32_t)(uintptr_t)work)
  225. #define sys_port_trace_k_work_cancel_exit(work, ret) \
  226. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_CANCEL, (uint32_t)ret)
  227. #define sys_port_trace_k_work_cancel_sync_enter(work, sync) \
  228. SEGGER_SYSVIEW_RecordU32x2(TID_WORK_CANCEL_SYNC, (uint32_t)(uintptr_t)work, \
  229. (uint32_t)(uintptr_t)sync)
  230. #define sys_port_trace_k_work_cancel_sync_blocking(work, sync)
  231. #define sys_port_trace_k_work_cancel_sync_exit(work, sync, ret) \
  232. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_CANCEL_SYNC, (uint32_t)ret)
  233. #define sys_port_trace_k_work_queue_init(queue) \
  234. SEGGER_SYSVIEW_RecordU32(TID_WORK_QUEUE_INIT, \
  235. (uint32_t)(uintptr_t)queue)
  236. #define sys_port_trace_k_work_queue_start_enter(queue) \
  237. SEGGER_SYSVIEW_RecordU32(TID_WORK_QUEUE_START, (uint32_t)(uintptr_t)queue)
  238. #define sys_port_trace_k_work_queue_start_exit(queue) \
  239. SEGGER_SYSVIEW_RecordEndCall(TID_WORK_QUEUE_START)
  240. #define sys_port_trace_k_work_queue_drain_enter(queue) \
  241. SEGGER_SYSVIEW_RecordU32(TID_WORK_QUEUE_DRAIN, (uint32_t)(uintptr_t)queue)
  242. #define sys_port_trace_k_work_queue_drain_exit(queue, ret) \
  243. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_QUEUE_DRAIN, (uint32_t)ret)
  244. #define sys_port_trace_k_work_queue_unplug_enter(queue) \
  245. SEGGER_SYSVIEW_RecordU32(TID_WORK_QUEUE_UNPLUG, (uint32_t)(uintptr_t)queue)
  246. #define sys_port_trace_k_work_queue_unplug_exit(queue, ret) \
  247. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_QUEUE_UNPLUG, (uint32_t)ret)
  248. #define sys_port_trace_k_work_delayable_init(dwork) \
  249. SEGGER_SYSVIEW_RecordU32(TID_WORK_DELAYABLE_INIT, (uint32_t)(uintptr_t)dwork)
  250. #define sys_port_trace_k_work_schedule_for_queue_enter(queue, dwork, delay) \
  251. SEGGER_SYSVIEW_RecordU32x3(TID_WORK_SCHEDULE_FOR_QUEUE, (uint32_t)(uintptr_t)queue, \
  252. (uint32_t)(uintptr_t)dwork, (uint32_t)delay.ticks)
  253. #define sys_port_trace_k_work_schedule_for_queue_exit(queue, dwork, delay, ret) \
  254. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_SCHEDULE_FOR_QUEUE, (uint32_t)ret)
  255. #define sys_port_trace_k_work_schedule_enter(dwork, delay) \
  256. SEGGER_SYSVIEW_RecordU32x2(TID_WORK_SCHEDULE, (uint32_t)(uintptr_t)dwork, \
  257. (uint32_t)delay.ticks)
  258. #define sys_port_trace_k_work_schedule_exit(dwork, delay, ret) \
  259. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_SCHEDULE, (uint32_t)ret)
  260. #define sys_port_trace_k_work_reschedule_for_queue_enter(queue, dwork, delay) \
  261. SEGGER_SYSVIEW_RecordU32x3(TID_WORK_RESCHEDULE_FOR_QUEUE, (uint32_t)(uintptr_t)queue, \
  262. (uint32_t)(uintptr_t)dwork, (uint32_t)delay.ticks)
  263. #define sys_port_trace_k_work_reschedule_for_queue_exit(queue, dwork, delay, ret) \
  264. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_RESCHEDULE_FOR_QUEUE, (uint32_t)ret)
  265. #define sys_port_trace_k_work_reschedule_enter(dwork, delay) \
  266. SEGGER_SYSVIEW_RecordU32x2(TID_WORK_RESCHEDULE, (uint32_t)(uintptr_t)dwork, \
  267. (uint32_t)delay.ticks)
  268. #define sys_port_trace_k_work_reschedule_exit(dwork, delay, ret) \
  269. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_RESCHEDULE, (uint32_t)ret)
  270. #define sys_port_trace_k_work_flush_delayable_enter(dwork, sync) \
  271. SEGGER_SYSVIEW_RecordU32x2(TID_WORK_FLUSH_DELAYABLE, (uint32_t)(uintptr_t)dwork, \
  272. (uint32_t)(uintptr_t)sync)
  273. #define sys_port_trace_k_work_flush_delayable_exit(dwork, sync, ret) \
  274. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_FLUSH_DELAYABLE, (uint32_t)ret)
  275. #define sys_port_trace_k_work_cancel_delayable_enter(dwork) \
  276. SEGGER_SYSVIEW_RecordU32(TID_WORK_CANCEL_DELAYABLE, (uint32_t)(uintptr_t)dwork)
  277. #define sys_port_trace_k_work_cancel_delayable_exit(dwork, ret) \
  278. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_CANCEL_DELAYABLE, (uint32_t)ret)
  279. #define sys_port_trace_k_work_cancel_delayable_sync_enter(dwork, sync) \
  280. SEGGER_SYSVIEW_RecordU32x2(TID_WORK_CANCEL_DELAYABLE_SYNC, (uint32_t)(uintptr_t)dwork, \
  281. (uint32_t)(uintptr_t)sync)
  282. #define sys_port_trace_k_work_cancel_delayable_sync_exit(dwork, sync, ret) \
  283. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_CANCEL_DELAYABLE_SYNC, (uint32_t)ret)
  284. #define sys_port_trace_k_work_poll_init_enter(work) \
  285. SEGGER_SYSVIEW_RecordU32(TID_WORK_POLL_INIT, (uint32_t)(uintptr_t)work)
  286. #define sys_port_trace_k_work_poll_init_exit(work) SEGGER_SYSVIEW_RecordEndCall(TID_WORK_POLL_INIT)
  287. #define sys_port_trace_k_work_poll_submit_to_queue_enter(work_q, work, timeout) \
  288. SEGGER_SYSVIEW_RecordU32x3(TID_WORK_POLL_SUBMIT_TO_QUEUE, (uint32_t)(uintptr_t)work_q, \
  289. (uint32_t)(uintptr_t)work, (uint32_t)timeout.ticks)
  290. #define sys_port_trace_k_work_poll_submit_to_queue_blocking(work_q, work, timeout)
  291. #define sys_port_trace_k_work_poll_submit_to_queue_exit(work_q, work, timeout, ret) \
  292. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_POLL_SUBMIT_TO_QUEUE, (uint32_t)ret)
  293. #define sys_port_trace_k_work_poll_submit_enter(work, timeout) \
  294. SEGGER_SYSVIEW_RecordU32x2(TID_WORK_POLL_SUBMIT, (uint32_t)(uintptr_t)work, \
  295. (uint32_t)timeout.ticks)
  296. #define sys_port_trace_k_work_poll_submit_exit(work, timeout, ret) \
  297. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_POLL_SUBMIT, (uint32_t)ret)
  298. #define sys_port_trace_k_work_poll_cancel_enter(work) \
  299. SEGGER_SYSVIEW_RecordU32(TID_WORK_POLL_CANCEL, (uint32_t)(uintptr_t)work)
  300. #define sys_port_trace_k_work_poll_cancel_exit(work, ret) \
  301. SEGGER_SYSVIEW_RecordEndCallU32(TID_WORK_POLL_CANCEL, (uint32_t)ret)
  302. #define sys_port_trace_k_poll_api_event_init(event)
  303. #define sys_port_trace_k_poll_api_poll_enter(events)
  304. #define sys_port_trace_k_poll_api_poll_exit(events, ret)
  305. #define sys_port_trace_k_poll_api_signal_init(signal)
  306. #define sys_port_trace_k_poll_api_signal_reset(signal)
  307. #define sys_port_trace_k_poll_api_signal_check(signal)
  308. #define sys_port_trace_k_poll_api_signal_raise(signal, ret)
  309. #define sys_port_trace_k_sem_init(sem, ret) \
  310. SEGGER_SYSVIEW_RecordU32x2(TID_SEMA_INIT, (uint32_t)(uintptr_t)sem, (int32_t)ret)
  311. #define sys_port_trace_k_sem_give_enter(sem) \
  312. SEGGER_SYSVIEW_RecordU32(TID_SEMA_GIVE, (uint32_t)(uintptr_t)sem)
  313. #define sys_port_trace_k_sem_give_exit(sem) SEGGER_SYSVIEW_RecordEndCall(TID_SEMA_GIVE)
  314. #define sys_port_trace_k_sem_take_enter(sem, timeout) \
  315. SEGGER_SYSVIEW_RecordU32x2(TID_SEMA_TAKE, (uint32_t)(uintptr_t)sem, (uint32_t)timeout.ticks)
  316. #define sys_port_trace_k_sem_take_blocking(sem, timeout)
  317. #define sys_port_trace_k_sem_take_exit(sem, timeout, ret) \
  318. SEGGER_SYSVIEW_RecordEndCallU32(TID_SEMA_TAKE, (int32_t)ret)
  319. #define sys_port_trace_k_sem_reset(sem) \
  320. SEGGER_SYSVIEW_RecordU32(TID_SEMA_RESET, (uint32_t)(uintptr_t)sem)
  321. #define sys_port_trace_k_mutex_init(mutex, ret) \
  322. SEGGER_SYSVIEW_RecordU32x2(TID_MUTEX_INIT, (uint32_t)(uintptr_t)mutex, (int32_t)ret)
  323. #define sys_port_trace_k_mutex_lock_enter(mutex, timeout) \
  324. SEGGER_SYSVIEW_RecordU32x2(TID_MUTEX_LOCK, (uint32_t)(uintptr_t)mutex, \
  325. (uint32_t)timeout.ticks)
  326. #define sys_port_trace_k_mutex_lock_blocking(mutex, timeout)
  327. #define sys_port_trace_k_mutex_lock_exit(mutex, timeout, ret) \
  328. SEGGER_SYSVIEW_RecordEndCallU32(TID_MUTEX_LOCK, (int32_t)ret)
  329. #define sys_port_trace_k_mutex_unlock_enter(mutex) \
  330. SEGGER_SYSVIEW_RecordU32(TID_MUTEX_UNLOCK, (uint32_t)(uintptr_t)mutex)
  331. #define sys_port_trace_k_mutex_unlock_exit(mutex, ret) \
  332. SEGGER_SYSVIEW_RecordEndCallU32(TID_MUTEX_UNLOCK, (uint32_t)ret)
  333. #define sys_port_trace_k_condvar_init(condvar, ret) \
  334. SEGGER_SYSVIEW_RecordU32(TID_CONDVAR_INIT, (uint32_t)(uintptr_t)condvar)
  335. #define sys_port_trace_k_condvar_signal_enter(condvar) \
  336. SEGGER_SYSVIEW_RecordU32(TID_CONDVAR_SIGNAL, (uint32_t)(uintptr_t)condvar)
  337. #define sys_port_trace_k_condvar_signal_blocking(condvar, timeout)
  338. #define sys_port_trace_k_condvar_signal_exit(condvar, ret) \
  339. SEGGER_SYSVIEW_RecordEndCallU32(TID_CONDVAR_SIGNAL, (uint32_t)ret)
  340. #define sys_port_trace_k_condvar_broadcast_enter(condvar) \
  341. SEGGER_SYSVIEW_RecordU32(TID_CONDVAR_BROADCAST, (uint32_t)(uintptr_t)condvar)
  342. #define sys_port_trace_k_condvar_broadcast_exit(condvar, ret) \
  343. SEGGER_SYSVIEW_RecordEndCallU32(TID_CONDVAR_BROADCAST, (uint32_t)ret)
  344. #define sys_port_trace_k_condvar_wait_enter(condvar) \
  345. SEGGER_SYSVIEW_RecordU32(TID_CONDVAR_WAIT, (uint32_t)(uintptr_t)condvar)
  346. #define sys_port_trace_k_condvar_wait_exit(condvar, ret) \
  347. SEGGER_SYSVIEW_RecordEndCallU32(TID_CONDVAR_WAIT, (uint32_t)ret)
  348. #define sys_port_trace_k_queue_init(queue) \
  349. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_INIT, (uint32_t)(uintptr_t)queue)
  350. #define sys_port_trace_k_queue_cancel_wait(queue) \
  351. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_CANCEL_WAIT, (uint32_t)(uintptr_t)queue)
  352. #define sys_port_trace_k_queue_queue_insert_enter(queue, alloc)
  353. #define sys_port_trace_k_queue_queue_insert_blocking(queue, alloc, timeout)
  354. #define sys_port_trace_k_queue_queue_insert_exit(queue, alloc, ret)
  355. #define sys_port_trace_k_queue_append_enter(queue) \
  356. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_APPEND, (uint32_t)(uintptr_t)queue)
  357. #define sys_port_trace_k_queue_append_exit(queue) SEGGER_SYSVIEW_RecordEndCall(TID_QUEUE_APPEND)
  358. #define sys_port_trace_k_queue_alloc_append_enter(queue) \
  359. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_ALLOC_APPEND, (uint32_t)(uintptr_t)queue)
  360. #define sys_port_trace_k_queue_alloc_append_exit(queue, ret) \
  361. SEGGER_SYSVIEW_RecordEndCallU32(TID_QUEUE_ALLOC_APPEND, (uint32_t)ret)
  362. #define sys_port_trace_k_queue_prepend_enter(queue) \
  363. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_PREPEND, (uint32_t)(uintptr_t)queue)
  364. #define sys_port_trace_k_queue_prepend_exit(queue) SEGGER_SYSVIEW_RecordEndCall(TID_QUEUE_PREPEND)
  365. #define sys_port_trace_k_queue_alloc_prepend_enter(queue) \
  366. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_ALLOC_PREPEND, (uint32_t)(uintptr_t)queue)
  367. #define sys_port_trace_k_queue_alloc_prepend_exit(queue, ret) \
  368. SEGGER_SYSVIEW_RecordEndCallU32(TID_QUEUE_ALLOC_PREPEND, (uint32_t)ret)
  369. #define sys_port_trace_k_queue_insert_enter(queue) \
  370. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_INSERT, (uint32_t)(uintptr_t)queue)
  371. #define sys_port_trace_k_queue_insert_blocking(queue, timeout)
  372. #define sys_port_trace_k_queue_insert_exit(queue) SEGGER_SYSVIEW_RecordEndCall(TID_QUEUE_INSERT)
  373. #define sys_port_trace_k_queue_append_list_enter(queue) \
  374. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_APPEND_LIST, (uint32_t)(uintptr_t)queue)
  375. #define sys_port_trace_k_queue_append_list_exit(queue, ret) \
  376. SEGGER_SYSVIEW_RecordEndCallU32(TID_QUEUE_APPEND_LIST, (uint32_t)ret)
  377. #define sys_port_trace_k_queue_merge_slist_enter(queue)
  378. #define sys_port_trace_k_queue_merge_slist_exit(queue, ret)
  379. #define sys_port_trace_k_queue_get_enter(queue, timeout) \
  380. SEGGER_SYSVIEW_RecordU32x2(TID_QUEUE_GET, (uint32_t)(uintptr_t)queue, \
  381. (uint32_t)timeout.ticks)
  382. #define sys_port_trace_k_queue_get_blocking(queue, timeout)
  383. #define sys_port_trace_k_queue_get_exit(queue, timeout, data) \
  384. SEGGER_SYSVIEW_RecordEndCall(TID_QUEUE_GET)
  385. #define sys_port_trace_k_queue_remove_enter(queue) \
  386. SEGGER_SYSVIEW_RecordU32(TID_QUEUE_REMOVE, (uint32_t)(uintptr_t)queue)
  387. #define sys_port_trace_k_queue_remove_exit(queue, ret) \
  388. SEGGER_SYSVIEW_RecordEndCallU32(TID_QUEUE_REMOVE, (uint32_t)ret)
  389. #define sys_port_trace_k_queue_unique_append_enter(queue)
  390. #define sys_port_trace_k_queue_unique_append_exit(queue, ret)
  391. #define sys_port_trace_k_queue_peek_head(queue, ret) \
  392. SEGGER_SYSVIEW_RecordU32x2(TID_QUEUE_PEAK_HEAD, (uint32_t)(uintptr_t)queue, (int32_t)ret)
  393. #define sys_port_trace_k_queue_peek_tail(queue, ret) \
  394. SEGGER_SYSVIEW_RecordU32x2(TID_QUEUE_PEAK_TAIL, (uint32_t)(uintptr_t)queue, (int32_t)ret)
  395. #define sys_port_trace_k_fifo_init_enter(fifo) \
  396. SEGGER_SYSVIEW_RecordU32(TID_FIFO_INIT, (uint32_t)(uintptr_t)fifo)
  397. #define sys_port_trace_k_fifo_init_exit(fifo) SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_INIT)
  398. #define sys_port_trace_k_fifo_cancel_wait_enter(fifo) \
  399. SEGGER_SYSVIEW_RecordU32(TID_FIFO_CANCEL_WAIT, (uint32_t)(uintptr_t)fifo)
  400. #define sys_port_trace_k_fifo_cancel_wait_exit(fifo) \
  401. SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_CANCEL_WAIT)
  402. #define sys_port_trace_k_fifo_put_enter(fifo, data) \
  403. SEGGER_SYSVIEW_RecordU32x2(TID_FIFO_PUT, (uint32_t)(uintptr_t)fifo, \
  404. (uint32_t)(uintptr_t)data)
  405. #define sys_port_trace_k_fifo_put_exit(fifo, data) SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_PUT)
  406. #define sys_port_trace_k_fifo_alloc_put_enter(fifo, data) \
  407. SEGGER_SYSVIEW_RecordU32x2(TID_FIFO_ALLOC_PUT, (uint32_t)(uintptr_t)fifo, \
  408. (uint32_t)(uintptr_t)data)
  409. #define sys_port_trace_k_fifo_alloc_put_exit(fifo, data, ret) \
  410. SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_ALLOC_PUT)
  411. #define sys_port_trace_k_fifo_put_list_enter(fifo, head, tail) \
  412. SEGGER_SYSVIEW_RecordU32x3(TID_FIFO_PUT_LIST, (uint32_t)(uintptr_t)fifo, \
  413. (uint32_t)(uintptr_t)head, (uint32_t)(uintptr_t)tail)
  414. #define sys_port_trace_k_fifo_put_list_exit(fifo, head, tail) \
  415. SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_PUT_LIST)
  416. #define sys_port_trace_k_fifo_put_slist_enter(fifo, list) \
  417. SEGGER_SYSVIEW_RecordU32x2(TID_FIFO_PUT_SLIST, (uint32_t)(uintptr_t)fifo, \
  418. (uint32_t)(uintptr_t)list)
  419. #define sys_port_trace_k_fifo_put_slist_exit(fifo, list) \
  420. SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_PUT_SLIST)
  421. #define sys_port_trace_k_fifo_get_enter(fifo, timeout) \
  422. SEGGER_SYSVIEW_RecordU32x2(TID_FIFO_GET, (uint32_t)(uintptr_t)fifo, (uint32_t)timeout.ticks)
  423. #define sys_port_trace_k_fifo_get_exit(fifo, timeout, ret) \
  424. SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_GET)
  425. #define sys_port_trace_k_fifo_peek_head_enter(fifo) \
  426. SEGGER_SYSVIEW_RecordU32(TID_FIFO_PEAK_HEAD, (uint32_t)(uintptr_t)fifo)
  427. #define sys_port_trace_k_fifo_peek_head_exit(fifo, ret) \
  428. SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_PEAK_HEAD)
  429. #define sys_port_trace_k_fifo_peek_tail_enter(fifo) \
  430. SEGGER_SYSVIEW_RecordU32(TID_FIFO_PEAK_TAIL, (uint32_t)(uintptr_t)fifo)
  431. #define sys_port_trace_k_fifo_peek_tail_exit(fifo, ret) \
  432. SEGGER_SYSVIEW_RecordEndCall(TID_FIFO_PEAK_TAIL)
  433. #define sys_port_trace_k_lifo_init_enter(lifo) \
  434. SEGGER_SYSVIEW_RecordU32(TID_LIFO_INIT, (uint32_t)(uintptr_t)lifo)
  435. #define sys_port_trace_k_lifo_init_exit(lifo) SEGGER_SYSVIEW_RecordEndCall(TID_LIFO_INIT)
  436. #define sys_port_trace_k_lifo_put_enter(lifo, data) \
  437. SEGGER_SYSVIEW_RecordU32x2(TID_LIFO_PUT, (uint32_t)(uintptr_t)lifo, \
  438. (uint32_t)(uintptr_t)data)
  439. #define sys_port_trace_k_lifo_put_exit(lifo, data) SEGGER_SYSVIEW_RecordEndCall(TID_LIFO_PUT)
  440. #define sys_port_trace_k_lifo_alloc_put_enter(lifo, data) \
  441. SEGGER_SYSVIEW_RecordU32x2(TID_LIFO_ALLOC_PUT, (uint32_t)(uintptr_t)lifo, \
  442. (uint32_t)(uintptr_t)data)
  443. #define sys_port_trace_k_lifo_alloc_put_exit(lifo, data, ret) \
  444. SEGGER_SYSVIEW_RecordEndCall(TID_LIFO_ALLOC_PUT)
  445. #define sys_port_trace_k_lifo_get_enter(lifo, timeout) \
  446. SEGGER_SYSVIEW_RecordU32x2(TID_LIFO_GET, (uint32_t)(uintptr_t)lifo, (uint32_t)timeout.ticks)
  447. #define sys_port_trace_k_lifo_get_exit(lifo, timeout, ret) \
  448. SEGGER_SYSVIEW_RecordEndCall(TID_LIFO_GET)
  449. #define sys_port_trace_k_stack_init(stack)
  450. #define sys_port_trace_k_stack_alloc_init_enter(stack)
  451. #define sys_port_trace_k_stack_alloc_init_exit(stack, ret)
  452. #define sys_port_trace_k_stack_cleanup_enter(stack)
  453. #define sys_port_trace_k_stack_cleanup_exit(stack, ret)
  454. #define sys_port_trace_k_stack_push_enter(stack)
  455. #define sys_port_trace_k_stack_push_exit(stack, ret)
  456. #define sys_port_trace_k_stack_pop_enter(stack, timeout)
  457. #define sys_port_trace_k_stack_pop_blocking(stack, timeout)
  458. #define sys_port_trace_k_stack_pop_exit(stack, timeout, ret)
  459. #define sys_port_trace_k_msgq_init(msgq)
  460. #define sys_port_trace_k_msgq_alloc_init_enter(msgq)
  461. #define sys_port_trace_k_msgq_alloc_init_exit(msgq, ret)
  462. #define sys_port_trace_k_msgq_cleanup_enter(msgq)
  463. #define sys_port_trace_k_msgq_cleanup_exit(msgq, ret)
  464. #define sys_port_trace_k_msgq_put_enter(msgq, timeout)
  465. #define sys_port_trace_k_msgq_put_blocking(msgq, timeout)
  466. #define sys_port_trace_k_msgq_put_exit(msgq, timeout, ret)
  467. #define sys_port_trace_k_msgq_get_enter(msgq, timeout)
  468. #define sys_port_trace_k_msgq_get_blocking(msgq, timeout)
  469. #define sys_port_trace_k_msgq_get_exit(msgq, timeout, ret)
  470. #define sys_port_trace_k_msgq_peek(msgq, ret)
  471. #define sys_port_trace_k_msgq_purge(msgq)
  472. #define sys_port_trace_k_mbox_init(mbox)
  473. #define sys_port_trace_k_mbox_message_put_enter(mbox, timeout)
  474. #define sys_port_trace_k_mbox_message_put_blocking(mbox, timeout)
  475. #define sys_port_trace_k_mbox_message_put_exit(mbox, timeout, ret)
  476. #define sys_port_trace_k_mbox_put_enter(mbox, timeout)
  477. #define sys_port_trace_k_mbox_put_exit(mbox, timeout, ret)
  478. #define sys_port_trace_k_mbox_async_put_enter(mbox, sem)
  479. #define sys_port_trace_k_mbox_async_put_exit(mbox, sem)
  480. #define sys_port_trace_k_mbox_get_enter(mbox, timeout)
  481. #define sys_port_trace_k_mbox_get_blocking(mbox, timeout)
  482. #define sys_port_trace_k_mbox_get_exit(mbox, timeout, ret)
  483. #define sys_port_trace_k_mbox_data_get(rx_msg)
  484. #define sys_port_trace_k_pipe_init(pipe)
  485. #define sys_port_trace_k_pipe_cleanup_enter(pipe)
  486. #define sys_port_trace_k_pipe_cleanup_exit(pipe, ret)
  487. #define sys_port_trace_k_pipe_alloc_init_enter(pipe)
  488. #define sys_port_trace_k_pipe_alloc_init_exit(pipe, ret)
  489. #define sys_port_trace_k_pipe_put_enter(pipe, timeout)
  490. #define sys_port_trace_k_pipe_put_blocking(pipe, timeout)
  491. #define sys_port_trace_k_pipe_put_exit(pipe, timeout, ret)
  492. #define sys_port_trace_k_pipe_get_enter(pipe, timeout)
  493. #define sys_port_trace_k_pipe_get_blocking(pipe, timeout)
  494. #define sys_port_trace_k_pipe_get_exit(pipe, timeout, ret)
  495. #define sys_port_trace_k_pipe_block_put_enter(pipe, sem)
  496. #define sys_port_trace_k_pipe_block_put_exit(pipe, sem)
  497. #define sys_port_trace_k_heap_init(heap) \
  498. SEGGER_SYSVIEW_RecordU32(TID_HEAP_INIT, (uint32_t)(uintptr_t)heap)
  499. #define sys_port_trace_k_heap_aligned_alloc_enter(heap, timeout) \
  500. SEGGER_SYSVIEW_RecordU32x2(TID_HEAP_ALIGNED_ALLOC, (uint32_t)(uintptr_t)heap, \
  501. (uint32_t)timeout.ticks)
  502. #define sys_port_trace_k_heap_aligned_alloc_blocking(heap, timeout)
  503. #define sys_port_trace_k_heap_aligned_alloc_exit(heap, timeout, ret) \
  504. SEGGER_SYSVIEW_RecordEndCallU32(TID_HEAP_ALIGNED_ALLOC, (uint32_t)ret)
  505. #define sys_port_trace_k_heap_alloc_enter(heap, timeout) \
  506. SEGGER_SYSVIEW_RecordU32x2(TID_HEAP_ALLOC, (uint32_t)(uintptr_t)heap, \
  507. (uint32_t)timeout.ticks)
  508. #define sys_port_trace_k_heap_alloc_exit(heap, timeout, ret) \
  509. SEGGER_SYSVIEW_RecordEndCallU32(TID_HEAP_ALLOC, (uint32_t)ret)
  510. #define sys_port_trace_k_heap_free(heap) \
  511. SEGGER_SYSVIEW_RecordU32(TID_HEAP_FREE, (uint32_t)(uintptr_t)heap)
  512. #define sys_port_trace_k_heap_sys_k_aligned_alloc_enter(heap)
  513. #define sys_port_trace_k_heap_sys_k_aligned_alloc_exit(heap, ret)
  514. #define sys_port_trace_k_heap_sys_k_malloc_enter(heap)
  515. #define sys_port_trace_k_heap_sys_k_malloc_exit(heap, ret)
  516. #define sys_port_trace_k_heap_sys_k_free_enter(heap)
  517. #define sys_port_trace_k_heap_sys_k_free_exit(heap)
  518. #define sys_port_trace_k_heap_sys_k_calloc_enter(heap)
  519. #define sys_port_trace_k_heap_sys_k_calloc_exit(heap, ret)
  520. #define sys_port_trace_k_mem_slab_init(slab, rc) \
  521. SEGGER_SYSVIEW_RecordU32(TID_MSLAB_INIT, (uint32_t)(uintptr_t)slab)
  522. #define sys_port_trace_k_mem_slab_alloc_enter(slab, timeout) \
  523. SEGGER_SYSVIEW_RecordU32x2(TID_MSLAB_ALLOC, (uint32_t)(uintptr_t)slab, \
  524. (uint32_t)timeout.ticks)
  525. #define sys_port_trace_k_mem_slab_alloc_blocking(slab, timeout)
  526. #define sys_port_trace_k_mem_slab_alloc_exit(slab, timeout, ret) \
  527. SEGGER_SYSVIEW_RecordEndCallU32(TID_MSLAB_ALLOC, (uint32_t)ret)
  528. #define sys_port_trace_k_mem_slab_free_enter(slab) \
  529. SEGGER_SYSVIEW_RecordU32(TID_MSLAB_FREE, (uint32_t)(uintptr_t)slab)
  530. #define sys_port_trace_k_mem_slab_free_exit(slab) SEGGER_SYSVIEW_RecordEndCall(TID_MSLAB_ALLOC)
  531. #define sys_port_trace_k_timer_init(timer) \
  532. SEGGER_SYSVIEW_RecordU32(TID_TIMER_INIT, (uint32_t)(uintptr_t)timer)
  533. #define sys_port_trace_k_timer_start(timer) \
  534. SEGGER_SYSVIEW_RecordU32(TID_TIMER_START, (uint32_t)(uintptr_t)timer)
  535. #define sys_port_trace_k_timer_stop(timer) \
  536. SEGGER_SYSVIEW_RecordU32(TID_TIMER_STOP, (uint32_t)(uintptr_t)timer)
  537. #define sys_port_trace_k_timer_status_sync_enter(timer) \
  538. SEGGER_SYSVIEW_RecordU32(TID_TIMER_STATUS_SYNC, (uint32_t)(uintptr_t)timer)
  539. #define sys_port_trace_k_timer_status_sync_blocking(timer, timeout)
  540. #define sys_port_trace_k_timer_status_sync_exit(timer, result) \
  541. SEGGER_SYSVIEW_RecordEndCallU32(TID_TIMER_STATUS_SYNC, (uint32_t)result)
  542. #define sys_port_trace_syscall_enter()
  543. #define sys_port_trace_syscall_exit()
  544. void sys_trace_idle(void);
  545. void sys_trace_k_thread_create(struct k_thread *new_thread, size_t stack_size, int prio);
  546. void sys_trace_k_thread_user_mode_enter(k_thread_entry_t entry, void *p1, void *p2, void *p3);
  547. void sys_trace_k_thread_join_blocking(struct k_thread *thread, k_timeout_t timeout);
  548. void sys_trace_k_thread_join_exit(struct k_thread *thread, k_timeout_t timeout, int ret);
  549. void sys_trace_k_thread_switched_out(void);
  550. void sys_trace_k_thread_switched_in(void);
  551. void sys_trace_k_thread_ready(struct k_thread *thread);
  552. void sys_trace_k_thread_pend(struct k_thread *thread);
  553. void sys_trace_k_thread_info(struct k_thread *thread);
  554. #define sys_port_trace_pm_system_suspend_enter(ticks) \
  555. SEGGER_SYSVIEW_RecordU32(TID_PM_SUSPEND, (uint32_t)ticks)
  556. #define sys_port_trace_pm_system_suspend_exit(ticks, ret) \
  557. SEGGER_SYSVIEW_RecordEndCallU32(TID_PM_SUSPEND, (uint32_t)ret)
  558. #define sys_port_trace_pm_device_request_enter(dev, target_state) \
  559. SEGGER_SYSVIEW_RecordU32x2(TID_PM_DEVICE_REQUEST, (uint32_t)(uintptr_t)dev, target_state)
  560. #define sys_port_trace_pm_device_request_exit(dev, ret) \
  561. SEGGER_SYSVIEW_RecordEndCallU32(TID_PM_DEVICE_REQUEST, (uint32_t)ret)
  562. #define sys_port_trace_pm_device_enable_enter(dev) \
  563. SEGGER_SYSVIEW_RecordU32(TID_PM_DEVICE_ENABLE, (uint32_t)(uintptr_t)dev)
  564. #define sys_port_trace_pm_device_enable_exit(dev) \
  565. SEGGER_SYSVIEW_RecordEndCall(TID_PM_DEVICE_ENABLE)
  566. #define sys_port_trace_pm_device_disable_enter(dev) \
  567. SEGGER_SYSVIEW_RecordU32(TID_PM_DEVICE_DISABLE, (uint32_t)(uintptr_t)dev)
  568. #define sys_port_trace_pm_device_disable_exit(dev) \
  569. SEGGER_SYSVIEW_RecordEndCall(TID_PM_DEVICE_DISABLE)
  570. #define sys_trace_void(id) \
  571. SEGGER_SYSVIEW_RecordVoid(id)
  572. #define sys_trace_end_call(id) \
  573. SEGGER_SYSVIEW_RecordEndCall(id)
  574. #define sys_trace_end_call_u32(id, retv) \
  575. SEGGER_SYSVIEW_RecordEndCallU32(id, retv)
  576. #define sys_trace_u32(id, p1) \
  577. SEGGER_SYSVIEW_RecordU32(id, p1)
  578. #define sys_trace_u32x2(id, p1, p2) \
  579. SEGGER_SYSVIEW_RecordU32x2(id, p1, p2)
  580. #define sys_trace_u32x3(id, p1, p2, p3) \
  581. SEGGER_SYSVIEW_RecordU32x3(id, p1, p2, p3)
  582. #define sys_trace_u32x4(id, p1, p2, p3, p4) \
  583. SEGGER_SYSVIEW_RecordU32x4(id, p1, p2, p3, p4)
  584. #define sys_trace_u32x5(id, p1, p2, p3, p4, p5) \
  585. SEGGER_SYSVIEW_RecordU32x5(id, p1, p2, p3, p4, p5)
  586. #define sys_trace_u32x6(id, p1, p2, p3, p4, p5, p6) \
  587. SEGGER_SYSVIEW_RecordU32x6(id, p1, p2, p3, p4, p5, p6)
  588. #define sys_trace_u32x7(id, p1, p2, p3, p4, p5, p6, p7) \
  589. SEGGER_SYSVIEW_RecordU32x7(id, p1, p2, p3, p4, p5, p6, p7)
  590. #define sys_trace_u32x8(id, p1, p2, p3, p4, p5, p6, p7, p8) \
  591. SEGGER_SYSVIEW_RecordU32x8(id, p1, p2, p3, p4, p5, p6, p7, p8)
  592. #define sys_trace_u32x9(id, p1, p2, p3, p4, p5, p6, p7, p8, p9) \
  593. SEGGER_SYSVIEW_RecordU32x9(id, p1, p2, p3, p4, p5, p6, p7, p8, p9)
  594. #define sys_trace_u32x10(id, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) \
  595. SEGGER_SYSVIEW_RecordU32x10(id, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)
  596. #define sys_trace_string(id, string) \
  597. SEGGER_SYSVIEW_RecordString(id, string)
  598. #ifdef __cplusplus
  599. }
  600. #endif
  601. #endif /* ZEPHYR_TRACE_SYSVIEW_H */