1 /* 2 * Copyright (c) 2018 Intel Corporation 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef ZEPHYR_INCLUDE_TRACING_TRACING_H_ 7 #define ZEPHYR_INCLUDE_TRACING_TRACING_H_ 8 9 #include <zephyr/kernel.h> 10 11 #include "tracking.h" 12 13 #if defined CONFIG_SEGGER_SYSTEMVIEW 14 #include "tracing_sysview.h" 15 #elif defined CONFIG_TRACING_CTF 16 #include "tracing_ctf.h" 17 #elif defined CONFIG_TRACING_TEST 18 #include "tracing_test.h" 19 #elif defined CONFIG_TRACING_USER 20 #include "tracing_user.h" 21 #else 22 /** 23 * @brief Tracing 24 * 25 * The tracing subsystem provides hooks that permits you to collect data from 26 * your application and allows tools running on a host to visualize the 27 * inner-working of the kernel and various other subsystems. 28 * 29 * @defgroup subsys_tracing Tracing 30 * @ingroup os_services 31 * @{ 32 */ 33 34 /** 35 * @brief Tracing APIs 36 * @defgroup subsys_tracing_apis Tracing APIs 37 * @{ 38 */ 39 40 /** 41 * @brief Thread Tracing APIs 42 * @defgroup subsys_tracing_apis_thread Thread Tracing APIs 43 * @{ 44 */ 45 46 /** 47 * @brief Called when entering a k_thread_foreach call 48 */ 49 #define sys_port_trace_k_thread_foreach_enter() 50 51 /** 52 * @brief Called when exiting a k_thread_foreach call 53 */ 54 #define sys_port_trace_k_thread_foreach_exit() 55 56 /** 57 * @brief Called when entering a k_thread_foreach_unlocked 58 */ 59 #define sys_port_trace_k_thread_foreach_unlocked_enter() 60 61 /** 62 * @brief Called when exiting a k_thread_foreach_unlocked 63 */ 64 #define sys_port_trace_k_thread_foreach_unlocked_exit() 65 66 /** 67 * @brief Trace creating a Thread 68 * @param new_thread Thread object 69 */ 70 #define sys_port_trace_k_thread_create(new_thread) 71 72 /** 73 * @brief Trace Thread entering user mode 74 */ 75 #define sys_port_trace_k_thread_user_mode_enter() 76 77 /** 78 * @brief Called when entering a k_thread_join 79 * @param thread Thread object 80 * @param timeout Timeout period 81 */ 82 #define sys_port_trace_k_thread_join_enter(thread, timeout) 83 84 /** 85 * @brief Called when k_thread_join blocks 86 * @param thread Thread object 87 * @param timeout Timeout period 88 */ 89 #define sys_port_trace_k_thread_join_blocking(thread, timeout) 90 91 /** 92 * @brief Called when exiting k_thread_join 93 * @param thread Thread object 94 * @param timeout Timeout period 95 * @param ret Return value 96 */ 97 #define sys_port_trace_k_thread_join_exit(thread, timeout, ret) 98 99 /** 100 * @brief Called when entering k_thread_sleep 101 * @param timeout Timeout period 102 */ 103 #define sys_port_trace_k_thread_sleep_enter(timeout) 104 105 /** 106 * @brief Called when exiting k_thread_sleep 107 * @param timeout Timeout period 108 * @param ret Return value 109 */ 110 #define sys_port_trace_k_thread_sleep_exit(timeout, ret) 111 112 /** 113 * @brief Called when entering k_thread_msleep 114 * @param ms Duration in milliseconds 115 */ 116 #define sys_port_trace_k_thread_msleep_enter(ms) 117 118 /** 119 * @brief Called when exiting k_thread_msleep 120 * @param ms Duration in milliseconds 121 * @param ret Return value 122 */ 123 #define sys_port_trace_k_thread_msleep_exit(ms, ret) 124 125 /** 126 * @brief Called when entering k_thread_usleep 127 * @param us Duration in microseconds 128 */ 129 #define sys_port_trace_k_thread_usleep_enter(us) 130 131 /** 132 * @brief Called when exiting k_thread_usleep 133 * @param us Duration in microseconds 134 * @param ret Return value 135 */ 136 #define sys_port_trace_k_thread_usleep_exit(us, ret) 137 138 /** 139 * @brief Called when entering k_thread_busy_wait 140 * @param usec_to_wait Duration in microseconds 141 */ 142 #define sys_port_trace_k_thread_busy_wait_enter(usec_to_wait) 143 144 /** 145 * @brief Called when exiting k_thread_busy_wait 146 * @param usec_to_wait Duration in microseconds 147 */ 148 #define sys_port_trace_k_thread_busy_wait_exit(usec_to_wait) 149 150 /** 151 * @brief Called when a thread yields 152 */ 153 #define sys_port_trace_k_thread_yield() 154 155 /** 156 * @brief Called when a thread wakes up 157 * @param thread Thread object 158 */ 159 #define sys_port_trace_k_thread_wakeup(thread) 160 161 /** 162 * @brief Called when a thread is started 163 * @param thread Thread object 164 */ 165 #define sys_port_trace_k_thread_start(thread) 166 167 /** 168 * @brief Called when a thread is being aborted 169 * @param thread Thread object 170 */ 171 #define sys_port_trace_k_thread_abort(thread) 172 173 /** 174 * @brief Called when a thread enters the k_thread_abort routine 175 * @param thread Thread object 176 */ 177 #define sys_port_trace_k_thread_abort_enter(thread) 178 179 /** 180 * @brief Called when a thread exits the k_thread_abort routine 181 * @param thread Thread object 182 */ 183 #define sys_port_trace_k_thread_abort_exit(thread) 184 185 /** 186 * @brief Called when setting priority of a thread 187 * @param thread Thread object 188 */ 189 #define sys_port_trace_k_thread_priority_set(thread) 190 191 /** 192 * @brief Called when a thread enters the k_thread_suspend 193 * function. 194 * @param thread Thread object 195 */ 196 #define sys_port_trace_k_thread_suspend_enter(thread) 197 198 /** 199 * @brief Called when a thread exits the k_thread_suspend 200 * function. 201 * @param thread Thread object 202 */ 203 #define sys_port_trace_k_thread_suspend_exit(thread) 204 205 /** 206 * @brief Called when a thread enters the resume from suspension 207 * function. 208 * @param thread Thread object 209 */ 210 #define sys_port_trace_k_thread_resume_enter(thread) 211 212 /** 213 * @brief Called when a thread exits the resumed from suspension 214 * function. 215 * @param thread Thread object 216 */ 217 #define sys_port_trace_k_thread_resume_exit(thread) 218 219 /** 220 * @brief Called when the thread scheduler is locked 221 */ 222 #define sys_port_trace_k_thread_sched_lock() 223 224 /** 225 * @brief Called when the thread scheduler is unlocked 226 */ 227 #define sys_port_trace_k_thread_sched_unlock() 228 229 /** 230 * @brief Called when a thread name is set 231 * @param thread Thread object 232 * @param ret Return value 233 */ 234 #define sys_port_trace_k_thread_name_set(thread, ret) 235 236 /** 237 * @brief Called before a thread has been selected to run 238 */ 239 #define sys_port_trace_k_thread_switched_out() 240 241 /** 242 * @brief Called after a thread has been selected to run 243 */ 244 #define sys_port_trace_k_thread_switched_in() 245 246 /** 247 * @brief Called when a thread is ready to run 248 * @param thread Thread object 249 */ 250 #define sys_port_trace_k_thread_ready(thread) 251 252 /** 253 * @brief Called when a thread is pending 254 * @param thread Thread object 255 */ 256 #define sys_port_trace_k_thread_pend(thread) 257 258 /** 259 * @brief Provide information about specific thread 260 * @param thread Thread object 261 */ 262 #define sys_port_trace_k_thread_info(thread) 263 264 /** 265 * @brief Trace implicit thread wakeup invocation by the scheduler 266 * @param thread Thread object 267 */ 268 #define sys_port_trace_k_thread_sched_wakeup(thread) 269 270 /** 271 * @brief Trace implicit thread abort invocation by the scheduler 272 * @param thread Thread object 273 */ 274 #define sys_port_trace_k_thread_sched_abort(thread) 275 276 /** 277 * @brief Trace implicit thread set priority invocation by the scheduler 278 * @param thread Thread object 279 * @param prio Thread priority 280 */ 281 #define sys_port_trace_k_thread_sched_priority_set(thread, prio) 282 283 /** 284 * @brief Trace implicit thread ready invocation by the scheduler 285 * @param thread Thread object 286 */ 287 #define sys_port_trace_k_thread_sched_ready(thread) 288 289 /** 290 * @brief Trace implicit thread pend invocation by the scheduler 291 * @param thread Thread object 292 */ 293 #define sys_port_trace_k_thread_sched_pend(thread) 294 295 /** 296 * @brief Trace implicit thread resume invocation by the scheduler 297 * @param thread Thread object 298 */ 299 #define sys_port_trace_k_thread_sched_resume(thread) 300 301 /** 302 * @brief Trace implicit thread suspend invocation by the scheduler 303 * @param thread Thread object 304 */ 305 #define sys_port_trace_k_thread_sched_suspend(thread) 306 307 /** @}c*/ /* end of subsys_tracing_apis_thread */ 308 309 /** 310 * @brief Work Tracing APIs 311 * @defgroup subsys_tracing_apis_work Work Tracing APIs 312 * @{ 313 */ 314 315 /** 316 * @brief Trace initialisation of a Work structure 317 * @param work Work structure 318 */ 319 #define sys_port_trace_k_work_init(work) 320 321 /** 322 * @brief Trace submit work to work queue call entry 323 * @param queue Work queue structure 324 * @param work Work structure 325 */ 326 #define sys_port_trace_k_work_submit_to_queue_enter(queue, work) 327 328 /** 329 * @brief Trace submit work to work queue call exit 330 * @param queue Work queue structure 331 * @param work Work structure 332 * @param ret Return value 333 */ 334 #define sys_port_trace_k_work_submit_to_queue_exit(queue, work, ret) 335 336 /** 337 * @brief Trace submit work to system work queue call entry 338 * @param work Work structure 339 */ 340 #define sys_port_trace_k_work_submit_enter(work) 341 342 /** 343 * @brief Trace submit work to system work queue call exit 344 * @param work Work structure 345 * @param ret Return value 346 */ 347 #define sys_port_trace_k_work_submit_exit(work, ret) 348 349 /** 350 * @brief Trace flush work call entry 351 * @param work Work structure 352 */ 353 #define sys_port_trace_k_work_flush_enter(work) 354 355 /** 356 * @brief Trace flush work call blocking 357 * @param work Work structure 358 * @param timeout Timeout period 359 */ 360 #define sys_port_trace_k_work_flush_blocking(work, timeout) 361 362 /** 363 * @brief Trace flush work call exit 364 * @param work Work structure 365 * @param ret Return value 366 */ 367 #define sys_port_trace_k_work_flush_exit(work, ret) 368 369 /** 370 * @brief Trace cancel work call entry 371 * @param work Work structure 372 */ 373 #define sys_port_trace_k_work_cancel_enter(work) 374 375 /** 376 * @brief Trace cancel work call exit 377 * @param work Work structure 378 * @param ret Return value 379 */ 380 #define sys_port_trace_k_work_cancel_exit(work, ret) 381 382 /** 383 * @brief Trace cancel sync work call entry 384 * @param work Work structure 385 * @param sync Sync object 386 */ 387 #define sys_port_trace_k_work_cancel_sync_enter(work, sync) 388 389 /** 390 * @brief Trace cancel sync work call blocking 391 * @param work Work structure 392 * @param sync Sync object 393 */ 394 #define sys_port_trace_k_work_cancel_sync_blocking(work, sync) 395 396 /** 397 * @brief Trace cancel sync work call exit 398 * @param work Work structure 399 * @param sync Sync object 400 * @param ret Return value 401 */ 402 #define sys_port_trace_k_work_cancel_sync_exit(work, sync, ret) 403 404 /** @} */ /* end of subsys_tracing_apis_work */ 405 406 /** 407 * @brief Work Queue Tracing APIs 408 * @defgroup subsys_tracing_apis_work_q Work Queue Tracing APIs 409 * @{ 410 */ 411 412 /** 413 * @brief Trace initialisation of a Work Queue structure 414 * @param queue Work Queue structure 415 */ 416 #define sys_port_trace_k_work_queue_init(queue) 417 418 /** 419 * @brief Trace start of a Work Queue call entry 420 * @param queue Work Queue structure 421 */ 422 #define sys_port_trace_k_work_queue_start_enter(queue) 423 424 /** 425 * @brief Trace start of a Work Queue call exit 426 * @param queue Work Queue structure 427 */ 428 #define sys_port_trace_k_work_queue_start_exit(queue) 429 430 /** 431 * @brief Trace stop of a Work Queue call entry 432 * @param queue Work Queue structure 433 * @param timeout Timeout period 434 */ 435 #define sys_port_trace_k_work_queue_stop_enter(queue, timeout) 436 437 /** 438 * @brief Trace stop of a Work Queue call blocking 439 * @param queue Work Queue structure 440 * @param timeout Timeout period 441 */ 442 #define sys_port_trace_k_work_queue_stop_blocking(queue, timeout) 443 444 /** 445 * @brief Trace stop of a Work Queue call exit 446 * @param queue Work Queue structure 447 * @param timeout Timeout period 448 * @param ret Return value 449 */ 450 #define sys_port_trace_k_work_queue_stop_exit(queue, timeout, ret) 451 452 /** 453 * @brief Trace Work Queue drain call entry 454 * @param queue Work Queue structure 455 */ 456 #define sys_port_trace_k_work_queue_drain_enter(queue) 457 458 /** 459 * @brief Trace Work Queue drain call exit 460 * @param queue Work Queue structure 461 * @param ret Return value 462 */ 463 #define sys_port_trace_k_work_queue_drain_exit(queue, ret) 464 465 /** 466 * @brief Trace Work Queue unplug call entry 467 * @param queue Work Queue structure 468 */ 469 #define sys_port_trace_k_work_queue_unplug_enter(queue) 470 471 /** 472 * @brief Trace Work Queue unplug call exit 473 * @param queue Work Queue structure 474 * @param ret Return value 475 */ 476 #define sys_port_trace_k_work_queue_unplug_exit(queue, ret) 477 478 /** @} */ /* end of subsys_tracing_apis_work_q */ 479 480 /** 481 * @brief Work Delayable Tracing APIs 482 * @defgroup subsys_tracing_apis_work_delayable Work Delayable Tracing APIs 483 * @{ 484 */ 485 486 /** 487 * @brief Trace initialisation of a Delayable Work structure 488 * @param dwork Delayable Work structure 489 */ 490 #define sys_port_trace_k_work_delayable_init(dwork) 491 492 /** 493 * @brief Trace schedule delayable work for queue enter 494 * @param queue Work Queue structure 495 * @param dwork Delayable Work structure 496 * @param delay Delay period 497 */ 498 #define sys_port_trace_k_work_schedule_for_queue_enter(queue, dwork, delay) 499 500 /** 501 * @brief Trace schedule delayable work for queue exit 502 * @param queue Work Queue structure 503 * @param dwork Delayable Work structure 504 * @param delay Delay period 505 * @param ret Return value 506 */ 507 #define sys_port_trace_k_work_schedule_for_queue_exit(queue, dwork, delay, ret) 508 509 /** 510 * @brief Trace schedule delayable work for system work queue enter 511 * @param dwork Delayable Work structure 512 * @param delay Delay period 513 */ 514 #define sys_port_trace_k_work_schedule_enter(dwork, delay) 515 516 /** 517 * @brief Trace schedule delayable work for system work queue exit 518 * @param dwork Delayable Work structure 519 * @param delay Delay period 520 * @param ret Return value 521 */ 522 #define sys_port_trace_k_work_schedule_exit(dwork, delay, ret) 523 524 /** 525 * @brief Trace reschedule delayable work for queue enter 526 * @param queue Work Queue structure 527 * @param dwork Delayable Work structure 528 * @param delay Delay period 529 */ 530 #define sys_port_trace_k_work_reschedule_for_queue_enter(queue, dwork, delay) 531 532 /** 533 * @brief Trace reschedule delayable work for queue exit 534 * @param queue Work Queue structure 535 * @param dwork Delayable Work structure 536 * @param delay Delay period 537 * @param ret Return value 538 */ 539 #define sys_port_trace_k_work_reschedule_for_queue_exit(queue, dwork, delay, ret) 540 541 /** 542 * @brief Trace reschedule delayable work for system queue enter 543 * @param dwork Delayable Work structure 544 * @param delay Delay period 545 */ 546 #define sys_port_trace_k_work_reschedule_enter(dwork, delay) 547 548 /** 549 * @brief Trace reschedule delayable work for system queue exit 550 * @param dwork Delayable Work structure 551 * @param delay Delay period 552 * @param ret Return value 553 */ 554 #define sys_port_trace_k_work_reschedule_exit(dwork, delay, ret) 555 556 /** 557 * @brief Trace delayable work flush enter 558 * @param dwork Delayable Work structure 559 * @param sync Sync object 560 */ 561 #define sys_port_trace_k_work_flush_delayable_enter(dwork, sync) 562 563 /** 564 * @brief Trace delayable work flush exit 565 * @param dwork Delayable Work structure 566 * @param sync Sync object 567 * @param ret Return value 568 */ 569 #define sys_port_trace_k_work_flush_delayable_exit(dwork, sync, ret) 570 571 /** 572 * @brief Trace delayable work cancel enter 573 * @param dwork Delayable Work structure 574 */ 575 #define sys_port_trace_k_work_cancel_delayable_enter(dwork) 576 577 /** 578 * @brief Trace delayable work cancel enter 579 * @param dwork Delayable Work structure 580 * @param ret Return value 581 */ 582 #define sys_port_trace_k_work_cancel_delayable_exit(dwork, ret) 583 584 /** 585 * @brief Trace delayable work cancel sync enter 586 * @param dwork Delayable Work structure 587 * @param sync Sync object 588 */ 589 #define sys_port_trace_k_work_cancel_delayable_sync_enter(dwork, sync) 590 591 /** 592 * @brief Trace delayable work cancel sync enter 593 * @param dwork Delayable Work structure 594 * @param sync Sync object 595 * @param ret Return value 596 */ 597 #define sys_port_trace_k_work_cancel_delayable_sync_exit(dwork, sync, ret) 598 599 /** @} */ /* end of subsys_tracing_apis_work_delayable */ 600 601 /** 602 * @brief Work Poll Tracing APIs 603 * @defgroup subsys_tracing_apis_work_poll Work Poll Tracing APIs 604 * @{ 605 */ 606 607 /** 608 * @brief Trace initialisation of a Work Poll structure enter 609 * @param work Work structure 610 */ 611 #define sys_port_trace_k_work_poll_init_enter(work) 612 613 /** 614 * @brief Trace initialisation of a Work Poll structure exit 615 * @param work Work structure 616 */ 617 #define sys_port_trace_k_work_poll_init_exit(work) 618 619 /** 620 * @brief Trace work poll submit to queue enter 621 * @param work_q Work queue 622 * @param work Work structure 623 * @param timeout Timeout period 624 */ 625 #define sys_port_trace_k_work_poll_submit_to_queue_enter(work_q, work, timeout) 626 627 /** 628 * @brief Trace work poll submit to queue blocking 629 * @param work_q Work queue 630 * @param work Work structure 631 * @param timeout Timeout period 632 */ 633 #define sys_port_trace_k_work_poll_submit_to_queue_blocking(work_q, work, timeout) 634 635 /** 636 * @brief Trace work poll submit to queue exit 637 * @param work_q Work queue 638 * @param work Work structure 639 * @param timeout Timeout period 640 * @param ret Return value 641 */ 642 #define sys_port_trace_k_work_poll_submit_to_queue_exit(work_q, work, timeout, ret) 643 644 /** 645 * @brief Trace work poll submit to system queue enter 646 * @param work Work structure 647 * @param timeout Timeout period 648 */ 649 #define sys_port_trace_k_work_poll_submit_enter(work, timeout) 650 651 /** 652 * @brief Trace work poll submit to system queue exit 653 * @param work Work structure 654 * @param timeout Timeout period 655 * @param ret Return value 656 */ 657 #define sys_port_trace_k_work_poll_submit_exit(work, timeout, ret) 658 659 /** 660 * @brief Trace work poll cancel enter 661 * @param work Work structure 662 */ 663 #define sys_port_trace_k_work_poll_cancel_enter(work) 664 665 /** 666 * @brief Trace work poll cancel exit 667 * @param work Work structure 668 * @param ret Return value 669 */ 670 #define sys_port_trace_k_work_poll_cancel_exit(work, ret) 671 672 /** @} */ /* end of subsys_tracing_apis_work_poll */ 673 674 /** 675 * @brief Poll Tracing APIs 676 * @defgroup subsys_tracing_apis_poll Poll Tracing APIs 677 * @{ 678 */ 679 680 /** 681 * @brief Trace initialisation of a Poll Event 682 * @param event Poll Event 683 */ 684 #define sys_port_trace_k_poll_api_event_init(event) 685 686 /** 687 * @brief Trace Polling call start 688 * @param events Poll Events 689 */ 690 #define sys_port_trace_k_poll_api_poll_enter(events) 691 692 /** 693 * @brief Trace Polling call outcome 694 * @param events Poll Events 695 * @param ret Return value 696 */ 697 #define sys_port_trace_k_poll_api_poll_exit(events, ret) 698 699 /** 700 * @brief Trace initialisation of a Poll Signal 701 * @param signal Poll Signal 702 */ 703 #define sys_port_trace_k_poll_api_signal_init(signal) 704 705 /** 706 * @brief Trace resetting of Poll Signal 707 * @param signal Poll Signal 708 */ 709 #define sys_port_trace_k_poll_api_signal_reset(signal) 710 711 /** 712 * @brief Trace checking of Poll Signal 713 * @param signal Poll Signal 714 */ 715 #define sys_port_trace_k_poll_api_signal_check(signal) 716 717 /** 718 * @brief Trace raising of Poll Signal 719 * @param signal Poll Signal 720 * @param ret Return value 721 */ 722 #define sys_port_trace_k_poll_api_signal_raise(signal, ret) 723 724 /** @} */ /* end of subsys_tracing_apis_poll */ 725 726 /** 727 * @brief Semaphore Tracing APIs 728 * @defgroup subsys_tracing_apis_sem Semaphore Tracing APIs 729 * @{ 730 */ 731 732 /** 733 * @brief Trace initialisation of a Semaphore 734 * @param sem Semaphore object 735 * @param ret Return value 736 */ 737 #define sys_port_trace_k_sem_init(sem, ret) 738 739 /** 740 * @brief Trace giving a Semaphore entry 741 * @param sem Semaphore object 742 */ 743 #define sys_port_trace_k_sem_give_enter(sem) 744 745 /** 746 * @brief Trace giving a Semaphore exit 747 * @param sem Semaphore object 748 */ 749 #define sys_port_trace_k_sem_give_exit(sem) 750 751 /** 752 * @brief Trace taking a Semaphore attempt start 753 * @param sem Semaphore object 754 * @param timeout Timeout period 755 */ 756 #define sys_port_trace_k_sem_take_enter(sem, timeout) 757 758 /** 759 * @brief Trace taking a Semaphore attempt blocking 760 * @param sem Semaphore object 761 * @param timeout Timeout period 762 */ 763 #define sys_port_trace_k_sem_take_blocking(sem, timeout) 764 765 /** 766 * @brief Trace taking a Semaphore attempt outcome 767 * @param sem Semaphore object 768 * @param timeout Timeout period 769 * @param ret Return value 770 */ 771 #define sys_port_trace_k_sem_take_exit(sem, timeout, ret) 772 773 /** 774 * @brief Trace resetting a Semaphore 775 * @param sem Semaphore object 776 */ 777 #define sys_port_trace_k_sem_reset(sem) 778 779 /** @} */ /* end of subsys_tracing_apis_sem */ 780 781 /** 782 * @brief Mutex Tracing APIs 783 * @defgroup subsys_tracing_apis_mutex Mutex Tracing APIs 784 * @{ 785 */ 786 787 /** 788 * @brief Trace initialization of Mutex 789 * @param mutex Mutex object 790 * @param ret Return value 791 */ 792 #define sys_port_trace_k_mutex_init(mutex, ret) 793 794 /** 795 * @brief Trace Mutex lock attempt start 796 * @param mutex Mutex object 797 * @param timeout Timeout period 798 */ 799 #define sys_port_trace_k_mutex_lock_enter(mutex, timeout) 800 801 /** 802 * @brief Trace Mutex lock attempt blocking 803 * @param mutex Mutex object 804 * @param timeout Timeout period 805 */ 806 #define sys_port_trace_k_mutex_lock_blocking(mutex, timeout) 807 808 /** 809 * @brief Trace Mutex lock attempt outcome 810 * @param mutex Mutex object 811 * @param timeout Timeout period 812 * @param ret Return value 813 */ 814 #define sys_port_trace_k_mutex_lock_exit(mutex, timeout, ret) 815 816 /** 817 * @brief Trace Mutex unlock entry 818 * @param mutex Mutex object 819 */ 820 #define sys_port_trace_k_mutex_unlock_enter(mutex) 821 822 /** 823 * @brief Trace Mutex unlock exit 824 */ 825 #define sys_port_trace_k_mutex_unlock_exit(mutex, ret) 826 827 /** @} */ /* end of subsys_tracing_apis_mutex */ 828 829 /** 830 * @brief Conditional Variable Tracing APIs 831 * @defgroup subsys_tracing_apis_condvar Conditional Variable Tracing APIs 832 * @{ 833 */ 834 835 /** 836 * @brief Trace initialization of Conditional Variable 837 * @param condvar Conditional Variable object 838 * @param ret Return value 839 */ 840 #define sys_port_trace_k_condvar_init(condvar, ret) 841 842 /** 843 * @brief Trace Conditional Variable signaling start 844 * @param condvar Conditional Variable object 845 */ 846 #define sys_port_trace_k_condvar_signal_enter(condvar) 847 848 /** 849 * @brief Trace Conditional Variable signaling blocking 850 * @param condvar Conditional Variable object 851 * @param timeout Timeout period 852 */ 853 #define sys_port_trace_k_condvar_signal_blocking(condvar, timeout) 854 855 /** 856 * @brief Trace Conditional Variable signaling outcome 857 * @param condvar Conditional Variable object 858 * @param ret Return value 859 */ 860 #define sys_port_trace_k_condvar_signal_exit(condvar, ret) 861 862 /** 863 * @brief Trace Conditional Variable broadcast enter 864 * @param condvar Conditional Variable object 865 */ 866 #define sys_port_trace_k_condvar_broadcast_enter(condvar) 867 868 /** 869 * @brief Trace Conditional Variable broadcast exit 870 * @param condvar Conditional Variable object 871 * @param ret Return value 872 */ 873 #define sys_port_trace_k_condvar_broadcast_exit(condvar, ret) 874 875 /** 876 * @brief Trace Conditional Variable wait enter 877 * @param condvar Conditional Variable object 878 */ 879 #define sys_port_trace_k_condvar_wait_enter(condvar) 880 881 /** 882 * @brief Trace Conditional Variable wait exit 883 * @param condvar Conditional Variable object 884 * @param ret Return value 885 */ 886 #define sys_port_trace_k_condvar_wait_exit(condvar, ret) 887 888 /** @} */ /* end of subsys_tracing_apis_condvar */ 889 890 /** 891 * @brief Queue Tracing APIs 892 * @defgroup subsys_tracing_apis_queue Queue Tracing APIs 893 * @{ 894 */ 895 896 /** 897 * @brief Trace initialization of Queue 898 * @param queue Queue object 899 */ 900 #define sys_port_trace_k_queue_init(queue) 901 902 /** 903 * @brief Trace Queue cancel wait 904 * @param queue Queue object 905 */ 906 #define sys_port_trace_k_queue_cancel_wait(queue) 907 908 /** 909 * @brief Trace Queue insert attempt entry 910 * @param queue Queue object 911 * @param alloc Allocation flag 912 */ 913 #define sys_port_trace_k_queue_queue_insert_enter(queue, alloc) 914 915 /** 916 * @brief Trace Queue insert attempt blocking 917 * @param queue Queue object 918 * @param alloc Allocation flag 919 * @param timeout Timeout period 920 */ 921 #define sys_port_trace_k_queue_queue_insert_blocking(queue, alloc, timeout) 922 923 /** 924 * @brief Trace Queue insert attempt outcome 925 * @param queue Queue object 926 * @param alloc Allocation flag 927 * @param ret Return value 928 */ 929 #define sys_port_trace_k_queue_queue_insert_exit(queue, alloc, ret) 930 931 /** 932 * @brief Trace Queue append enter 933 * @param queue Queue object 934 */ 935 #define sys_port_trace_k_queue_append_enter(queue) 936 937 /** 938 * @brief Trace Queue append exit 939 * @param queue Queue object 940 */ 941 #define sys_port_trace_k_queue_append_exit(queue) 942 943 /** 944 * @brief Trace Queue alloc append enter 945 * @param queue Queue object 946 */ 947 #define sys_port_trace_k_queue_alloc_append_enter(queue) 948 949 /** 950 * @brief Trace Queue alloc append exit 951 * @param queue Queue object 952 * @param ret Return value 953 */ 954 #define sys_port_trace_k_queue_alloc_append_exit(queue, ret) 955 956 /** 957 * @brief Trace Queue prepend enter 958 * @param queue Queue object 959 */ 960 #define sys_port_trace_k_queue_prepend_enter(queue) 961 962 /** 963 * @brief Trace Queue prepend exit 964 * @param queue Queue object 965 */ 966 #define sys_port_trace_k_queue_prepend_exit(queue) 967 968 /** 969 * @brief Trace Queue alloc prepend enter 970 * @param queue Queue object 971 */ 972 #define sys_port_trace_k_queue_alloc_prepend_enter(queue) 973 974 /** 975 * @brief Trace Queue alloc prepend exit 976 * @param queue Queue object 977 * @param ret Return value 978 */ 979 #define sys_port_trace_k_queue_alloc_prepend_exit(queue, ret) 980 981 /** 982 * @brief Trace Queue insert attempt entry 983 * @param queue Queue object 984 */ 985 #define sys_port_trace_k_queue_insert_enter(queue) 986 987 /** 988 * @brief Trace Queue insert attempt blocking 989 * @param queue Queue object 990 * @param timeout Timeout period 991 */ 992 #define sys_port_trace_k_queue_insert_blocking(queue, timeout) 993 994 /** 995 * @brief Trace Queue insert attempt exit 996 * @param queue Queue object 997 */ 998 #define sys_port_trace_k_queue_insert_exit(queue) 999 1000 /** 1001 * @brief Trace Queue append list enter 1002 * @param queue Queue object 1003 */ 1004 #define sys_port_trace_k_queue_append_list_enter(queue) 1005 1006 /** 1007 * @brief Trace Queue append list exit 1008 * @param queue Queue object 1009 * @param ret Return value 1010 */ 1011 #define sys_port_trace_k_queue_append_list_exit(queue, ret) 1012 1013 /** 1014 * @brief Trace Queue merge slist enter 1015 * @param queue Queue object 1016 */ 1017 #define sys_port_trace_k_queue_merge_slist_enter(queue) 1018 1019 /** 1020 * @brief Trace Queue merge slist exit 1021 * @param queue Queue object 1022 * @param ret Return value 1023 */ 1024 #define sys_port_trace_k_queue_merge_slist_exit(queue, ret) 1025 1026 /** 1027 * @brief Trace Queue get attempt enter 1028 * @param queue Queue object 1029 * @param timeout Timeout period 1030 */ 1031 #define sys_port_trace_k_queue_get_enter(queue, timeout) 1032 1033 /** 1034 * @brief Trace Queue get attempt blockings 1035 * @param queue Queue object 1036 * @param timeout Timeout period 1037 */ 1038 #define sys_port_trace_k_queue_get_blocking(queue, timeout) 1039 1040 /** 1041 * @brief Trace Queue get attempt outcome 1042 * @param queue Queue object 1043 * @param timeout Timeout period 1044 * @param ret Return value 1045 */ 1046 #define sys_port_trace_k_queue_get_exit(queue, timeout, ret) 1047 1048 /** 1049 * @brief Trace Queue remove enter 1050 * @param queue Queue object 1051 */ 1052 #define sys_port_trace_k_queue_remove_enter(queue) 1053 1054 /** 1055 * @brief Trace Queue remove exit 1056 * @param queue Queue object 1057 * @param ret Return value 1058 */ 1059 #define sys_port_trace_k_queue_remove_exit(queue, ret) 1060 1061 /** 1062 * @brief Trace Queue unique append enter 1063 * @param queue Queue object 1064 */ 1065 #define sys_port_trace_k_queue_unique_append_enter(queue) 1066 1067 /** 1068 * @brief Trace Queue unique append exit 1069 * @param queue Queue object 1070 * 1071 * @param ret Return value 1072 */ 1073 #define sys_port_trace_k_queue_unique_append_exit(queue, ret) 1074 1075 /** 1076 * @brief Trace Queue peek head 1077 * @param queue Queue object 1078 * @param ret Return value 1079 */ 1080 #define sys_port_trace_k_queue_peek_head(queue, ret) 1081 1082 /** 1083 * @brief Trace Queue peek tail 1084 * @param queue Queue object 1085 * @param ret Return value 1086 */ 1087 #define sys_port_trace_k_queue_peek_tail(queue, ret) 1088 1089 /** @} */ /* end of subsys_tracing_apis_queue */ 1090 1091 /** 1092 * @brief FIFO Tracing APIs 1093 * @defgroup subsys_tracing_apis_fifo FIFO Tracing APIs 1094 * @{ 1095 */ 1096 1097 /** 1098 * @brief Trace initialization of FIFO Queue entry 1099 * @param fifo FIFO object 1100 */ 1101 #define sys_port_trace_k_fifo_init_enter(fifo) 1102 1103 /** 1104 * @brief Trace initialization of FIFO Queue exit 1105 * @param fifo FIFO object 1106 */ 1107 #define sys_port_trace_k_fifo_init_exit(fifo) 1108 1109 /** 1110 * @brief Trace FIFO Queue cancel wait entry 1111 * @param fifo FIFO object 1112 */ 1113 #define sys_port_trace_k_fifo_cancel_wait_enter(fifo) 1114 1115 /** 1116 * @brief Trace FIFO Queue cancel wait exit 1117 * @param fifo FIFO object 1118 */ 1119 #define sys_port_trace_k_fifo_cancel_wait_exit(fifo) 1120 1121 /** 1122 * @brief Trace FIFO Queue put entry 1123 * @param fifo FIFO object 1124 * @param data Data item 1125 */ 1126 #define sys_port_trace_k_fifo_put_enter(fifo, data) 1127 1128 /** 1129 * @brief Trace FIFO Queue put exit 1130 * @param fifo FIFO object 1131 * @param data Data item 1132 */ 1133 #define sys_port_trace_k_fifo_put_exit(fifo, data) 1134 1135 /** 1136 * @brief Trace FIFO Queue alloc put entry 1137 * @param fifo FIFO object 1138 * @param data Data item 1139 */ 1140 #define sys_port_trace_k_fifo_alloc_put_enter(fifo, data) 1141 1142 /** 1143 * @brief Trace FIFO Queue alloc put exit 1144 * @param fifo FIFO object 1145 * @param data Data item 1146 * @param ret Return value 1147 */ 1148 #define sys_port_trace_k_fifo_alloc_put_exit(fifo, data, ret) 1149 1150 /** 1151 * @brief Trace FIFO Queue put list entry 1152 * @param fifo FIFO object 1153 * @param head First ll-node 1154 * @param tail Last ll-node 1155 */ 1156 #define sys_port_trace_k_fifo_put_list_enter(fifo, head, tail) 1157 1158 /** 1159 * @brief Trace FIFO Queue put list exit 1160 * @param fifo FIFO object 1161 * @param head First ll-node 1162 * @param tail Last ll-node 1163 */ 1164 #define sys_port_trace_k_fifo_put_list_exit(fifo, head, tail) 1165 1166 /** 1167 * @brief Trace FIFO Queue put slist entry 1168 * @param fifo FIFO object 1169 * @param list Syslist object 1170 */ 1171 #define sys_port_trace_k_fifo_alloc_put_slist_enter(fifo, list) 1172 1173 /** 1174 * @brief Trace FIFO Queue put slist exit 1175 * @param fifo FIFO object 1176 * @param list Syslist object 1177 */ 1178 #define sys_port_trace_k_fifo_alloc_put_slist_exit(fifo, list) 1179 1180 /** 1181 * @brief Trace FIFO Queue get entry 1182 * @param fifo FIFO object 1183 * @param timeout Timeout period 1184 */ 1185 #define sys_port_trace_k_fifo_get_enter(fifo, timeout) 1186 1187 /** 1188 * @brief Trace FIFO Queue get exit 1189 * @param fifo FIFO object 1190 * @param timeout Timeout period 1191 * @param ret Return value 1192 */ 1193 #define sys_port_trace_k_fifo_get_exit(fifo, timeout, ret) 1194 1195 /** 1196 * @brief Trace FIFO Queue peek head entry 1197 * @param fifo FIFO object 1198 */ 1199 #define sys_port_trace_k_fifo_peek_head_enter(fifo) 1200 1201 /** 1202 * @brief Trace FIFO Queue peek head exit 1203 * @param fifo FIFO object 1204 * @param ret Return value 1205 */ 1206 #define sys_port_trace_k_fifo_peek_head_exit(fifo, ret) 1207 1208 /** 1209 * @brief Trace FIFO Queue peek tail entry 1210 * @param fifo FIFO object 1211 */ 1212 #define sys_port_trace_k_fifo_peek_tail_enter(fifo) 1213 1214 /** 1215 * @brief Trace FIFO Queue peek tail exit 1216 * @param fifo FIFO object 1217 * @param ret Return value 1218 */ 1219 #define sys_port_trace_k_fifo_peek_tail_exit(fifo, ret) 1220 1221 /** @} */ /* end of subsys_tracing_apis_fifo */ 1222 1223 /** 1224 * @brief LIFO Tracing APIs 1225 * @defgroup subsys_tracing_apis_lifo LIFO Tracing APIs 1226 * @{ 1227 */ 1228 1229 /** 1230 * @brief Trace initialization of LIFO Queue entry 1231 * @param lifo LIFO object 1232 */ 1233 #define sys_port_trace_k_lifo_init_enter(lifo) 1234 1235 /** 1236 * @brief Trace initialization of LIFO Queue exit 1237 * @param lifo LIFO object 1238 */ 1239 #define sys_port_trace_k_lifo_init_exit(lifo) 1240 1241 /** 1242 * @brief Trace LIFO Queue put entry 1243 * @param lifo LIFO object 1244 * @param data Data item 1245 */ 1246 #define sys_port_trace_k_lifo_put_enter(lifo, data) 1247 1248 /** 1249 * @brief Trace LIFO Queue put exit 1250 * @param lifo LIFO object 1251 * @param data Data item 1252 */ 1253 #define sys_port_trace_k_lifo_put_exit(lifo, data) 1254 1255 /** 1256 * @brief Trace LIFO Queue alloc put entry 1257 * @param lifo LIFO object 1258 * @param data Data item 1259 */ 1260 #define sys_port_trace_k_lifo_alloc_put_enter(lifo, data) 1261 1262 /** 1263 * @brief Trace LIFO Queue alloc put exit 1264 * @param lifo LIFO object 1265 * @param data Data item 1266 * @param ret Return value 1267 */ 1268 #define sys_port_trace_k_lifo_alloc_put_exit(lifo, data, ret) 1269 1270 /** 1271 * @brief Trace LIFO Queue get entry 1272 * @param lifo LIFO object 1273 * @param timeout Timeout period 1274 */ 1275 #define sys_port_trace_k_lifo_get_enter(lifo, timeout) 1276 1277 /** 1278 * @brief Trace LIFO Queue get exit 1279 * @param lifo LIFO object 1280 * @param timeout Timeout period 1281 * @param ret Return value 1282 */ 1283 #define sys_port_trace_k_lifo_get_exit(lifo, timeout, ret) 1284 1285 /** @} */ /* end of subsys_tracing_apis_lifo */ 1286 1287 /** 1288 * @brief Stack Tracing APIs 1289 * @defgroup subsys_tracing_apis_stack Stack Tracing APIs 1290 * @{ 1291 */ 1292 1293 /** 1294 * @brief Trace initialization of Stack 1295 * @param stack Stack object 1296 */ 1297 #define sys_port_trace_k_stack_init(stack) 1298 1299 /** 1300 * @brief Trace Stack alloc init attempt entry 1301 * @param stack Stack object 1302 */ 1303 #define sys_port_trace_k_stack_alloc_init_enter(stack) 1304 1305 /** 1306 * @brief Trace Stack alloc init outcome 1307 * @param stack Stack object 1308 * @param ret Return value 1309 */ 1310 #define sys_port_trace_k_stack_alloc_init_exit(stack, ret) 1311 1312 /** 1313 * @brief Trace Stack cleanup attempt entry 1314 * @param stack Stack object 1315 */ 1316 #define sys_port_trace_k_stack_cleanup_enter(stack) 1317 1318 /** 1319 * @brief Trace Stack cleanup outcome 1320 * @param stack Stack object 1321 * @param ret Return value 1322 */ 1323 #define sys_port_trace_k_stack_cleanup_exit(stack, ret) 1324 1325 /** 1326 * @brief Trace Stack push attempt entry 1327 * @param stack Stack object 1328 */ 1329 #define sys_port_trace_k_stack_push_enter(stack) 1330 1331 /** 1332 * @brief Trace Stack push attempt outcome 1333 * @param stack Stack object 1334 * @param ret Return value 1335 */ 1336 #define sys_port_trace_k_stack_push_exit(stack, ret) 1337 1338 /** 1339 * @brief Trace Stack pop attempt entry 1340 * @param stack Stack object 1341 * @param timeout Timeout period 1342 */ 1343 #define sys_port_trace_k_stack_pop_enter(stack, timeout) 1344 1345 /** 1346 * @brief Trace Stack pop attempt blocking 1347 * @param stack Stack object 1348 * @param timeout Timeout period 1349 */ 1350 #define sys_port_trace_k_stack_pop_blocking(stack, timeout) 1351 1352 /** 1353 * @brief Trace Stack pop attempt outcome 1354 * @param stack Stack object 1355 * @param timeout Timeout period 1356 * @param ret Return value 1357 */ 1358 #define sys_port_trace_k_stack_pop_exit(stack, timeout, ret) 1359 1360 /** @} */ /* end of subsys_tracing_apis_stack */ 1361 1362 /** 1363 * @brief Message Queue Tracing APIs 1364 * @defgroup subsys_tracing_apis_msgq Message Queue Tracing APIs 1365 * @{ 1366 */ 1367 1368 /** 1369 * @brief Trace initialization of Message Queue 1370 * @param msgq Message Queue object 1371 */ 1372 #define sys_port_trace_k_msgq_init(msgq) 1373 1374 /** 1375 * @brief Trace Message Queue alloc init attempt entry 1376 * @param msgq Message Queue object 1377 */ 1378 #define sys_port_trace_k_msgq_alloc_init_enter(msgq) 1379 1380 /** 1381 * @brief Trace Message Queue alloc init attempt outcome 1382 * @param msgq Message Queue object 1383 * @param ret Return value 1384 */ 1385 #define sys_port_trace_k_msgq_alloc_init_exit(msgq, ret) 1386 1387 /** 1388 * @brief Trace Message Queue cleanup attempt entry 1389 * @param msgq Message Queue object 1390 */ 1391 #define sys_port_trace_k_msgq_cleanup_enter(msgq) 1392 1393 /** 1394 * @brief Trace Message Queue cleanup attempt outcome 1395 * @param msgq Message Queue object 1396 * @param ret Return value 1397 */ 1398 #define sys_port_trace_k_msgq_cleanup_exit(msgq, ret) 1399 1400 /** 1401 * @brief Trace Message Queue put attempt entry 1402 * @param msgq Message Queue object 1403 * @param timeout Timeout period 1404 */ 1405 #define sys_port_trace_k_msgq_put_enter(msgq, timeout) 1406 1407 /** 1408 * @brief Trace Message Queue put attempt blocking 1409 * @param msgq Message Queue object 1410 * @param timeout Timeout period 1411 */ 1412 #define sys_port_trace_k_msgq_put_blocking(msgq, timeout) 1413 1414 /** 1415 * @brief Trace Message Queue put attempt outcome 1416 * @param msgq Message Queue object 1417 * @param timeout Timeout period 1418 * @param ret Return value 1419 */ 1420 #define sys_port_trace_k_msgq_put_exit(msgq, timeout, ret) 1421 1422 /** 1423 * @brief Trace Message Queue get attempt entry 1424 * @param msgq Message Queue object 1425 * @param timeout Timeout period 1426 */ 1427 #define sys_port_trace_k_msgq_get_enter(msgq, timeout) 1428 1429 /** 1430 * @brief Trace Message Queue get attempt blockings 1431 * @param msgq Message Queue object 1432 * @param timeout Timeout period 1433 */ 1434 #define sys_port_trace_k_msgq_get_blocking(msgq, timeout) 1435 1436 /** 1437 * @brief Trace Message Queue get attempt outcome 1438 * @param msgq Message Queue object 1439 * @param timeout Timeout period 1440 * @param ret Return value 1441 */ 1442 #define sys_port_trace_k_msgq_get_exit(msgq, timeout, ret) 1443 1444 /** 1445 * @brief Trace Message Queue peek 1446 * @param msgq Message Queue object 1447 * @param ret Return value 1448 */ 1449 #define sys_port_trace_k_msgq_peek(msgq, ret) 1450 1451 /** 1452 * @brief Trace Message Queue purge 1453 * @param msgq Message Queue object 1454 */ 1455 #define sys_port_trace_k_msgq_purge(msgq) 1456 1457 /** @} */ /* end of subsys_tracing_apis_msgq */ 1458 1459 /** 1460 * @brief Mailbox Tracing APIs 1461 * @defgroup subsys_tracing_apis_mbox Mailbox Tracing APIs 1462 * @{ 1463 */ 1464 1465 /** 1466 * @brief Trace initialization of Mailbox 1467 * @param mbox Mailbox object 1468 */ 1469 #define sys_port_trace_k_mbox_init(mbox) 1470 1471 /** 1472 * @brief Trace Mailbox message put attempt entry 1473 * @param mbox Mailbox object 1474 * @param timeout Timeout period 1475 */ 1476 #define sys_port_trace_k_mbox_message_put_enter(mbox, timeout) 1477 1478 /** 1479 * @brief Trace Mailbox message put attempt blocking 1480 * @param mbox Mailbox object 1481 * @param timeout Timeout period 1482 */ 1483 #define sys_port_trace_k_mbox_message_put_blocking(mbox, timeout) 1484 1485 /** 1486 * @brief Trace Mailbox message put attempt outcome 1487 * @param mbox Mailbox object 1488 * @param timeout Timeout period 1489 * @param ret Return value 1490 */ 1491 #define sys_port_trace_k_mbox_message_put_exit(mbox, timeout, ret) 1492 1493 /** 1494 * @brief Trace Mailbox put attempt entry 1495 * @param mbox Mailbox object 1496 * @param timeout Timeout period 1497 */ 1498 #define sys_port_trace_k_mbox_put_enter(mbox, timeout) 1499 1500 /** 1501 * @brief Trace Mailbox put attempt blocking 1502 * @param mbox Mailbox object 1503 * @param timeout Timeout period 1504 * @param ret Return value 1505 */ 1506 #define sys_port_trace_k_mbox_put_exit(mbox, timeout, ret) 1507 1508 /** 1509 * @brief Trace Mailbox async put entry 1510 * @param mbox Mailbox object 1511 * @param sem Semaphore object 1512 */ 1513 #define sys_port_trace_k_mbox_async_put_enter(mbox, sem) 1514 1515 /** 1516 * @brief Trace Mailbox async put exit 1517 * @param mbox Mailbox object 1518 * @param sem Semaphore object 1519 */ 1520 #define sys_port_trace_k_mbox_async_put_exit(mbox, sem) 1521 1522 /** 1523 * @brief Trace Mailbox get attempt entry 1524 * @param mbox Mailbox entry 1525 * @param timeout Timeout period 1526 */ 1527 #define sys_port_trace_k_mbox_get_enter(mbox, timeout) 1528 1529 /** 1530 * @brief Trace Mailbox get attempt blocking 1531 * @param mbox Mailbox entry 1532 * @param timeout Timeout period 1533 */ 1534 #define sys_port_trace_k_mbox_get_blocking(mbox, timeout) 1535 1536 /** 1537 * @brief Trace Mailbox get attempt outcome 1538 * @param mbox Mailbox entry 1539 * @param timeout Timeout period 1540 * @param ret Return value 1541 */ 1542 #define sys_port_trace_k_mbox_get_exit(mbox, timeout, ret) 1543 1544 /** 1545 * @brief Trace Mailbox data get 1546 * @brief rx_msg Receive Message object 1547 */ 1548 #define sys_port_trace_k_mbox_data_get(rx_msg) 1549 1550 /** @} */ /* end of subsys_tracing_apis_mbox */ 1551 1552 /** 1553 * @brief Pipe Tracing APIs 1554 * @defgroup subsys_tracing_apis_pipe Pipe Tracing APIs 1555 * @{ 1556 */ 1557 1558 /** 1559 * @brief Trace initialization of Pipe 1560 * @param pipe Pipe object 1561 * @param buffer data buffer 1562 * @param size data buffer size 1563 */ 1564 #define sys_port_trace_k_pipe_init(pipe, buffer, size) 1565 1566 /** 1567 * @brief Trace Pipe reset entry 1568 * @param pipe Pipe object 1569 */ 1570 #define sys_port_trace_k_pipe_reset_enter(pipe) 1571 1572 /** 1573 * @brief Trace Pipe reset exit 1574 * @param pipe Pipe object 1575 */ 1576 #define sys_port_trace_k_pipe_reset_exit(pipe) 1577 1578 /** 1579 * @brief Trace Pipe close entry 1580 * @param pipe Pipe object 1581 */ 1582 #define sys_port_trace_k_pipe_close_enter(pipe) 1583 1584 /** 1585 * @brief Trace Pipe close exit 1586 * @param pipe Pipe object 1587 */ 1588 #define sys_port_trace_k_pipe_close_exit(pipe) 1589 1590 /** 1591 * @brief Trace Pipe write attempt entry 1592 * @param pipe Pipe object 1593 * @param data pointer to data 1594 * @param len length of data 1595 * @param timeout Timeout period 1596 */ 1597 #define sys_port_trace_k_pipe_write_enter(pipe, data, len, timeout) 1598 1599 /** 1600 * @brief Trace Pipe write attempt blocking 1601 * @param pipe Pipe object 1602 * @param timeout Timeout period 1603 */ 1604 #define sys_port_trace_k_pipe_write_blocking(pipe, timeout) 1605 1606 /** 1607 * @brief Trace Pipe write attempt outcome 1608 * @param pipe Pipe object 1609 * @param ret Return value 1610 */ 1611 #define sys_port_trace_k_pipe_write_exit(pipe, ret) 1612 1613 /** 1614 * @brief Trace Pipe read attempt entry 1615 * @param pipe Pipe object 1616 * @param data Pointer to data 1617 * @param len Length of data 1618 * @param timeout Timeout period 1619 */ 1620 #define sys_port_trace_k_pipe_read_enter(pipe, data, len, timeout) 1621 1622 /** 1623 * @brief Trace Pipe read attempt blocking 1624 * @param pipe Pipe object 1625 * @param timeout Timeout period 1626 */ 1627 #define sys_port_trace_k_pipe_read_blocking(pipe, timeout) 1628 1629 /** 1630 * @brief Trace Pipe read attempt outcome 1631 * @param pipe Pipe object 1632 * @param ret Return value 1633 */ 1634 #define sys_port_trace_k_pipe_read_exit(pipe, ret) 1635 1636 /** 1637 * @brief Trace Pipe cleanup entry 1638 * @param pipe Pipe object 1639 */ 1640 #define sys_port_trace_k_pipe_cleanup_enter(pipe) 1641 1642 /** 1643 * @brief Trace Pipe cleanup exit 1644 * @param pipe Pipe object 1645 * @param ret Return value 1646 */ 1647 #define sys_port_trace_k_pipe_cleanup_exit(pipe, ret) 1648 1649 /** 1650 * @brief Trace Pipe alloc init entry 1651 * @param pipe Pipe object 1652 */ 1653 #define sys_port_trace_k_pipe_alloc_init_enter(pipe) 1654 1655 /** 1656 * @brief Trace Pipe alloc init exit 1657 * @param pipe Pipe object 1658 * @param ret Return value 1659 */ 1660 #define sys_port_trace_k_pipe_alloc_init_exit(pipe, ret) 1661 1662 /** 1663 * @brief Trace Pipe flush entry 1664 * @param pipe Pipe object 1665 */ 1666 #define sys_port_trace_k_pipe_flush_enter(pipe) 1667 1668 /** 1669 * @brief Trace Pipe flush exit 1670 * @param pipe Pipe object 1671 */ 1672 #define sys_port_trace_k_pipe_flush_exit(pipe) 1673 1674 /** 1675 * @brief Trace Pipe buffer flush entry 1676 * @param pipe Pipe object 1677 */ 1678 #define sys_port_trace_k_pipe_buffer_flush_enter(pipe) 1679 1680 /** 1681 * @brief Trace Pipe buffer flush exit 1682 * @param pipe Pipe object 1683 */ 1684 #define sys_port_trace_k_pipe_buffer_flush_exit(pipe) 1685 1686 /** 1687 * @brief Trace Pipe put attempt entry 1688 * @param pipe Pipe object 1689 * @param timeout Timeout period 1690 */ 1691 #define sys_port_trace_k_pipe_put_enter(pipe, timeout) 1692 1693 /** 1694 * @brief Trace Pipe put attempt blocking 1695 * @param pipe Pipe object 1696 * @param timeout Timeout period 1697 */ 1698 #define sys_port_trace_k_pipe_put_blocking(pipe, timeout) 1699 1700 /** 1701 * @brief Trace Pipe put attempt outcome 1702 * @param pipe Pipe object 1703 * @param timeout Timeout period 1704 * @param ret Return value 1705 */ 1706 #define sys_port_trace_k_pipe_put_exit(pipe, timeout, ret) 1707 1708 /** 1709 * @brief Trace Pipe get attempt entry 1710 * @param pipe Pipe object 1711 * @param timeout Timeout period 1712 */ 1713 #define sys_port_trace_k_pipe_get_enter(pipe, timeout) 1714 1715 /** 1716 * @brief Trace Pipe get attempt blocking 1717 * @param pipe Pipe object 1718 * @param timeout Timeout period 1719 */ 1720 #define sys_port_trace_k_pipe_get_blocking(pipe, timeout) 1721 1722 /** 1723 * @brief Trace Pipe get attempt outcome 1724 * @param pipe Pipe object 1725 * @param timeout Timeout period 1726 * @param ret Return value 1727 */ 1728 #define sys_port_trace_k_pipe_get_exit(pipe, timeout, ret) 1729 1730 /** @} */ /* end of subsys_tracing_apis_pipe */ 1731 1732 /** 1733 * @brief Heap Tracing APIs 1734 * @defgroup subsys_tracing_apis_heap Heap Tracing APIs 1735 * @{ 1736 */ 1737 1738 /** 1739 * @brief Trace initialization of Heap 1740 * @param h Heap object 1741 */ 1742 #define sys_port_trace_k_heap_init(h) 1743 1744 /** 1745 * @brief Trace Heap aligned alloc attempt entry 1746 * @param h Heap object 1747 * @param timeout Timeout period 1748 */ 1749 #define sys_port_trace_k_heap_aligned_alloc_enter(h, timeout) 1750 1751 /** 1752 * @brief Trace Heap align alloc attempt blocking 1753 * @param h Heap object 1754 * @param timeout Timeout period 1755 */ 1756 #define sys_port_trace_k_heap_aligned_alloc_blocking(h, timeout) 1757 1758 /** 1759 * @brief Trace Heap align alloc attempt outcome 1760 * @param h Heap object 1761 * @param timeout Timeout period 1762 * @param ret Return value 1763 */ 1764 #define sys_port_trace_k_heap_aligned_alloc_exit(h, timeout, ret) 1765 1766 /** 1767 * @brief Trace Heap alloc enter 1768 * @param h Heap object 1769 * @param timeout Timeout period 1770 */ 1771 #define sys_port_trace_k_heap_alloc_enter(h, timeout) 1772 1773 /** 1774 * @brief Trace Heap alloc exit 1775 * @param h Heap object 1776 * @param timeout Timeout period 1777 * @param ret Return value 1778 */ 1779 #define sys_port_trace_k_heap_alloc_exit(h, timeout, ret) 1780 1781 /** 1782 * @brief Trace Heap calloc enter 1783 * @param h Heap object 1784 * @param timeout Timeout period 1785 */ 1786 #define sys_port_trace_k_heap_calloc_enter(h, timeout) 1787 1788 /** 1789 * @brief Trace Heap calloc exit 1790 * @param h Heap object 1791 * @param timeout Timeout period 1792 * @param ret Return value 1793 */ 1794 #define sys_port_trace_k_heap_calloc_exit(h, timeout, ret) 1795 1796 /** 1797 * @brief Trace Heap free 1798 * @param h Heap object 1799 */ 1800 #define sys_port_trace_k_heap_free(h) 1801 1802 /** 1803 * @brief Trace Heap realloc enter 1804 * @param h Heap object 1805 * @param ptr Pointer to reallocate 1806 * @param bytes Bytes to reallocate 1807 * @param timeout Timeout period 1808 */ 1809 #define sys_port_trace_k_heap_realloc_enter(h, ptr, bytes, timeout) 1810 1811 /** 1812 * @brief Trace Heap realloc exit 1813 * @param h Heap object 1814 * @param ptr Pointer to reallocate 1815 * @param bytes Bytes to reallocate 1816 * @param timeout Timeout period 1817 * @param ret Return value 1818 */ 1819 #define sys_port_trace_k_heap_realloc_exit(h, ptr, bytes, timeout, ret) 1820 1821 /** 1822 * @brief Trace System Heap aligned alloc enter 1823 * @param heap Heap object 1824 */ 1825 #define sys_port_trace_k_heap_sys_k_aligned_alloc_enter(heap) 1826 1827 /** 1828 * @brief Trace System Heap aligned alloc exit 1829 * @param heap Heap object 1830 * @param ret Return value 1831 */ 1832 #define sys_port_trace_k_heap_sys_k_aligned_alloc_exit(heap, ret) 1833 1834 /** 1835 * @brief Trace System Heap aligned alloc enter 1836 * @param heap Heap object 1837 */ 1838 #define sys_port_trace_k_heap_sys_k_malloc_enter(heap) 1839 1840 /** 1841 * @brief Trace System Heap aligned alloc exit 1842 * @param heap Heap object 1843 * @param ret Return value 1844 */ 1845 #define sys_port_trace_k_heap_sys_k_malloc_exit(heap, ret) 1846 1847 /** 1848 * @brief Trace System Heap free entry 1849 * @param heap Heap object 1850 * @param heap_ref Heap reference 1851 */ 1852 #define sys_port_trace_k_heap_sys_k_free_enter(heap, heap_ref) 1853 1854 /** 1855 * @brief Trace System Heap free exit 1856 * @param heap Heap object 1857 * @param heap_ref Heap reference 1858 */ 1859 #define sys_port_trace_k_heap_sys_k_free_exit(heap, heap_ref) 1860 1861 /** 1862 * @brief Trace System heap calloc enter 1863 * @param heap 1864 */ 1865 #define sys_port_trace_k_heap_sys_k_calloc_enter(heap) 1866 1867 /** 1868 * @brief Trace System heap calloc exit 1869 * @param heap Heap object 1870 * @param ret Return value 1871 */ 1872 #define sys_port_trace_k_heap_sys_k_calloc_exit(heap, ret) 1873 1874 /** 1875 * @brief Trace System heap realloc enter 1876 * @param heap 1877 * @param ptr 1878 */ 1879 #define sys_port_trace_k_heap_sys_k_realloc_enter(heap, ptr) 1880 1881 /** 1882 * @brief Trace System heap realloc exit 1883 * @param heap Heap object 1884 * @param ptr Memory pointer 1885 * @param ret Return value 1886 */ 1887 #define sys_port_trace_k_heap_sys_k_realloc_exit(heap, ptr, ret) 1888 1889 /** @} */ /* end of subsys_tracing_apis_heap */ 1890 1891 /** 1892 * @brief Memory Slab Tracing APIs 1893 * @defgroup subsys_tracing_apis_mslab Memory Slab Tracing APIs 1894 * @{ 1895 */ 1896 1897 /** 1898 * @brief Trace initialization of Memory Slab 1899 * @param slab Memory Slab object 1900 * @param rc Return value 1901 */ 1902 #define sys_port_trace_k_mem_slab_init(slab, rc) 1903 1904 /** 1905 * @brief Trace Memory Slab alloc attempt entry 1906 * @param slab Memory Slab object 1907 * @param timeout Timeout period 1908 */ 1909 #define sys_port_trace_k_mem_slab_alloc_enter(slab, timeout) 1910 1911 /** 1912 * @brief Trace Memory Slab alloc attempt blocking 1913 * @param slab Memory Slab object 1914 * @param timeout Timeout period 1915 */ 1916 #define sys_port_trace_k_mem_slab_alloc_blocking(slab, timeout) 1917 1918 /** 1919 * @brief Trace Memory Slab alloc attempt outcome 1920 * @param slab Memory Slab object 1921 * @param timeout Timeout period 1922 * @param ret Return value 1923 */ 1924 #define sys_port_trace_k_mem_slab_alloc_exit(slab, timeout, ret) 1925 1926 /** 1927 * @brief Trace Memory Slab free entry 1928 * @param slab Memory Slab object 1929 */ 1930 #define sys_port_trace_k_mem_slab_free_enter(slab) 1931 1932 /** 1933 * @brief Trace Memory Slab free exit 1934 * @param slab Memory Slab object 1935 */ 1936 #define sys_port_trace_k_mem_slab_free_exit(slab) 1937 1938 /** @} */ /* end of subsys_tracing_apis_mslab */ 1939 1940 /** 1941 * @brief Timer Tracing APIs 1942 * @defgroup subsys_tracing_apis_timer Timer Tracing APIs 1943 * @{ 1944 */ 1945 1946 /** 1947 * @brief Trace initialization of Timer 1948 * @param timer Timer object 1949 */ 1950 #define sys_port_trace_k_timer_init(timer) 1951 1952 /** 1953 * @brief Trace Timer start 1954 * @param timer Timer object 1955 * @param duration Timer duration 1956 * @param period Timer period 1957 */ 1958 #define sys_port_trace_k_timer_start(timer, duration, period) 1959 1960 /** 1961 * @brief Trace Timer stop 1962 * @param timer Timer object 1963 */ 1964 #define sys_port_trace_k_timer_stop(timer) 1965 1966 /** 1967 * @brief Trace Timer status sync entry 1968 * @param timer Timer object 1969 */ 1970 #define sys_port_trace_k_timer_status_sync_enter(timer) 1971 1972 /** 1973 * @brief Trace Timer Status sync blocking 1974 * @param timer Timer object 1975 * @param timeout Timeout period 1976 */ 1977 #define sys_port_trace_k_timer_status_sync_blocking(timer, timeout) 1978 1979 /** 1980 * @brief Trace Time Status sync outcome 1981 * @param timer Timer object 1982 * @param result Return value 1983 */ 1984 #define sys_port_trace_k_timer_status_sync_exit(timer, result) 1985 1986 /** @} */ /* end of subsys_tracing_apis_timer */ 1987 1988 /** 1989 * @brief Event Tracing APIs 1990 * @defgroup subsys_tracing_apis_event Event Tracing APIs 1991 * @{ 1992 */ 1993 1994 /** 1995 * @brief Trace initialisation of an Event 1996 * @param event Event object 1997 */ 1998 #define sys_port_trace_k_event_init(event) 1999 2000 /** 2001 * @brief Trace posting of an Event call entry 2002 * @param event Event object 2003 * @param events Set of posted events 2004 * @param events_mask Mask to apply against posted events 2005 */ 2006 #define sys_port_trace_k_event_post_enter(event, events, events_mask) 2007 2008 /** 2009 * @brief Trace posting of an Event call exit 2010 * @param event Event object 2011 * @param events Set of posted events 2012 * @param events_mask Mask to apply against posted events 2013 */ 2014 #define sys_port_trace_k_event_post_exit(event, events, events_mask) 2015 2016 /** 2017 * @brief Trace waiting of an Event call entry 2018 * @param event Event object 2019 * @param events Set of events for which to wait 2020 * @param options Event wait options 2021 * @param timeout Timeout period 2022 */ 2023 #define sys_port_trace_k_event_wait_enter(event, events, options, timeout) 2024 2025 /** 2026 * @brief Trace waiting of an Event call exit 2027 * @param event Event object 2028 * @param events Set of events for which to wait 2029 * @param options Event wait options 2030 * @param timeout Timeout period 2031 */ 2032 #define sys_port_trace_k_event_wait_blocking(event, events, options, timeout) 2033 2034 /** 2035 * @brief Trace waiting of an Event call exit 2036 * @param event Event object 2037 * @param events Set of events for which to wait 2038 * @param ret Set of received events 2039 */ 2040 #define sys_port_trace_k_event_wait_exit(event, events, ret) 2041 2042 /** @} */ /* end of subsys_tracing_apis_event */ 2043 2044 /** 2045 * @brief System PM Tracing APIs 2046 * @defgroup subsys_tracing_apis_pm_system System PM Tracing APIs 2047 * @{ 2048 */ 2049 2050 /** 2051 * @brief Trace system suspend call entry. 2052 * @param ticks Ticks. 2053 */ 2054 #define sys_port_trace_pm_system_suspend_enter(ticks) 2055 2056 /** 2057 * @brief Trace system suspend call exit. 2058 * @param ticks Ticks. 2059 * @param state PM state. 2060 */ 2061 #define sys_port_trace_pm_system_suspend_exit(ticks, state) 2062 2063 /** @} */ /* end of subsys_tracing_apis_pm_system */ 2064 2065 /** 2066 * @brief PM Device Runtime Tracing APIs 2067 * @defgroup subsys_tracing_apis_pm_device_runtime PM Device Runtime Tracing APIs 2068 * @{ 2069 */ 2070 2071 /** 2072 * @brief Trace getting a device call entry. 2073 * @param dev Device instance. 2074 */ 2075 #define sys_port_trace_pm_device_runtime_get_enter(dev) 2076 2077 /** 2078 * @brief Trace getting a device call exit. 2079 * @param dev Device instance. 2080 * @param ret Return value. 2081 */ 2082 #define sys_port_trace_pm_device_runtime_get_exit(dev, ret) 2083 2084 /** 2085 * @brief Trace putting a device call entry. 2086 * @param dev Device instance. 2087 */ 2088 #define sys_port_trace_pm_device_runtime_put_enter(dev) 2089 2090 /** 2091 * @brief Trace putting a device call exit. 2092 * @param dev Device instance. 2093 * @param ret Return value. 2094 */ 2095 #define sys_port_trace_pm_device_runtime_put_exit(dev, ret) 2096 2097 /** 2098 * @brief Trace putting a device (asynchronously) call entry. 2099 * @param dev Device instance. 2100 * @param delay Time to delay the operation 2101 */ 2102 #define sys_port_trace_pm_device_runtime_put_async_enter(dev, delay) 2103 2104 /** 2105 * @brief Trace putting a device (asynchronously) call exit. 2106 * @param dev Device instance. 2107 * @param delay Time to delay the operation. 2108 * @param ret Return value. 2109 */ 2110 #define sys_port_trace_pm_device_runtime_put_async_exit(dev, delay, ret) 2111 2112 /** 2113 * @brief Trace enabling device runtime PM call entry. 2114 * @param dev Device instance. 2115 */ 2116 #define sys_port_trace_pm_device_runtime_enable_enter(dev) 2117 2118 /** 2119 * @brief Trace enabling device runtime PM call exit. 2120 * @param dev Device instance. 2121 * @param ret Return value. 2122 */ 2123 #define sys_port_trace_pm_device_runtime_enable_exit(dev, ret) 2124 2125 /** 2126 * @brief Trace disabling device runtime PM call entry. 2127 * @param dev Device instance. 2128 */ 2129 #define sys_port_trace_pm_device_runtime_disable_enter(dev) 2130 2131 /** 2132 * @brief Trace disabling device runtime PM call exit. 2133 * @param dev Device instance. 2134 * @param ret Return value. 2135 */ 2136 #define sys_port_trace_pm_device_runtime_disable_exit(dev, ret) 2137 2138 /** @} */ /* end of subsys_tracing_apis_pm_device_runtime */ 2139 2140 /** 2141 * @brief Network Core Tracing APIs 2142 * @defgroup subsys_tracing_apis_net Network Core Tracing APIs 2143 * @{ 2144 */ 2145 2146 /** 2147 * @brief Trace network data receive 2148 * @param iface Network interface 2149 * @param pkt Received network packet 2150 */ 2151 #define sys_port_trace_net_recv_data_enter(iface, pkt) 2152 2153 /** 2154 * @brief Trace network data receive attempt 2155 * @param iface Network interface 2156 * @param pkt Received network packet 2157 * @param ret Return value 2158 */ 2159 #define sys_port_trace_net_recv_data_exit(iface, pkt, ret) 2160 2161 /** 2162 * @brief Trace network data send 2163 * @param pkt Network packet to send 2164 */ 2165 #define sys_port_trace_net_send_data_enter(pkt) 2166 2167 /** 2168 * @brief Trace network data send attempt 2169 * @param pkt Received network packet 2170 * @param ret Return value 2171 */ 2172 #define sys_port_trace_net_send_data_exit(pkt, ret) 2173 2174 /** 2175 * @brief Trace network data receive time 2176 * @param pkt Received network packet 2177 * @param end_time When the RX processing stopped for this pkt (in ticks) 2178 */ 2179 #define sys_port_trace_net_rx_time(pkt, end_time) 2180 2181 /** 2182 * @brief Trace network data sent time 2183 * @param pkt Sent network packet 2184 * @param end_time When the TX processing stopped for this pkt (in ticks) 2185 */ 2186 #define sys_port_trace_net_tx_time(pkt, end_time) 2187 2188 /** @} */ /* end of subsys_tracing_apis_net */ 2189 2190 /** 2191 * @brief Network Socket Tracing APIs 2192 * @defgroup subsys_tracing_apis_socket Network Socket Tracing APIs 2193 * @{ 2194 */ 2195 2196 /** 2197 * @brief Trace init of network sockets 2198 * @param socket Network socket is returned 2199 * @param family Socket address family 2200 * @param type Socket type 2201 * @param proto Socket protocol 2202 */ 2203 #define sys_port_trace_socket_init(socket, family, type, proto) 2204 2205 /** 2206 * @brief Trace close of network sockets 2207 * @param socket Socket object 2208 */ 2209 #define sys_port_trace_socket_close_enter(socket) 2210 2211 /** 2212 * @brief Trace network socket close attempt 2213 * @param socket Socket object 2214 * @param ret Return value 2215 */ 2216 #define sys_port_trace_socket_close_exit(socket, ret) 2217 2218 /** 2219 * @brief Trace shutdown of network sockets 2220 * @param socket Socket object 2221 * @param how Socket shutdown type 2222 */ 2223 #define sys_port_trace_socket_shutdown_enter(socket, how) 2224 2225 /** 2226 * @brief Trace network socket shutdown attempt 2227 * @param socket Socket object 2228 * @param ret Return value 2229 */ 2230 #define sys_port_trace_socket_shutdown_exit(socket, ret) 2231 2232 /** 2233 * @brief Trace bind of network sockets 2234 * @param socket Socket object 2235 * @param addr Network address to bind 2236 * @param addrlen Address length 2237 */ 2238 #define sys_port_trace_socket_bind_enter(socket, addr, addrlen) 2239 2240 /** 2241 * @brief Trace network socket bind attempt 2242 * @param socket Socket object 2243 * @param ret Return value 2244 */ 2245 #define sys_port_trace_socket_bind_exit(socket, ret) 2246 2247 /** 2248 * @brief Trace connect of network sockets 2249 * @param socket Socket object 2250 * @param addr Network address to bind 2251 * @param addrlen Address length 2252 */ 2253 #define sys_port_trace_socket_connect_enter(socket, addr, addrlen) 2254 2255 /** 2256 * @brief Trace network socket connect attempt 2257 * @param socket Socket object 2258 * @param ret Return value 2259 */ 2260 #define sys_port_trace_socket_connect_exit(socket, ret) 2261 2262 /** 2263 * @brief Trace listen of network sockets 2264 * @param socket Socket object 2265 * @param backlog Socket backlog length 2266 */ 2267 #define sys_port_trace_socket_listen_enter(socket, backlog) 2268 2269 /** 2270 * @brief Trace network socket listen attempt 2271 * @param socket Socket object 2272 * @param ret Return value 2273 */ 2274 #define sys_port_trace_socket_listen_exit(socket, ret) 2275 2276 /** 2277 * @brief Trace accept of network sockets 2278 * @param socket Socket object 2279 */ 2280 #define sys_port_trace_socket_accept_enter(socket) 2281 2282 /** 2283 * @brief Trace network socket accept attempt 2284 * @param socket Socket object 2285 * @param addr Peer network address 2286 * @param addrlen Network address length 2287 * @param ret Return value 2288 */ 2289 #define sys_port_trace_socket_accept_exit(socket, addr, addrlen, ret) 2290 2291 /** 2292 * @brief Trace sendto of network sockets 2293 * @param socket Socket object 2294 * @param len Length of the data to send 2295 * @param flags Flags for this send operation 2296 * @param dest_addr Destination network address 2297 * @param addrlen Network address length 2298 */ 2299 #define sys_port_trace_socket_sendto_enter(socket, len, flags, dest_addr, addrlen) 2300 2301 /** 2302 * @brief Trace network socket sendto attempt 2303 * @param socket Socket object 2304 * @param ret Return value 2305 */ 2306 #define sys_port_trace_socket_sendto_exit(socket, ret) 2307 2308 /** 2309 * @brief Trace sendmsg of network sockets 2310 * @param socket Socket object 2311 * @param msg Data to send 2312 * @param flags Flags for this send operation 2313 */ 2314 #define sys_port_trace_socket_sendmsg_enter(socket, msg, flags) 2315 2316 /** 2317 * @brief Trace network socket sendmsg attempt 2318 * @param socket Socket object 2319 * @param ret Return value 2320 */ 2321 #define sys_port_trace_socket_sendmsg_exit(socket, ret) 2322 2323 /** 2324 * @brief Trace recvfrom of network sockets 2325 * @param socket Socket object 2326 * @param max_len Maximum length of the data we can receive 2327 * @param flags Flags for this receive operation 2328 * @param addr Remote network address 2329 * @param addrlen Network address length 2330 */ 2331 #define sys_port_trace_socket_recvfrom_enter(socket, max_len, flags, addr, addrlen) 2332 2333 /** 2334 * @brief Trace network socket recvfrom attempt 2335 * @param socket Socket object 2336 * @param src_addr Peer network address that send the data 2337 * @param addrlen Length of the network address 2338 * @param ret Return value 2339 */ 2340 #define sys_port_trace_socket_recvfrom_exit(socket, src_addr, addrlen, ret) 2341 2342 /** 2343 * @brief Trace recvmsg of network sockets 2344 * @param socket Socket object 2345 * @param msg Message buffer to receive 2346 * @param flags Flags for this receive operation 2347 */ 2348 #define sys_port_trace_socket_recvmsg_enter(socket, msg, flags) 2349 2350 /** 2351 * @brief Trace network socket recvmsg attempt 2352 * @param socket Socket object 2353 * @param msg Message buffer received 2354 * @param ret Return value 2355 */ 2356 #define sys_port_trace_socket_recvmsg_exit(socket, msg, ret) 2357 2358 /** 2359 * @brief Trace fcntl of network sockets 2360 * @param socket Socket object 2361 * @param cmd Command to set for this socket 2362 * @param flags Flags for this receive operation 2363 */ 2364 #define sys_port_trace_socket_fcntl_enter(socket, cmd, flags) 2365 2366 /** 2367 * @brief Trace network socket fcntl attempt 2368 * @param socket Socket object 2369 * @param ret Return value 2370 */ 2371 #define sys_port_trace_socket_fcntl_exit(socket, ret) 2372 2373 /** 2374 * @brief Trace ioctl of network sockets 2375 * @param socket Socket object 2376 * @param req Request to set for this socket 2377 */ 2378 #define sys_port_trace_socket_ioctl_enter(socket, req) 2379 2380 /** 2381 * @brief Trace network socket ioctl attempt 2382 * @param socket Socket object 2383 * @param ret Return value 2384 */ 2385 #define sys_port_trace_socket_ioctl_exit(socket, ret) 2386 2387 /** 2388 * @brief Trace polling of network sockets 2389 * @param fds Set of socket object 2390 * @param nfds Number of socket objects in the set 2391 * @param timeout Timeout for the poll operation 2392 */ 2393 #define sys_port_trace_socket_poll_enter(fds, nfds, timeout) 2394 2395 /** 2396 * @brief Trace network socket poll attempt 2397 * @param fds Set of socket object 2398 * @param nfds Number of socket objects in the set 2399 * @param ret Return value 2400 */ 2401 #define sys_port_trace_socket_poll_exit(fds, nfds, ret) 2402 2403 /** 2404 * @brief Trace getsockopt of network sockets 2405 * @param socket Socket object 2406 * @param level Option level 2407 * @param optname Option name 2408 */ 2409 #define sys_port_trace_socket_getsockopt_enter(socket, level, optname) 2410 2411 /** 2412 * @brief Trace network socket getsockopt attempt 2413 * @param socket Socket object 2414 * @param level Option level 2415 * @param optname Option name 2416 * @param optval Option value 2417 * @param optlen Option value length 2418 * @param ret Return value 2419 */ 2420 #define sys_port_trace_socket_getsockopt_exit(socket, level, optname, optval, optlen, ret) 2421 2422 /** 2423 * @brief Trace setsockopt of network sockets 2424 * @param socket Socket object 2425 * @param level Option level 2426 * @param optname Option name 2427 * @param optval Option value 2428 * @param optlen Option value length 2429 */ 2430 #define sys_port_trace_socket_setsockopt_enter(socket, level, optname, optval, optlen) 2431 2432 /** 2433 * @brief Trace network socket setsockopt attempt 2434 * @param socket Socket object 2435 * @param ret Return value 2436 */ 2437 #define sys_port_trace_socket_setsockopt_exit(socket, ret) 2438 2439 /** 2440 * @brief Trace getpeername of network sockets 2441 * @param socket Socket object 2442 */ 2443 #define sys_port_trace_socket_getpeername_enter(socket) 2444 2445 /** 2446 * @brief Trace network socket getpeername attempt 2447 * @param socket Socket object 2448 * @param addr Peer socket network address 2449 * @param addrlen Length of the network address 2450 * @param ret Return value 2451 */ 2452 #define sys_port_trace_socket_getpeername_exit(socket, addr, addrlen, ret) 2453 2454 /** 2455 * @brief Trace getsockname of network sockets 2456 * @param socket Socket object 2457 */ 2458 #define sys_port_trace_socket_getsockname_enter(socket) 2459 2460 /** 2461 * @brief Trace network socket getsockname attempt 2462 * @param socket Socket object 2463 * @param addr Local socket network address 2464 * @param addrlen Length of the network address 2465 * @param ret Return value 2466 */ 2467 #define sys_port_trace_socket_getsockname_exit(socket, addr, addrlen, ret) 2468 2469 /** 2470 * @brief Trace socketpair enter call 2471 * @param family Network address family 2472 * @param type Socket type 2473 * @param proto Socket protocol 2474 * @param sv Socketpair buffer 2475 */ 2476 #define sys_port_trace_socket_socketpair_enter(family, type, proto, sv) 2477 2478 /** 2479 * @brief Trace network socketpair open attempt 2480 * @param socket_A Socketpair first socket object 2481 * @param socket_B Socketpair second socket object 2482 * @param ret Return value 2483 */ 2484 #define sys_port_trace_socket_socketpair_exit(socket_A, socket_B, ret) 2485 2486 /** @} */ /* end of subsys_tracing_apis_socket */ 2487 2488 /** 2489 * @brief Named Tracing APIs 2490 * @defgroup subsys_tracing_apis_named Named tracing APIs 2491 * @{ 2492 */ 2493 2494 /* 2495 * @brief Called by user to generate named events 2496 * 2497 * @param name name of event. Tracing subsystems may place a limit on 2498 * the length of this string 2499 * @param arg0 arbitrary user-provided data for this event 2500 * @param arg1 arbitrary user-provided data for this event 2501 */ 2502 #define sys_trace_named_event(name, arg0, arg1) 2503 2504 /** @} */ /* end of subsys_tracing_apis_named */ 2505 2506 /** 2507 * @brief GPIO Tracing APIs 2508 * @defgroup subsys_tracing_apis_gpio GPIO Tracing APIs 2509 * @{ 2510 */ 2511 2512 /** 2513 * @brief Trace GPIO pin interrupt configure enter call 2514 * @param port Pointer to device structure for the driver instance 2515 * @param pin GPIO pin number 2516 * @param flags Interrupt configuration flags as defined by GPIO_INT_* 2517 */ 2518 #define sys_port_trace_gpio_pin_interrupt_configure_enter(port, pin, flags) 2519 2520 /** 2521 * @brief Trace GPIO pin interrupt configure exit call 2522 * @param port Pointer to device structure for the driver instance 2523 * @param pin GPIO pin number 2524 * @param ret Return value 2525 */ 2526 #define sys_port_trace_gpio_pin_interrupt_configure_exit(port, pin, ret) 2527 2528 /** 2529 * @brief Trace GPIO single pin configure enter call 2530 * @param port Pointer to device structure for the driver instance 2531 * @param pin GPIO pin number to configure 2532 * @param flags GPIO pin configuration flags 2533 */ 2534 #define sys_port_trace_gpio_pin_configure_enter(port, pin, flags) 2535 2536 /** 2537 * @brief Trace GPIO single pin configure exit call 2538 * @param port Pointer to device structure for the driver instance 2539 * @param pin GPIO pin number to configure 2540 * @param ret Return value 2541 */ 2542 #define sys_port_trace_gpio_pin_configure_exit(port, pin, ret) 2543 2544 /** 2545 * @brief Trace GPIO port get direction enter call 2546 * @param port Pointer to device structure for the driver instance 2547 * @param map Bitmap of pin directions to query 2548 * @param inputs Pointer to a variable where input directions will be stored 2549 * @param outputs Pointer to a variable where output directions will be stored 2550 */ 2551 #define sys_port_trace_gpio_port_get_direction_enter(port, map, inputs, outputs) 2552 2553 /** 2554 * @brief Trace GPIO port get direction exit call 2555 * @param port Pointer to device structure for the driver instance 2556 * @param ret Return value 2557 */ 2558 #define sys_port_trace_gpio_port_get_direction_exit(port, ret) 2559 2560 /** 2561 * @brief Trace GPIO pin gent config enter call 2562 * @param port Pointer to device structure for the driver instance 2563 * @param pin GPIO pin number to configure 2564 * @param flags GPIO pin configuration flags 2565 */ 2566 #define sys_port_trace_gpio_pin_get_config_enter(port, pin, flags) 2567 2568 /** 2569 * @brief Trace GPIO pin get config exit call 2570 * @param port Pointer to device structure for the driver instance 2571 * @param pin GPIO pin number to configure 2572 * @param ret Return value 2573 */ 2574 #define sys_port_trace_gpio_pin_get_config_exit(port, pin, ret) 2575 2576 /** 2577 * @brief Trace GPIO port get raw enter call 2578 * @param port Pointer to device structure for the driver instance 2579 * @param value Pointer to a variable where the raw value will be stored 2580 */ 2581 #define sys_port_trace_gpio_port_get_raw_enter(port, value) 2582 2583 /** 2584 * @brief Trace GPIO port get raw exit call 2585 * @param port Pointer to device structure for the driver instance 2586 * @param ret Return value 2587 */ 2588 #define sys_port_trace_gpio_port_get_raw_exit(port, ret) 2589 2590 /** 2591 * @brief Trace GPIO port set masked raw enter call 2592 * @param port Pointer to device structure for the driver instance 2593 * @param mask Mask indicating which pins will be modified 2594 * @param value Value to be written to the output pins 2595 */ 2596 #define sys_port_trace_gpio_port_set_masked_raw_enter(port, mask, value) 2597 2598 /** 2599 * @brief Trace GPIO port set masked raw exit call 2600 * @param port Pointer to device structure for the driver instance 2601 * @param ret Return value 2602 */ 2603 #define sys_port_trace_gpio_port_set_masked_raw_exit(port, ret) 2604 2605 /** 2606 * @brief Trace GPIO port set bits raw enter call 2607 * @param port Pointer to device structure for the driver instance 2608 * @param pins Value indicating which pins will be modified 2609 */ 2610 #define sys_port_trace_gpio_port_set_bits_raw_enter(port, pins) 2611 2612 /** 2613 * @brief Trace GPIO port set bits raw exit call 2614 * @param port Pointer to device structure for the driver instance 2615 * @param ret Return value 2616 */ 2617 #define sys_port_trace_gpio_port_set_bits_raw_exit(port, ret) 2618 2619 /** 2620 * @brief Trace GPIO port clear bits raw enter call 2621 * @param port Pointer to device structure for the driver instance 2622 * @param pins Value indicating which pins will be modified 2623 */ 2624 #define sys_port_trace_gpio_port_clear_bits_raw_enter(port, pins) 2625 2626 /** 2627 * @brief Trace GPIO port clear bits raw exit call 2628 * @param port Pointer to device structure for the driver instance 2629 * @param ret Return value 2630 */ 2631 #define sys_port_trace_gpio_port_clear_bits_raw_exit(port, ret) 2632 2633 /** 2634 * @brief Trace GPIO port toggle bits enter call 2635 * @param port Pointer to device structure for the driver instance 2636 * @param pins Value indicating which pins will be modified 2637 */ 2638 #define sys_port_trace_gpio_port_toggle_bits_enter(port, pins) 2639 2640 /** 2641 * @brief Trace GPIO port toggle bits exit call 2642 * @param port Pointer to device structure for the driver instance 2643 * @param ret Return value 2644 */ 2645 #define sys_port_trace_gpio_port_toggle_bits_exit(port, ret) 2646 2647 /** 2648 * @brief Trace GPIO init callback enter call 2649 * @param callback A valid application's callback structure pointer 2650 * @param handler A valid handler function pointer 2651 * @param pin_mask A bit mask of relevant pins for the handler 2652 */ 2653 #define sys_port_trace_gpio_init_callback_enter(callback, handler, pin_mask) 2654 2655 /** 2656 * @brief Trace GPIO init callback exit call 2657 * @param callback A valid application's callback structure pointer 2658 */ 2659 #define sys_port_trace_gpio_init_callback_exit(callback) 2660 2661 /** 2662 * @brief Trace GPIO add callback enter call 2663 * @param port Pointer to device structure for the driver instance 2664 * @param callback A valid application's callback structure pointer 2665 */ 2666 #define sys_port_trace_gpio_add_callback_enter(port, callback) 2667 2668 /** 2669 * @brief Trace GPIO add callback exit call 2670 * @param port Pointer to device structure for the driver instance 2671 * @param ret Return value 2672 */ 2673 #define sys_port_trace_gpio_add_callback_exit(port, ret) 2674 2675 /** 2676 * @brief Trace GPIO remove callback enter call 2677 * @param port Pointer to device structure for the driver instance 2678 * @param callback A valid application's callback structure pointer 2679 */ 2680 #define sys_port_trace_gpio_remove_callback_enter(port, callback) 2681 2682 /** 2683 * @brief Trace GPIO remove callback exit call 2684 * @param port Pointer to device structure for the driver instance 2685 * @param ret Return value 2686 */ 2687 #define sys_port_trace_gpio_remove_callback_exit(port, ret) 2688 2689 /** 2690 * @brief Trace GPIO get pending interrupt enter call 2691 * @param dev Pointer to the device structure for the device instance 2692 */ 2693 #define sys_port_trace_gpio_get_pending_int_enter(dev) 2694 2695 /** 2696 * @brief Trace GPIO get pending interrupt exit call 2697 * @param dev Pointer to the device structure for the device instance 2698 * @param ret Return value 2699 */ 2700 #define sys_port_trace_gpio_get_pending_int_exit(dev, ret) 2701 2702 /** 2703 * @brief 2704 * @param list @ref sys_slist_t representing gpio_callback pointers 2705 * @param port @ref device representing the GPIO port 2706 * @param pins @ref gpio_pin_t representing the pins 2707 */ 2708 #define sys_port_trace_gpio_fire_callbacks_enter(list, port, pins) 2709 2710 /** 2711 * @brief 2712 * @param port @ref device representing the GPIO port 2713 * @param callback @ref gpio_callback a valid Application's callback structure pointer 2714 */ 2715 #define sys_port_trace_gpio_fire_callback(port, callback) 2716 2717 /** @} */ /* end of subsys_tracing_apis_gpio */ 2718 2719 #if defined(CONFIG_PERCEPIO_TRACERECORDER) 2720 #include "tracing_tracerecorder.h" 2721 2722 /** 2723 * @brief Called when the cpu exits the idle state 2724 */ 2725 void sys_trace_idle_exit(void); 2726 2727 #else 2728 /** 2729 * @brief Called when entering an ISR 2730 */ 2731 void sys_trace_isr_enter(void); 2732 2733 /** 2734 * @brief Called when exiting an ISR 2735 */ 2736 void sys_trace_isr_exit(void); 2737 2738 /** 2739 * @brief Called when exiting an ISR and switching to scheduler 2740 */ 2741 void sys_trace_isr_exit_to_scheduler(void); 2742 2743 /** 2744 * @brief Called when the cpu enters the idle state 2745 */ 2746 void sys_trace_idle(void); 2747 2748 /** 2749 * @brief Called when the cpu exits the idle state 2750 */ 2751 void sys_trace_idle_exit(void); 2752 2753 #endif /* CONFIG_PERCEPIO_TRACERECORDER */ 2754 2755 /** 2756 * @brief Called when entering an init function 2757 */ 2758 #define sys_trace_sys_init_enter(entry, level) 2759 2760 /** 2761 * @brief Called when exiting an init function 2762 */ 2763 #define sys_trace_sys_init_exit(entry, level, result) 2764 2765 /** @} */ /* end of subsys_tracing_apis */ 2766 2767 /** @} */ /* end of subsys_tracing */ 2768 2769 #endif 2770 #endif /* ZEPHYR_INCLUDE_TRACING_TRACING_H_ */ 2771