41 #ifndef TRCKERNELPORTFREERTOS_H 42 #define TRCKERNELPORTFREERTOS_H 49 #define USE_TRACEALYZER_RECORDER configUSE_TRACE_FACILITY 51 #if (USE_TRACEALYZER_RECORDER == 1) 54 #define TRACE_KERNEL_VERSION 0x1AA1 55 #define TRACE_TICK_RATE_HZ configTICK_RATE_HZ 56 #define TRACE_CPU_CLOCK_HZ configCPU_CLOCK_HZ 58 #if (SELECTED_PORT == PORT_ARM_CortexM) 62 #define TRACE_SR_ALLOC_CRITICAL_SECTION() int __irq_status; 63 #define TRACE_ENTER_CRITICAL_SECTION() {__irq_status = __get_PRIMASK(); __set_PRIMASK(1);} 64 #define TRACE_EXIT_CRITICAL_SECTION() {__set_PRIMASK(__irq_status);} 68 #if (SELECTED_PORT == PORT_ARM_CORTEX_M0) 70 #define TRACE_SR_ALLOC_CRITICAL_SECTION() int __irq_status; 71 #define TRACE_ENTER_CRITICAL_SECTION() {__irq_status = __get_PRIMASK(); __set_PRIMASK(1);} 72 #define TRACE_EXIT_CRITICAL_SECTION() {__set_PRIMASK(__irq_status);} 76 #if ((SELECTED_PORT == PORT_ARM_CORTEX_A9) || (SELECTED_PORT == PORT_Renesas_RX600) || (SELECTED_PORT == PORT_MICROCHIP_PIC32MX) || (SELECTED_PORT == PORT_MICROCHIP_PIC32MZ)) 77 #define TRACE_SR_ALLOC_CRITICAL_SECTION() int __irq_status; 78 #define TRACE_ENTER_CRITICAL_SECTION() {__irq_status = portSET_INTERRUPT_MASK_FROM_ISR();} 79 #define TRACE_EXIT_CRITICAL_SECTION() {portCLEAR_INTERRUPT_MASK_FROM_ISR(__irq_status);} 82 #if (SELECTED_PORT == PORT_Win32) 84 #define TRACE_SR_ALLOC_CRITICAL_SECTION() 85 #define TRACE_ENTER_CRITICAL_SECTION() portENTER_CRITICAL() 86 #define TRACE_EXIT_CRITICAL_SECTION() portEXIT_CRITICAL() 89 #ifndef TRACE_ENTER_CRITICAL_SECTION 90 #error "This port has no valid definition for critical sections! See http://percepio.com/2014/10/27/how-to-define-critical-sections-for-the-recorder/" 93 #if (SELECTED_PORT == PORT_ARM_CortexM) 94 #define trcCRITICAL_SECTION_BEGIN_ON_CORTEX_M_ONLY trcCRITICAL_SECTION_BEGIN 95 #define trcCRITICAL_SECTION_END_ON_CORTEX_M_ONLY trcCRITICAL_SECTION_END 97 #define trcCRITICAL_SECTION_BEGIN_ON_CORTEX_M_ONLY() recorder_busy++; 98 #define trcCRITICAL_SECTION_END_ON_CORTEX_M_ONLY() recorder_busy--; 104 #define TRACE_NCLASSES 7 105 #define TRACE_CLASS_QUEUE ((traceObjectClass)0) 106 #define TRACE_CLASS_SEMAPHORE ((traceObjectClass)1) 107 #define TRACE_CLASS_MUTEX ((traceObjectClass)2) 108 #define TRACE_CLASS_TASK ((traceObjectClass)3) 109 #define TRACE_CLASS_ISR ((traceObjectClass)4) 110 #define TRACE_CLASS_TIMER ((traceObjectClass)5) 111 #define TRACE_CLASS_EVENTGROUP ((traceObjectClass)6) 113 #define TRACE_KERNEL_OBJECT_COUNT (NQueue + NSemaphore + NMutex + NTask + NISR + NTimer + NEventGroup) 118 #define PropertyTableSizeQueue (NameLenQueue + 1) 121 #define PropertyTableSizeSemaphore (NameLenSemaphore + 1) 124 #define PropertyTableSizeMutex (NameLenMutex + 1) 130 #define PropertyTableSizeTask (NameLenTask + 4) 134 #define PropertyTableSizeISR (NameLenISR + 2) 137 #define PropertyTableSizeTimer (NameLenTimer + 1) 140 #define PropertyTableSizeEventGroup (NameLenEventGroup + 4) 144 #define StartIndexQueue 0 145 #define StartIndexSemaphore StartIndexQueue + NQueue * PropertyTableSizeQueue 146 #define StartIndexMutex StartIndexSemaphore + NSemaphore * PropertyTableSizeSemaphore 147 #define StartIndexTask StartIndexMutex + NMutex * PropertyTableSizeMutex 148 #define StartIndexISR StartIndexTask + NTask * PropertyTableSizeTask 149 #define StartIndexTimer StartIndexISR + NISR * PropertyTableSizeISR 150 #define StartIndexEventGroup StartIndexTimer + NTimer * PropertyTableSizeTimer 153 #define TRACE_OBJECT_TABLE_SIZE StartIndexEventGroup + NEventGroup * PropertyTableSizeEventGroup 155 #define FREERTOS_VERSION_NOT_SET 0 156 #define FREERTOS_VERSION_7_3_OR_7_4 1 157 #define FREERTOS_VERSION_7_5_OR_7_6 2 158 #define FREERTOS_VERSION_8_0_OR_LATER 3 169 #if (INCLUDE_NEW_TIME_EVENTS == 1 && configUSE_TICKLESS_IDLE != 0) 170 #error "NewTime events can not be used in combination with tickless idle!" 174 void vTraceInitObjectPropertyTable(
void);
177 void vTraceInitObjectHandleStack(
void);
195 #define NULL_EVENT (0x00) 202 #define EVENTGROUP_DIV (NULL_EVENT + 1) 203 #define DIV_XPS (EVENTGROUP_DIV + 0) 204 #define DIV_TASK_READY (EVENTGROUP_DIV + 1) 205 #define DIV_NEW_TIME (EVENTGROUP_DIV + 2) 213 #define EVENTGROUP_TS (EVENTGROUP_DIV + 3) 214 #define TS_ISR_BEGIN (EVENTGROUP_TS + 0) 215 #define TS_ISR_RESUME (EVENTGROUP_TS + 1) 216 #define TS_TASK_BEGIN (EVENTGROUP_TS + 2) 217 #define TS_TASK_RESUME (EVENTGROUP_TS + 3) 228 #define EVENTGROUP_OBJCLOSE_NAME (EVENTGROUP_TS + 4) 245 #define EVENTGROUP_OBJCLOSE_PROP (EVENTGROUP_OBJCLOSE_NAME + 8) 254 #define EVENTGROUP_CREATE_OBJ_SUCCESS (EVENTGROUP_OBJCLOSE_PROP + 8) 264 #define EVENTGROUP_SEND_SUCCESS (EVENTGROUP_CREATE_OBJ_SUCCESS + 8) 274 #define EVENTGROUP_RECEIVE_SUCCESS (EVENTGROUP_SEND_SUCCESS + 8) 277 #define EVENTGROUP_SEND_FROM_ISR_SUCCESS \ 278 (EVENTGROUP_RECEIVE_SUCCESS + 8) 281 #define EVENTGROUP_RECEIVE_FROM_ISR_SUCCESS \ 282 (EVENTGROUP_SEND_FROM_ISR_SUCCESS + 8) 285 #define EVENTGROUP_KSE_FAILED \ 286 (EVENTGROUP_RECEIVE_FROM_ISR_SUCCESS + 8) 289 #define EVENTGROUP_CREATE_OBJ_FAILED (EVENTGROUP_KSE_FAILED) 292 #define EVENTGROUP_SEND_FAILED (EVENTGROUP_CREATE_OBJ_FAILED + 8) 295 #define EVENTGROUP_RECEIVE_FAILED (EVENTGROUP_SEND_FAILED + 8) 298 #define EVENTGROUP_SEND_FROM_ISR_FAILED (EVENTGROUP_RECEIVE_FAILED + 8) 301 #define EVENTGROUP_RECEIVE_FROM_ISR_FAILED \ 302 (EVENTGROUP_SEND_FROM_ISR_FAILED + 8) 305 #define EVENTGROUP_RECEIVE_BLOCK \ 306 (EVENTGROUP_RECEIVE_FROM_ISR_FAILED + 8) 309 #define EVENTGROUP_SEND_BLOCK (EVENTGROUP_RECEIVE_BLOCK + 8) 312 #define EVENTGROUP_PEEK_SUCCESS (EVENTGROUP_SEND_BLOCK + 8) 315 #define EVENTGROUP_DELETE_OBJ_SUCCESS (EVENTGROUP_PEEK_SUCCESS + 8) 318 #define EVENTGROUP_OTHERS (EVENTGROUP_DELETE_OBJ_SUCCESS + 8) 319 #define TASK_DELAY_UNTIL (EVENTGROUP_OTHERS + 0) 320 #define TASK_DELAY (EVENTGROUP_OTHERS + 1) 321 #define TASK_SUSPEND (EVENTGROUP_OTHERS + 2) 322 #define TASK_RESUME (EVENTGROUP_OTHERS + 3) 323 #define TASK_RESUME_FROM_ISR (EVENTGROUP_OTHERS + 4) 324 #define TASK_PRIORITY_SET (EVENTGROUP_OTHERS + 5) 325 #define TASK_PRIORITY_INHERIT (EVENTGROUP_OTHERS + 6) 326 #define TASK_PRIORITY_DISINHERIT (EVENTGROUP_OTHERS + 7) 328 #define EVENTGROUP_MISC_PLACEHOLDER (EVENTGROUP_OTHERS + 8) 329 #define PEND_FUNC_CALL (EVENTGROUP_MISC_PLACEHOLDER+0) 330 #define PEND_FUNC_CALL_FROM_ISR (EVENTGROUP_MISC_PLACEHOLDER+1) 331 #define PEND_FUNC_CALL_FAILED (EVENTGROUP_MISC_PLACEHOLDER+2) 332 #define PEND_FUNC_CALL_FROM_ISR_FAILED (EVENTGROUP_MISC_PLACEHOLDER+3) 333 #define MEM_MALLOC_SIZE (EVENTGROUP_MISC_PLACEHOLDER+4) 334 #define MEM_MALLOC_ADDR (EVENTGROUP_MISC_PLACEHOLDER+5) 335 #define MEM_FREE_SIZE (EVENTGROUP_MISC_PLACEHOLDER+6) 336 #define MEM_FREE_ADDR (EVENTGROUP_MISC_PLACEHOLDER+7) 339 #define EVENTGROUP_USEREVENT (EVENTGROUP_MISC_PLACEHOLDER + 8) 340 #define USER_EVENT (EVENTGROUP_USEREVENT + 0) 343 #define USER_EVENT_LAST (EVENTGROUP_USEREVENT + 15) 366 #define EVENTGROUP_SYS (EVENTGROUP_USEREVENT + 16) 367 #define XTS8 (EVENTGROUP_SYS + 0) 368 #define XTS16 (EVENTGROUP_SYS + 1) 369 #define EVENT_BEING_WRITTEN (EVENTGROUP_SYS + 2) 370 #define RESERVED_DUMMY_CODE (EVENTGROUP_SYS + 3) 371 #define LOW_POWER_BEGIN (EVENTGROUP_SYS + 4) 372 #define LOW_POWER_END (EVENTGROUP_SYS + 5) 373 #define XID (EVENTGROUP_SYS + 6) 374 #define XTS16L (EVENTGROUP_SYS + 7) 376 #define EVENTGROUP_TIMER (EVENTGROUP_SYS + 8) 377 #define TIMER_CREATE (EVENTGROUP_TIMER + 0) 378 #define TIMER_START (EVENTGROUP_TIMER + 1) 379 #define TIMER_RST (EVENTGROUP_TIMER + 2) 380 #define TIMER_STOP (EVENTGROUP_TIMER + 3) 381 #define TIMER_CHANGE_PERIOD (EVENTGROUP_TIMER + 4) 382 #define TIMER_DELETE (EVENTGROUP_TIMER + 5) 383 #define TIMER_START_FROM_ISR (EVENTGROUP_TIMER + 6) 384 #define TIMER_RESET_FROM_ISR (EVENTGROUP_TIMER + 7) 385 #define TIMER_STOP_FROM_ISR (EVENTGROUP_TIMER + 8) 387 #define TIMER_CREATE_FAILED (EVENTGROUP_TIMER + 9) 388 #define TIMER_START_FAILED (EVENTGROUP_TIMER + 10) 389 #define TIMER_RESET_FAILED (EVENTGROUP_TIMER + 11) 390 #define TIMER_STOP_FAILED (EVENTGROUP_TIMER + 12) 391 #define TIMER_CHANGE_PERIOD_FAILED (EVENTGROUP_TIMER + 13) 392 #define TIMER_DELETE_FAILED (EVENTGROUP_TIMER + 14) 393 #define TIMER_START_FROM_ISR_FAILED (EVENTGROUP_TIMER + 15) 394 #define TIMER_RESET_FROM_ISR_FAILED (EVENTGROUP_TIMER + 16) 395 #define TIMER_STOP_FROM_ISR_FAILED (EVENTGROUP_TIMER + 17) 397 #define EVENTGROUP_EG (EVENTGROUP_TIMER + 18) 398 #define EVENT_GROUP_CREATE (EVENTGROUP_EG + 0) 399 #define EVENT_GROUP_CREATE_FAILED (EVENTGROUP_EG + 1) 400 #define EVENT_GROUP_SYNC_BLOCK (EVENTGROUP_EG + 2) 401 #define EVENT_GROUP_SYNC_END (EVENTGROUP_EG + 3) 402 #define EVENT_GROUP_WAIT_BITS_BLOCK (EVENTGROUP_EG + 4) 403 #define EVENT_GROUP_WAIT_BITS_END (EVENTGROUP_EG + 5) 404 #define EVENT_GROUP_CLEAR_BITS (EVENTGROUP_EG + 6) 405 #define EVENT_GROUP_CLEAR_BITS_FROM_ISR (EVENTGROUP_EG + 7) 406 #define EVENT_GROUP_SET_BITS (EVENTGROUP_EG + 8) 407 #define EVENT_GROUP_DELETE (EVENTGROUP_EG + 9) 408 #define EVENT_GROUP_SYNC_END_FAILED (EVENTGROUP_EG + 10) 409 #define EVENT_GROUP_WAIT_BITS_END_FAILED (EVENTGROUP_EG + 11) 410 #define EVENT_GROUP_SET_BITS_FROM_ISR (EVENTGROUP_EG + 12) 411 #define EVENT_GROUP_SET_BITS_FROM_ISR_FAILED (EVENTGROUP_EG + 13) 413 #define TASK_INSTANCE_FINISHED_NEXT_KSE (EVENTGROUP_EG + 14) 414 #define TASK_INSTANCE_FINISHED_DIRECT (EVENTGROUP_EG + 15) 416 #define TRACE_TASK_NOTIFY_GROUP (EVENTGROUP_EG + 16) 417 #define TRACE_TASK_NOTIFY (TRACE_TASK_NOTIFY_GROUP + 0) 418 #define TRACE_TASK_NOTIFY_TAKE (TRACE_TASK_NOTIFY_GROUP + 1) 419 #define TRACE_TASK_NOTIFY_TAKE_BLOCK (TRACE_TASK_NOTIFY_GROUP + 2) 420 #define TRACE_TASK_NOTIFY_TAKE_FAILED (TRACE_TASK_NOTIFY_GROUP + 3) 421 #define TRACE_TASK_NOTIFY_WAIT (TRACE_TASK_NOTIFY_GROUP + 4) 422 #define TRACE_TASK_NOTIFY_WAIT_BLOCK (TRACE_TASK_NOTIFY_GROUP + 5) 423 #define TRACE_TASK_NOTIFY_WAIT_FAILED (TRACE_TASK_NOTIFY_GROUP + 6) 424 #define TRACE_TASK_NOTIFY_FROM_ISR (TRACE_TASK_NOTIFY_GROUP + 7) 425 #define TRACE_TASK_NOTIFY_GIVE_FROM_ISR (TRACE_TASK_NOTIFY_GROUP + 8) 451 unsigned char prvTraceGetObjectType(
void* handle);
453 unsigned char prvTraceIsSchedulerActive(
void);
454 unsigned char prvTraceIsSchedulerSuspended(
void);
455 unsigned char prvTraceIsSchedulerStarted(
void);
456 void* prvTraceGetCurrentTaskHandle(
void);
458 #if (configUSE_TIMERS == 1) 459 #undef INCLUDE_xTimerGetTimerDaemonTaskHandle 460 #define INCLUDE_xTimerGetTimerDaemonTaskHandle 1 467 #define TRACE_MALLOC(size) pvPortMalloc(size) 468 #define TRACE_IS_SCHEDULER_ACTIVE() prvTraceIsSchedulerActive() 469 #define TRACE_IS_SCHEDULER_STARTED() prvTraceIsSchedulerStarted() 470 #define TRACE_IS_SCHEDULER_SUSPENDED() prvTraceIsSchedulerSuspended() 471 #define TRACE_GET_CURRENT_TASK() prvTraceGetCurrentTaskHandle() 473 #define TRACE_GET_TASK_PRIORITY(pxTCB) ((uint8_t)pxTCB->uxPriority) 474 #define TRACE_GET_TASK_NAME(pxTCB) ((char*)pxTCB->pcTaskName) 475 #define TRACE_GET_TASK_NUMBER(pxTCB) (prvTraceGetTaskNumber(pxTCB)) 476 #define TRACE_SET_TASK_NUMBER(pxTCB) pxTCB->uxTaskNumber = xTraceGetObjectHandle(TRACE_CLASS_TASK); 478 #define TRACE_GET_CLASS_TRACE_CLASS(CLASS, kernelClass) TraceObjectClassTable[kernelClass] 479 #define TRACE_GET_OBJECT_TRACE_CLASS(CLASS, pxObject) TRACE_GET_CLASS_TRACE_CLASS(CLASS, prvTraceGetObjectType(pxObject)) 481 #define TRACE_GET_TIMER_NUMBER(tmr) ( ( objectHandleType ) ((Timer_t*)tmr)->uxTimerNumber ) 482 #define TRACE_SET_TIMER_NUMBER(tmr) ((Timer_t*)tmr)->uxTimerNumber = xTraceGetObjectHandle(TRACE_CLASS_TIMER); 483 #define TRACE_GET_TIMER_NAME(pxTimer) pxTimer->pcTimerName 484 #define TRACE_GET_TIMER_PERIOD(pxTimer) pxTimer->xTimerPeriodInTicks 486 #define TRACE_GET_EVENTGROUP_NUMBER(eg) ( ( objectHandleType ) uxEventGroupGetNumber(eg) ) 487 #define TRACE_SET_EVENTGROUP_NUMBER(eg) ((EventGroup_t*)eg)->uxEventGroupNumber = xTraceGetObjectHandle(TRACE_CLASS_EVENTGROUP); 489 #define TRACE_GET_OBJECT_NUMBER(CLASS, pxObject) (prvTraceGetObjectNumber(pxObject)) 491 #if (FREERTOS_VERSION < FREERTOS_VERSION_8_0_OR_LATER) 492 #define TRACE_SET_OBJECT_NUMBER(CLASS, pxObject) pxObject->ucQueueNumber = xTraceGetObjectHandle(TRACE_GET_OBJECT_TRACE_CLASS(CLASS, pxObject)); 494 #define TRACE_SET_OBJECT_NUMBER(CLASS, pxObject) pxObject->uxQueueNumber = xTraceGetObjectHandle(TRACE_GET_OBJECT_TRACE_CLASS(CLASS, pxObject)); 497 #define TRACE_GET_CLASS_EVENT_CODE(SERVICE, RESULT, CLASS, kernelClass) (uint8_t)(EVENTGROUP_##SERVICE##_##RESULT + TRACE_GET_CLASS_TRACE_CLASS(CLASS, kernelClass)) 498 #define TRACE_GET_OBJECT_EVENT_CODE(SERVICE, RESULT, CLASS, pxObject) (uint8_t)(EVENTGROUP_##SERVICE##_##RESULT + TRACE_GET_OBJECT_TRACE_CLASS(CLASS, pxObject)) 499 #define TRACE_GET_TASK_EVENT_CODE(SERVICE, RESULT, CLASS, pxTCB) (uint8_t)(EVENTGROUP_##SERVICE##_##RESULT + TRACE_CLASS_TASK) 505 #if (configUSE_TICKLESS_IDLE != 0) 507 #undef traceLOW_POWER_IDLE_BEGIN 508 #define traceLOW_POWER_IDLE_BEGIN() \ 510 extern uint32_t trace_disable_timestamp; \ 511 vTraceStoreLowPower(0); \ 512 trace_disable_timestamp = 1; \ 515 #undef traceLOW_POWER_IDLE_END 516 #define traceLOW_POWER_IDLE_END() \ 518 extern uint32_t trace_disable_timestamp; \ 519 trace_disable_timestamp = 0; \ 520 vTraceStoreLowPower(1); \ 526 #undef traceINCREASE_TICK_COUNT 528 #define traceINCREASE_TICK_COUNT( xCount ) { DWT_CYCLES_ADDED += (xCount * (TRACE_CPU_CLOCK_HZ / TRACE_TICK_RATE_HZ)); } 531 #undef traceMOVED_TASK_TO_READY_STATE 532 #define traceMOVED_TASK_TO_READY_STATE( pxTCB ) \ 533 trcKERNEL_HOOKS_MOVED_TASK_TO_READY_STATE(pxTCB); 536 #undef traceTASK_INCREMENT_TICK 538 #if (FREERTOS_VERSION == FREERTOS_VERSION_7_3_OR_7_4) 540 #define traceTASK_INCREMENT_TICK( xTickCount ) \ 541 if (uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdTRUE || uxMissedTicks == 0) { trcKERNEL_HOOKS_INCREMENT_TICK(); } \ 542 if (uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE) { trcKERNEL_HOOKS_NEW_TIME(DIV_NEW_TIME, xTickCount + 1); } 546 #define traceTASK_INCREMENT_TICK( xTickCount ) \ 547 if (uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdTRUE || uxPendedTicks == 0) { trcKERNEL_HOOKS_INCREMENT_TICK(); } \ 548 if (uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE) { trcKERNEL_HOOKS_NEW_TIME(DIV_NEW_TIME, xTickCount + 1); } 553 #undef traceTASK_SWITCHED_IN 554 #define traceTASK_SWITCHED_IN() \ 555 trcKERNEL_HOOKS_TASK_SWITCH(TRACE_GET_CURRENT_TASK()); 558 #undef traceTASK_SUSPEND 559 #define traceTASK_SUSPEND( pxTaskToSuspend ) \ 560 trcKERNEL_HOOKS_TASK_SUSPEND(TASK_SUSPEND, pxTaskToSuspend); 563 #undef traceTASK_DELAY_SUSPEND 564 #define traceTASK_DELAY_SUSPEND( pxTaskToSuspend ) \ 565 trcKERNEL_HOOKS_TASK_SUSPEND(TASK_SUSPEND, pxTaskToSuspend); \ 566 trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED(); 569 #undef traceTASK_DELAY 570 #define traceTASK_DELAY() \ 571 trcKERNEL_HOOKS_TASK_DELAY(TASK_DELAY, pxCurrentTCB, xTicksToDelay); \ 572 trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED(); 575 #undef traceTASK_DELAY_UNTIL 576 #define traceTASK_DELAY_UNTIL( xTickTimeToWake ) \ 577 trcKERNEL_HOOKS_TASK_DELAY(TASK_DELAY_UNTIL, pxCurrentTCB, ( xTickTimeToWake)); \ 578 trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED(); 580 #if (INCLUDE_OBJECT_DELETE == 1) 582 #undef traceTASK_DELETE 583 #define traceTASK_DELETE( pxTaskToDelete ) \ 584 { TRACE_SR_ALLOC_CRITICAL_SECTION(); \ 585 TRACE_ENTER_CRITICAL_SECTION(); \ 586 trcKERNEL_HOOKS_TASK_DELETE(DELETE_OBJ, pxTaskToDelete); \ 587 TRACE_EXIT_CRITICAL_SECTION(); } 590 #if (INCLUDE_OBJECT_DELETE == 1) 592 #undef traceQUEUE_DELETE 593 #define traceQUEUE_DELETE( pxQueue ) \ 594 { TRACE_SR_ALLOC_CRITICAL_SECTION(); \ 595 TRACE_ENTER_CRITICAL_SECTION(); \ 596 trcKERNEL_HOOKS_OBJECT_DELETE(DELETE_OBJ, UNUSED, pxQueue); \ 597 TRACE_EXIT_CRITICAL_SECTION(); } 601 #undef traceTASK_CREATE 602 #define traceTASK_CREATE(pxNewTCB) \ 603 if (pxNewTCB != NULL) \ 605 trcKERNEL_HOOKS_TASK_CREATE(CREATE_OBJ, UNUSED, pxNewTCB); \ 609 #undef traceTASK_CREATE_FAILED 610 #define traceTASK_CREATE_FAILED() \ 611 trcKERNEL_HOOKS_TASK_CREATE_FAILED(CREATE_OBJ, UNUSED); 614 #undef traceQUEUE_CREATE 615 #define traceQUEUE_CREATE( pxNewQueue )\ 616 trcKERNEL_HOOKS_OBJECT_CREATE(CREATE_OBJ, UNUSED, pxNewQueue); 619 #undef traceQUEUE_CREATE_FAILED 620 #define traceQUEUE_CREATE_FAILED( queueType ) \ 621 trcKERNEL_HOOKS_OBJECT_CREATE_FAILED(CREATE_OBJ, UNUSED, queueType); 624 #undef traceCREATE_MUTEX 625 #define traceCREATE_MUTEX( pxNewQueue ) \ 626 trcKERNEL_HOOKS_OBJECT_CREATE(CREATE_OBJ, UNUSED, pxNewQueue); 629 #undef traceCREATE_MUTEX_FAILED 630 #define traceCREATE_MUTEX_FAILED() \ 631 trcKERNEL_HOOKS_OBJECT_CREATE_FAILED(CREATE_OBJ, UNUSED, queueQUEUE_TYPE_MUTEX); 634 #undef traceGIVE_MUTEX_RECURSIVE_FAILED 635 #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex ) \ 636 trcKERNEL_HOOKS_KERNEL_SERVICE(SEND, FAILED, UNUSED, pxMutex); 639 #undef traceQUEUE_SEND 640 #define traceQUEUE_SEND( pxQueue ) \ 641 trcKERNEL_HOOKS_KERNEL_SERVICE(SEND, SUCCESS, UNUSED, pxQueue); \ 642 trcKERNEL_HOOKS_SET_OBJECT_STATE(UNUSED, pxQueue, TRACE_GET_OBJECT_TRACE_CLASS(UNUSED, pxQueue) == TRACE_CLASS_MUTEX ? (uint8_t)0 : (uint8_t)(pxQueue->uxMessagesWaiting + 1)); 645 #undef traceQUEUE_SEND_FAILED 646 #define traceQUEUE_SEND_FAILED( pxQueue ) \ 647 trcKERNEL_HOOKS_KERNEL_SERVICE(SEND, FAILED, UNUSED, pxQueue); 650 #undef traceBLOCKING_ON_QUEUE_SEND 651 #define traceBLOCKING_ON_QUEUE_SEND( pxQueue ) \ 652 trcKERNEL_HOOKS_KERNEL_SERVICE(SEND, BLOCK, UNUSED, pxQueue); 655 #undef traceQUEUE_RECEIVE 656 #define traceQUEUE_RECEIVE( pxQueue ) \ 657 trcKERNEL_HOOKS_KERNEL_SERVICE(RECEIVE, SUCCESS, UNUSED, pxQueue); \ 658 trcKERNEL_HOOKS_SET_OBJECT_STATE(UNUSED, pxQueue, TRACE_GET_OBJECT_TRACE_CLASS(UNUSED, pxQueue) == TRACE_CLASS_MUTEX ? TRACE_GET_TASK_NUMBER(TRACE_GET_CURRENT_TASK()) : (uint8_t)(pxQueue->uxMessagesWaiting - 1)); 661 #undef traceQUEUE_RECEIVE_FAILED 662 #define traceQUEUE_RECEIVE_FAILED( pxQueue ) \ 663 trcKERNEL_HOOKS_KERNEL_SERVICE(RECEIVE, FAILED, UNUSED, pxQueue); 666 #undef traceBLOCKING_ON_QUEUE_RECEIVE 667 #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ) \ 668 trcKERNEL_HOOKS_KERNEL_SERVICE(RECEIVE, BLOCK, UNUSED, pxQueue); \ 669 if (TRACE_GET_OBJECT_TRACE_CLASS(UNUSED, pxQueue) != TRACE_CLASS_MUTEX) \ 670 {trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED();} 673 #undef traceQUEUE_PEEK 674 #define traceQUEUE_PEEK( pxQueue ) \ 675 trcKERNEL_HOOKS_KERNEL_SERVICE(PEEK, SUCCESS, UNUSED, pxQueue); 678 #undef traceQUEUE_SEND_FROM_ISR 679 #define traceQUEUE_SEND_FROM_ISR( pxQueue ) \ 680 trcKERNEL_HOOKS_KERNEL_SERVICE(SEND_FROM_ISR, SUCCESS, UNUSED, pxQueue); \ 681 trcKERNEL_HOOKS_SET_OBJECT_STATE(UNUSED, pxQueue, (uint8_t)(pxQueue->uxMessagesWaiting + 1)); 684 #undef traceQUEUE_SEND_FROM_ISR_FAILED 685 #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ) \ 686 trcKERNEL_HOOKS_KERNEL_SERVICE(SEND_FROM_ISR, FAILED, UNUSED, pxQueue); 689 #undef traceQUEUE_RECEIVE_FROM_ISR 690 #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue ) \ 691 trcKERNEL_HOOKS_KERNEL_SERVICE(RECEIVE_FROM_ISR, SUCCESS, UNUSED, pxQueue); \ 692 trcKERNEL_HOOKS_SET_OBJECT_STATE(UNUSED, pxQueue, (uint8_t)(pxQueue->uxMessagesWaiting - 1)); 695 #undef traceQUEUE_RECEIVE_FROM_ISR_FAILED 696 #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ) \ 697 trcKERNEL_HOOKS_KERNEL_SERVICE(RECEIVE_FROM_ISR, FAILED, UNUSED, pxQueue); 700 #undef traceTASK_PRIORITY_SET 701 #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority ) \ 702 trcKERNEL_HOOKS_TASK_PRIORITY_CHANGE(TASK_PRIORITY_SET, pxTask, uxNewPriority); 705 #undef traceTASK_PRIORITY_INHERIT 706 #define traceTASK_PRIORITY_INHERIT( pxTask, uxNewPriority ) \ 707 trcKERNEL_HOOKS_TASK_PRIORITY_CHANGE(TASK_PRIORITY_INHERIT, pxTask, uxNewPriority); 710 #undef traceTASK_PRIORITY_DISINHERIT 711 #define traceTASK_PRIORITY_DISINHERIT( pxTask, uxNewPriority ) \ 712 trcKERNEL_HOOKS_TASK_PRIORITY_CHANGE(TASK_PRIORITY_DISINHERIT, pxTask, uxNewPriority); 715 #undef traceTASK_RESUME 716 #define traceTASK_RESUME( pxTaskToResume ) \ 717 trcKERNEL_HOOKS_TASK_RESUME(TASK_RESUME, pxTaskToResume); 720 #undef traceTASK_RESUME_FROM_ISR 721 #define traceTASK_RESUME_FROM_ISR( pxTaskToResume ) \ 722 trcKERNEL_HOOKS_TASK_RESUME(TASK_RESUME_FROM_ISR, pxTaskToResume); 725 #if (FREERTOS_VERSION >= FREERTOS_VERSION_8_0_OR_LATER) 727 #if (INCLUDE_MEMMANG_EVENTS == 1) 729 extern void vTraceStoreMemMangEvent(uint32_t ecode, uint32_t address, int32_t
size);
732 #define traceMALLOC( pvAddress, uiSize ) {if (pvAddress != 0) vTraceStoreMemMangEvent(MEM_MALLOC_SIZE, ( uint32_t ) pvAddress, (int32_t)uiSize); } 735 #define traceFREE( pvAddress, uiSize ) {vTraceStoreMemMangEvent(MEM_FREE_SIZE, ( uint32_t ) pvAddress, (int32_t)(-uiSize)); } 740 #undef traceTIMER_CREATE 741 #define traceTIMER_CREATE(tmr) \ 742 trcKERNEL_HOOKS_TIMER_CREATE(TIMER_CREATE, tmr); 744 #undef traceTIMER_CREATE_FAILED 745 #define traceTIMER_CREATE_FAILED() \ 746 trcKERNEL_HOOKS_TIMER_EVENT(TIMER_CREATE_FAILED, 0); 749 #undef traceTIMER_COMMAND_SEND 750 #define traceTIMER_COMMAND_SEND(tmr, xCommandID, xOptionalValue, xReturn) \ 751 if (xCommandID > tmrCOMMAND_START_DONT_TRACE){\ 752 if (xCommandID == tmrCOMMAND_CHANGE_PERIOD) vTraceStoreKernelCallWithParam((xReturn == pdPASS) ? TIMER_CHANGE_PERIOD : TIMER_CHANGE_PERIOD_FAILED, TRACE_CLASS_TIMER, TRACE_GET_TIMER_NUMBER(tmr), xOptionalValue);\ 753 else if ((xCommandID == tmrCOMMAND_DELETE) && (xReturn == pdPASS)){ trcKERNEL_HOOKS_TIMER_DELETE(TIMER_DELETE, tmr); } \ 754 else {trcKERNEL_HOOKS_TIMER_EVENT(EVENTGROUP_TIMER + xCommandID + ((xReturn == pdPASS)?0:(TIMER_CREATE_FAILED - TIMER_CREATE)), tmr); }\ 757 #undef tracePEND_FUNC_CALL 758 #define tracePEND_FUNC_CALL(func, arg1, arg2, ret) \ 760 vTraceStoreKernelCall(PEND_FUNC_CALL, TRACE_CLASS_TASK, uxTaskGetTaskNumber(xTimerGetTimerDaemonTaskHandle()) ); \ 762 vTraceStoreKernelCall(PEND_FUNC_CALL_FAILED, TRACE_CLASS_TASK, uxTaskGetTaskNumber(xTimerGetTimerDaemonTaskHandle()) ); 764 #undef tracePEND_FUNC_CALL_FROM_ISR 765 #define tracePEND_FUNC_CALL_FROM_ISR(func, arg1, arg2, ret) \ 766 if (! uiInEventGroupSetBitsFromISR) vTraceStoreKernelCall(PEND_FUNC_CALL_FROM_ISR, TRACE_CLASS_TASK, uxTaskGetTaskNumber(xTimerGetTimerDaemonTaskHandle()) ); \ 767 uiInEventGroupSetBitsFromISR = 0; 770 #undef traceEVENT_GROUP_CREATE 771 #define traceEVENT_GROUP_CREATE(eg) \ 772 TRACE_SET_EVENTGROUP_NUMBER(eg); \ 773 vTraceStoreKernelCall(EVENT_GROUP_CREATE, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg)); 775 #undef traceEVENT_GROUP_DELETE 776 #define traceEVENT_GROUP_DELETE(eg) \ 777 vTraceStoreKernelCall(EVENT_GROUP_DELETE, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg)); \ 778 vTraceStoreObjectNameOnCloseEvent(TRACE_GET_EVENTGROUP_NUMBER(eg), TRACE_CLASS_EVENTGROUP); \ 779 vTraceStoreObjectPropertiesOnCloseEvent(TRACE_GET_EVENTGROUP_NUMBER(eg), TRACE_CLASS_EVENTGROUP); \ 780 vTraceFreeObjectHandle(TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg)); 782 #undef traceEVENT_GROUP_CREATE_FAILED 783 #define traceEVENT_GROUP_CREATE_FAILED() \ 784 vTraceStoreKernelCall(EVENT_GROUP_CREATE_FAILED, TRACE_CLASS_EVENTGROUP, 0); 786 #undef traceEVENT_GROUP_SYNC_BLOCK 787 #define traceEVENT_GROUP_SYNC_BLOCK(eg, bitsToSet, bitsToWaitFor) \ 788 vTraceStoreKernelCallWithParam(EVENT_GROUP_SYNC_BLOCK, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToWaitFor); 790 #undef traceEVENT_GROUP_SYNC_END 791 #define traceEVENT_GROUP_SYNC_END(eg, bitsToSet, bitsToWaitFor, wasTimeout) \ 792 if (wasTimeout){ vTraceStoreKernelCallWithParam(EVENT_GROUP_SYNC_END_FAILED, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToWaitFor);} \ 793 else{ vTraceStoreKernelCallWithParam(EVENT_GROUP_SYNC_END, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToWaitFor); } 795 #undef traceEVENT_GROUP_WAIT_BITS_BLOCK 796 #define traceEVENT_GROUP_WAIT_BITS_BLOCK(eg, bitsToWaitFor) \ 797 vTraceStoreKernelCallWithParam(EVENT_GROUP_WAIT_BITS_BLOCK, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToWaitFor); \ 798 trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED(); 800 #undef traceEVENT_GROUP_WAIT_BITS_END 801 #define traceEVENT_GROUP_WAIT_BITS_END(eg, bitsToWaitFor, wasTimeout) \ 802 if (wasTimeout){ vTraceStoreKernelCallWithParam(EVENT_GROUP_WAIT_BITS_END_FAILED, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToWaitFor); } \ 803 else{ vTraceStoreKernelCallWithParam(EVENT_GROUP_WAIT_BITS_END, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToWaitFor); } 805 #undef traceEVENT_GROUP_CLEAR_BITS 806 #define traceEVENT_GROUP_CLEAR_BITS(eg, bitsToClear) \ 807 if (bitsToClear) vTraceStoreKernelCallWithParam(EVENT_GROUP_CLEAR_BITS, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToClear); 809 #undef traceEVENT_GROUP_CLEAR_BITS_FROM_ISR 810 #define traceEVENT_GROUP_CLEAR_BITS_FROM_ISR(eg, bitsToClear) \ 811 if (bitsToClear) vTraceStoreKernelCallWithParam(EVENT_GROUP_CLEAR_BITS_FROM_ISR, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToClear); 813 #undef traceEVENT_GROUP_SET_BITS 814 #define traceEVENT_GROUP_SET_BITS(eg, bitsToSet) \ 815 vTraceStoreKernelCallWithParam(EVENT_GROUP_SET_BITS, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToSet); 817 #undef traceEVENT_GROUP_SET_BITS_FROM_ISR 818 #define traceEVENT_GROUP_SET_BITS_FROM_ISR(eg, bitsToSet) \ 819 vTraceStoreKernelCallWithParam(EVENT_GROUP_SET_BITS_FROM_ISR, TRACE_CLASS_EVENTGROUP, TRACE_GET_EVENTGROUP_NUMBER(eg), bitsToSet); \ 820 uiInEventGroupSetBitsFromISR = 1; 822 #undef traceTASK_NOTIFY_TAKE 823 #define traceTASK_NOTIFY_TAKE() \ 824 if (pxCurrentTCB->ucNotifyState == taskNOTIFICATION_RECEIVED) \ 825 vTraceStoreKernelCallWithParam(TRACE_TASK_NOTIFY_TAKE, TRACE_CLASS_TASK, uxTaskGetTaskNumber(pxCurrentTCB), xTicksToWait); \ 827 vTraceStoreKernelCallWithParam(TRACE_TASK_NOTIFY_TAKE_FAILED, TRACE_CLASS_TASK, uxTaskGetTaskNumber(pxCurrentTCB), xTicksToWait); 829 #undef traceTASK_NOTIFY_TAKE_BLOCK 830 #define traceTASK_NOTIFY_TAKE_BLOCK() \ 831 vTraceStoreKernelCallWithParam(TRACE_TASK_NOTIFY_TAKE_BLOCK, TRACE_CLASS_TASK, uxTaskGetTaskNumber(pxCurrentTCB), xTicksToWait); \ 832 trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED(); 834 #undef traceTASK_NOTIFY_WAIT 835 #define traceTASK_NOTIFY_WAIT() \ 836 if (pxCurrentTCB->ucNotifyState == taskNOTIFICATION_RECEIVED) \ 837 vTraceStoreKernelCallWithParam(TRACE_TASK_NOTIFY_WAIT, TRACE_CLASS_TASK, uxTaskGetTaskNumber(pxCurrentTCB), xTicksToWait); \ 839 vTraceStoreKernelCallWithParam(TRACE_TASK_NOTIFY_WAIT_FAILED, TRACE_CLASS_TASK, uxTaskGetTaskNumber(pxCurrentTCB), xTicksToWait); 841 #undef traceTASK_NOTIFY_WAIT_BLOCK 842 #define traceTASK_NOTIFY_WAIT_BLOCK() \ 843 vTraceStoreKernelCallWithParam(TRACE_TASK_NOTIFY_WAIT_BLOCK, TRACE_CLASS_TASK, uxTaskGetTaskNumber(pxCurrentTCB), xTicksToWait); \ 844 trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED(); 846 #undef traceTASK_NOTIFY 847 #define traceTASK_NOTIFY() \ 848 vTraceStoreKernelCall(TRACE_TASK_NOTIFY, TRACE_CLASS_TASK, uxTaskGetTaskNumber(xTaskToNotify)); 850 #undef traceTASK_NOTIFY_FROM_ISR 851 #define traceTASK_NOTIFY_FROM_ISR() \ 852 vTraceStoreKernelCall(TRACE_TASK_NOTIFY_FROM_ISR, TRACE_CLASS_TASK, uxTaskGetTaskNumber(xTaskToNotify)); 854 #undef traceTASK_NOTIFY_GIVE_FROM_ISR 855 #define traceTASK_NOTIFY_GIVE_FROM_ISR() \ 856 vTraceStoreKernelCall(TRACE_TASK_NOTIFY_GIVE_FROM_ISR, TRACE_CLASS_TASK, uxTaskGetTaskNumber(xTaskToNotify)); 865 #define TRACE_SET_QUEUE_FLAG_ISEXCLUDED(queueIndex) TRACE_SET_FLAG_ISEXCLUDED(excludedObjects, queueIndex) 866 #define TRACE_CLEAR_QUEUE_FLAG_ISEXCLUDED(queueIndex) TRACE_CLEAR_FLAG_ISEXCLUDED(excludedObjects, queueIndex) 867 #define TRACE_GET_QUEUE_FLAG_ISEXCLUDED(queueIndex) TRACE_GET_FLAG_ISEXCLUDED(excludedObjects, queueIndex) 869 #define TRACE_SET_SEMAPHORE_FLAG_ISEXCLUDED(semaphoreIndex) TRACE_SET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+semaphoreIndex) 870 #define TRACE_CLEAR_SEMAPHORE_FLAG_ISEXCLUDED(semaphoreIndex) TRACE_CLEAR_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+semaphoreIndex) 871 #define TRACE_GET_SEMAPHORE_FLAG_ISEXCLUDED(semaphoreIndex) TRACE_GET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+semaphoreIndex) 873 #define TRACE_SET_MUTEX_FLAG_ISEXCLUDED(mutexIndex) TRACE_SET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+mutexIndex) 874 #define TRACE_CLEAR_MUTEX_FLAG_ISEXCLUDED(mutexIndex) TRACE_CLEAR_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+mutexIndex) 875 #define TRACE_GET_MUTEX_FLAG_ISEXCLUDED(mutexIndex) TRACE_GET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+mutexIndex) 877 #define TRACE_SET_TASK_FLAG_ISEXCLUDED(taskIndex) TRACE_SET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+taskIndex) 878 #define TRACE_CLEAR_TASK_FLAG_ISEXCLUDED(taskIndex) TRACE_CLEAR_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+taskIndex) 879 #define TRACE_GET_TASK_FLAG_ISEXCLUDED(taskIndex) TRACE_GET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+taskIndex) 881 #define TRACE_SET_TIMER_FLAG_ISEXCLUDED(timerIndex) TRACE_SET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+NTask+1+timerIndex) 882 #define TRACE_CLEAR_TIMER_FLAG_ISEXCLUDED(timerIndex) TRACE_CLEAR_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+NTask+1+timerIndex) 883 #define TRACE_GET_TIMER_FLAG_ISEXCLUDED(timerIndex) TRACE_GET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+NTask+1+timerIndex) 885 #define TRACE_SET_EVENTGROUP_FLAG_ISEXCLUDED(egIndex) TRACE_SET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+NTask+1+NTimer+1+egIndex) 886 #define TRACE_CLEAR_EVENTGROUP_FLAG_ISEXCLUDED(egIndex) TRACE_CLEAR_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+NTask+1+NTimer+1+egIndex) 887 #define TRACE_GET_EVENTGROUP_FLAG_ISEXCLUDED(egIndex) TRACE_GET_FLAG_ISEXCLUDED(excludedObjects, NQueue+1+NSemaphore+1+NMutex+1+NTask+1+NTimer+1+egIndex) 890 #define TRACE_CLEAR_OBJECT_FLAG_ISEXCLUDED(objectclass, handle) \ 891 switch (objectclass) \ 893 case TRACE_CLASS_QUEUE: \ 894 TRACE_CLEAR_QUEUE_FLAG_ISEXCLUDED(handle); \ 896 case TRACE_CLASS_SEMAPHORE: \ 897 TRACE_CLEAR_SEMAPHORE_FLAG_ISEXCLUDED(handle); \ 899 case TRACE_CLASS_MUTEX: \ 900 TRACE_CLEAR_MUTEX_FLAG_ISEXCLUDED(handle); \ 902 case TRACE_CLASS_TASK: \ 903 TRACE_CLEAR_TASK_FLAG_ISEXCLUDED(handle); \ 905 case TRACE_CLASS_TIMER: \ 906 TRACE_CLEAR_TIMER_FLAG_ISEXCLUDED(handle); \ 908 case TRACE_CLASS_EVENTGROUP: \ 909 TRACE_CLEAR_EVENTGROUP_FLAG_ISEXCLUDED(handle); \ 913 #define TRACE_SET_OBJECT_FLAG_ISEXCLUDED(objectclass, handle) \ 914 switch (objectclass) \ 916 case TRACE_CLASS_QUEUE: \ 917 TRACE_SET_QUEUE_FLAG_ISEXCLUDED(handle); \ 919 case TRACE_CLASS_SEMAPHORE: \ 920 TRACE_SET_SEMAPHORE_FLAG_ISEXCLUDED(handle); \ 922 case TRACE_CLASS_MUTEX: \ 923 TRACE_SET_MUTEX_FLAG_ISEXCLUDED(handle); \ 925 case TRACE_CLASS_TASK: \ 926 TRACE_SET_TASK_FLAG_ISEXCLUDED(handle); \ 928 case TRACE_CLASS_TIMER: \ 929 TRACE_SET_TIMER_FLAG_ISEXCLUDED(handle); \ 931 case TRACE_CLASS_EVENTGROUP: \ 932 TRACE_SET_EVENTGROUP_FLAG_ISEXCLUDED(handle); \ 937 #define vTraceExcludeTaskFromTrace(handle) \ 938 TRACE_SET_TASK_FLAG_ISEXCLUDED(TRACE_GET_TASK_NUMBER(handle)); 940 #define vTraceIncludeTaskInTrace(handle) \ 941 TRACE_CLEAR_TASK_FLAG_ISEXCLUDED(TRACE_GET_TASK_NUMBER(handle)); 945 #define vTraceExcludeQueueFromTrace(handle) \ 946 TRACE_SET_QUEUE_FLAG_ISEXCLUDED(TRACE_GET_OBJECT_NUMBER(UNUSED, handle)); 948 #define vTraceIncludeQueueInTrace(handle) \ 949 TRACE_CLEAR_QUEUE_FLAG_ISEXCLUDED(TRACE_GET_OBJECT_NUMBER(UNUSED, handle)); 953 #define vTraceExcludeSemaphoreFromTrace(handle) \ 954 TRACE_SET_SEMAPHORE_FLAG_ISEXCLUDED(TRACE_GET_OBJECT_NUMBER(UNUSED, handle)); 956 #define vTraceIncludeSemaphoreInTrace(handle) \ 957 TRACE_CLEAR_QUEUE_FLAG_ISEXCLUDED(TRACE_GET_OBJECT_NUMBER(UNUSED, handle)); 961 #define vTraceExcludeMutexFromTrace(handle) \ 962 TRACE_SET_MUTEX_FLAG_ISEXCLUDED(TRACE_GET_OBJECT_NUMBER(UNUSED, handle)); 964 #define vTraceIncludeMutexInTrace(handle) \ 965 TRACE_CLEAR_QUEUE_FLAG_ISEXCLUDED(TRACE_GET_OBJECT_NUMBER(UNUSED, handle)); 968 #define vTraceExcludeTimerFromTrace(handle) \ 969 TRACE_SET_TIMER_FLAG_ISEXCLUDED(TRACE_GET_TIMER_NUMBER(handle)); 971 #define vTraceIncludeTimerInTrace(handle) \ 972 TRACE_CLEAR_QUEUE_FLAG_ISEXCLUDED(TRACE_GET_TIMER_NUMBER(handle)); 975 #define vTraceExcludeEventGroupFromTrace(handle) \ 976 TRACE_SET_EVENTGROUP_FLAG_ISEXCLUDED(TRACE_GET_EVENTGROUP_NUMBER(handle)); 978 #define vTraceIncludeEventGroupInTrace(handle) \ 979 TRACE_CLEAR_EVENTGROUP_FLAG_ISEXCLUDED(TRACE_GET_EVENTGROUP_NUMBER(handle)); 983 #define vTraceExcludeKernelServiceDelayFromTrace() \ 984 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(TASK_DELAY); \ 985 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(TASK_DELAY_UNTIL); 987 #define vTraceIncludeKernelServiceDelayInTrace() \ 988 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(TASK_DELAY); \ 989 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(TASK_DELAY_UNTIL); 992 #define vTraceExcludeKernelServiceSendFromTrace_HELPER(class) \ 993 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_SUCCESS + class); \ 994 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_BLOCK + class); \ 995 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_FAILED + class); \ 996 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_FROM_ISR_SUCCESS + class); \ 997 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_FROM_ISR_FAILED + class); 999 #define vTraceIncludeKernelServiceSendInTrace_HELPER(class) \ 1000 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_SUCCESS + class); \ 1001 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_BLOCK + class); \ 1002 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_FAILED + class); \ 1003 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_FROM_ISR_SUCCESS + class); \ 1004 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_SEND_FROM_ISR_FAILED + class); 1006 #define vTraceExcludeKernelServiceReceiveFromTrace_HELPER(class) \ 1007 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_SUCCESS + class); \ 1008 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_BLOCK + class); \ 1009 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_FAILED + class); \ 1010 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_FROM_ISR_SUCCESS + class); \ 1011 TRACE_SET_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_FROM_ISR_FAILED + class); 1013 #define vTraceIncludeKernelServiceReceiveInTrace_HELPER(class) \ 1014 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_SUCCESS + class); \ 1015 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_BLOCK + class); \ 1016 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_FAILED + class); \ 1017 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_FROM_ISR_SUCCESS + class); \ 1018 TRACE_CLEAR_EVENT_CODE_FLAG_ISEXCLUDED(EVENTGROUP_RECEIVE_FROM_ISR_FAILED + class); 1021 #define vTraceExcludeKernelServiceQueueSendFromTrace() \ 1022 vTraceExcludeKernelServiceSendFromTrace_HELPER(TRACE_CLASS_QUEUE); 1024 #define vTraceIncludeKernelServiceQueueSendInTrace() \ 1025 vTraceIncludeKernelServiceSendInTrace_HELPER(TRACE_CLASS_QUEUE); 1027 #define vTraceExcludeKernelServiceQueueReceiveFromTrace() \ 1028 vTraceExcludeKernelServiceReceiveFromTrace_HELPER(TRACE_CLASS_QUEUE); 1030 #define vTraceIncludeKernelServiceQueueReceiveInTrace() \ 1031 vTraceIncludeKernelServiceReceiveInTrace_HELPER(TRACE_CLASS_QUEUE); 1034 #define vTraceExcludeKernelServiceSemaphoreSendFromTrace() \ 1035 vTraceExcludeKernelServiceSendFromTrace_HELPER(TRACE_CLASS_SEMAPHORE); 1037 #define vTraceIncludeKernelServicSemaphoreSendInTrace() \ 1038 vTraceIncludeKernelServiceSendInTrace_HELPER(TRACE_CLASS_SEMAPHORE); 1040 #define vTraceExcludeKernelServiceSemaphoreReceiveFromTrace() \ 1041 vTraceExcludeKernelServiceReceiveFromTrace_HELPER(TRACE_CLASS_SEMAPHORE); 1043 #define vTraceIncludeKernelServiceSemaphoreReceiveInTrace() \ 1044 vTraceIncludeKernelServiceReceiveInTrace_HELPER(TRACE_CLASS_SEMAPHORE); 1047 #define vTraceExcludeKernelServiceMutexSendFromTrace() \ 1048 vTraceExcludeKernelServiceSendFromTrace_HELPER(TRACE_CLASS_MUTEX); 1050 #define vTraceIncludeKernelServiceMutexSendInTrace() \ 1051 vTraceIncludeKernelServiceSendInTrace_HELPER(TRACE_CLASS_MUTEX); 1053 #define vTraceExcludeKernelServiceMutexReceiveFromTrace() \ 1054 vTraceExcludeKernelServiceReceiveFromTrace_HELPER(TRACE_CLASS_MUTEX); 1056 #define vTraceIncludeKernelServiceMutexReceiveInTrace() \ 1057 vTraceIncludeKernelServiceReceiveInTrace_HELPER(TRACE_CLASS_MUTEX); 1062 #define vTraceSetQueueName(object, name) \ 1063 vTraceSetObjectName(TRACE_GET_OBJECT_TRACE_CLASS(UNUSED, object), TRACE_GET_OBJECT_NUMBER(UNUSED, object), name); 1065 #define vTraceSetSemaphoreName(object, name) \ 1066 vTraceSetObjectName(TRACE_GET_OBJECT_TRACE_CLASS(UNUSED, object), TRACE_GET_OBJECT_NUMBER(UNUSED, object), name); 1068 #define vTraceSetMutexName(object, name) \ 1069 vTraceSetObjectName(TRACE_GET_OBJECT_TRACE_CLASS(UNUSED, object), TRACE_GET_OBJECT_NUMBER(UNUSED, object), name); 1071 #define vTraceSetEventGroupName(object, name) \ 1072 vTraceSetObjectName(TRACE_CLASS_EVENTGROUP, (objectHandleType)uxEventGroupGetNumber(object), name); 1074 #undef traceQUEUE_REGISTRY_ADD 1075 #define traceQUEUE_REGISTRY_ADD(object, name) vTraceSetObjectName(TRACE_GET_OBJECT_TRACE_CLASS(UNUSED, object), TRACE_GET_OBJECT_NUMBER(UNUSED, object), name); int uiInEventGroupSetBitsFromISR
uint8_t objectHandleType
Definition: trcTypes.h:53
uint8_t traceObjectClass
Definition: trcTypes.h:56
To use the FreeRTOS so play with it a little *uses roughly of and uses roughly of RAM *The larger the size
Definition: readme.txt:4