IPA function summary for prvInitialiseNewTimer.constprop/72 inlinable global time: 15.415032 self size: 22 global size: 22 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op1 changed) size:3.000000, time:1.320005, executed if:(op1 != 0) && (not inlined) size:2.000000, time:0.660002, executed if:(op1 != 0) size:2.000000, time:0.660002, executed if:(op1 != 0), nonconst if:(op2 changed) && (op1 != 0) size:1.000000, time:0.165001, executed if:(op2 != 0) && (op1 != 0) && (not inlined) size:2.000000, time:0.330001, executed if:(op2 != 0) && (op1 != 0) size:5.000000, time:3.349994, executed if:(op1 == 0) calls: prvCheckForValidListAndQueue/29 function not considered for inlining loop depth: 0 freq:0.33 size: 1 time: 10callee size:12 stack: 0 predicate: (op1 != 0) vListInitialiseItem/53 function body not available loop depth: 0 freq:0.33 size: 2 time: 11 predicate: (op1 != 0) IPA function summary for prvInsertTimerInActiveList.part.0/57 inlinable global time: 15.000000 self size: 7 global size: 7 min size: 6 self stack: 0 global stack: 0 size:1.000000, time:1.000000 size:3.000000, time:2.000000, executed if:(not inlined) calls: vListInsert/44 function body not available loop depth: 0 freq:1.00 size: 3 time: 12 IPA function summary for vTimerSetTimerNumber/36 inlinable global time: 3.000000 self size: 4 global size: 4 min size: 0 self stack: 0 global stack: 0 size:0.500000, time:0.500000 size:3.500000, time:2.500000, executed if:(not inlined) calls: IPA function summary for uxTimerGetTimerNumber/35 inlinable global time: 3.000000 self size: 4 global size: 4 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:3.000000, time:2.000000, executed if:(not inlined) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 288] changed) && (not inlined) size:0.500000, time:0.500000, nonconst if:(op0[ref offset: 288] changed) calls: IPA function summary for xTimerPendFunctionCall/34 inlinable global time: 16.555202 self size: 21 global size: 21 min size: 12 self stack: 16 global stack: 16 size:12.000000, time:7.465300 size:3.000000, time:1.069400, executed if:(not inlined) calls: xQueueGenericSend/55 function body not available loop depth: 0 freq:0.53 size: 6 time: 15 op1 is compile time invariant op3 is compile time invariant IPA function summary for xTimerPendFunctionCallFromISR/33 inlinable global time: 22.000000 self size: 14 global size: 14 min size: 12 self stack: 16 global stack: 16 size:5.000000, time:5.000000 size:3.000000, time:2.000000, executed if:(not inlined) calls: xQueueGenericSendFromISR/56 function body not available loop depth: 0 freq:1.00 size: 6 time: 15 op1 is compile time invariant op3 is compile time invariant IPA function summary for vTimerSetTimerID/32 inlinable global time: 16.624602 self size: 13 global size: 13 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:0.500000, time:0.267350, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for pvTimerGetTimerID/31 inlinable global time: 16.624602 self size: 13 global size: 13 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:0.500000, time:0.267350, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for xTimerIsTimerActive/30 inlinable global time: 17.159302 self size: 14 global size: 14 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:1.500000, time:0.802050, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for prvCheckForValidListAndQueue/29 inlinable global time: 33.264679 self size: 25 global size: 25 min size: 28 self stack: 0 global stack: 0 size:8.000000, time:3.871500 size:3.000000, time:2.000000, executed if:(not inlined) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:1.00 size: 1 time: 10 vQueueAddToRegistry/50 function body not available loop depth: 0 freq:0.09 size: 3 time: 12 op1 is compile time invariant xQueueGenericCreate/49 function body not available loop depth: 0 freq:0.17 size: 5 time: 14 op0 is compile time invariant op1 is compile time invariant op2 is compile time invariant vListInitialise/48 function body not available loop depth: 0 freq:0.17 size: 2 time: 11 op0 is compile time invariant vListInitialise/48 function body not available loop depth: 0 freq:0.17 size: 2 time: 11 op0 is compile time invariant vPortEnterCritical/47 function body not available loop depth: 0 freq:1.00 size: 1 time: 10 IPA function summary for prvSwitchTimerLists/28 inlinable global time: 154.636365 self size: 15 global size: 15 min size: 6 self stack: 0 global stack: 0 size:9.000000, time:55.545455 size:3.000000, time:2.000000, executed if:(not inlined) calls: prvProcessExpiredTimer/21 function not considered for inlining loop depth: 1 freq:8.09 size: 3 time: 12callee size:11 stack: 0 op1 is compile time invariant IPA function summary for prvProcessReceivedCommands/27 inlinable global time: 589.511443 self size: 112 global size: 112 min size: 72 self stack: 20 global stack: 20 size:73.000000, time:192.498507 size:3.000000, time:1.979424, executed if:(not inlined) calls: xQueueReceive/46 function body not available loop depth: 3 freq:17.99 size: 5 time: 14 op1 is compile time invariant op2 is compile time invariant vPortFree/45 function body not available loop depth: 1 freq:0.06 size: 2 time: 11 prvInsertTimerInActiveList/26 function not considered for inlining loop depth: 1 freq:0.18 size: 5 time: 14callee size:11 stack: 0 prvReloadTimer/20 function not considered for inlining loop depth: 1 freq:0.03 size: 4 time: 13callee size:10 stack: 0 prvInsertTimerInActiveList/26 function not considered for inlining loop depth: 1 freq:0.19 size: 6 time: 15callee size:11 stack: 0 prvSampleTimeNow/25 function not considered for inlining loop depth: 2 freq:0.94 size: 3 time: 12callee size: 6 stack: 0 op0 is compile time invariant uxListRemove/43 function body not available loop depth: 2 freq:0.50 size: 2 time: 11 indirect call loop depth: 1 freq:0.09 size: 4 time: 16 indirect call loop depth: 3 freq:6.97 size: 5 time: 17 IPA function summary for prvInsertTimerInActiveList/26 inlinable global time: 15.972500 self size: 22 global size: 22 min size: 12 self stack: 0 global stack: 0 size:2.000000, time:1.332500 size:4.000000, time:3.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op1 changed || op2 changed) size:3.000000, time:1.500000, nonconst if:(op2 changed || op3 changed) size:2.000000, time:0.670000, nonconst if:(op1 changed || op3 changed) size:0.500000, time:0.250000, executed if:(not inlined), nonconst if:(op0[ref offset: 192] changed) && (not inlined) size:0.500000, time:0.250000, nonconst if:(op0[ref offset: 192] changed) size:2.000000, time:1.000000, nonconst if:(op2 changed || op3 changed || op0[ref offset: 192] changed) calls: vListInsert/44 function body not available loop depth: 0 freq:0.33 size: 3 time: 12 prvInsertTimerInActiveList.part.0/57 function not considered for inlining loop depth: 0 freq:0.16 size: 3 time: 12callee size: 3 stack: 0 IPA function summary for prvSampleTimeNow/25 inlinable global time: 21.300000 self size: 12 global size: 12 min size: 6 self stack: 0 global stack: 0 size:5.000000, time:4.500000 size:4.000000, time:2.500000, executed if:(not inlined) calls: prvSwitchTimerLists/28 function not considered for inlining loop depth: 0 freq:0.33 size: 1 time: 10callee size: 7 stack: 0 xTaskGetTickCount/41 function body not available loop depth: 0 freq:1.00 size: 2 time: 11 IPA function summary for prvGetNextExpireTime/24 inlinable global time: 10.000000 self size: 12 global size: 12 min size: 0 self stack: 0 global stack: 0 size:8.500000, time:7.500000 size:3.500000, time:2.500000, executed if:(not inlined) calls: IPA function summary for prvProcessTimerOrBlockTask/23 inlinable global time: 53.483675 self size: 38 global size: 38 min size: 22 self stack: 4 global stack: 4 size:10.000000, time:6.076975 size:3.000000, time:2.000000, executed if:(not inlined) size:4.000000, time:2.458900, nonconst if:(op1 changed) size:2.000000, time:0.670000, executed if:(op1 == 0) size:4.000000, time:1.118900, executed if:(op1 != 0) calls: xTaskResumeAll/39 function body not available loop depth: 0 freq:0.33 size: 1 time: 10 xTaskResumeAll/39 function body not available loop depth: 0 freq:0.56 size: 2 time: 11 vQueueWaitForMessageRestricted/40 function body not available loop depth: 0 freq:0.56 size: 4 time: 13 prvProcessExpiredTimer/21 function not considered for inlining loop depth: 0 freq:0.11 size: 3 time: 12callee size:11 stack: 0 predicate: (op1 == 0) xTaskResumeAll/39 function body not available loop depth: 0 freq:0.11 size: 1 time: 10 predicate: (op1 == 0) prvSampleTimeNow/25 function not considered for inlining loop depth: 0 freq:1.00 size: 3 time: 12callee size: 6 stack: 0 op0 is compile time invariant vTaskSuspendAll/38 function body not available loop depth: 0 freq:1.00 size: 1 time: 10 IPA function summary for prvTimerTask/22 inlinable global time: 350000.594727 self size: 10 global size: 10 min size: 14 self stack: 4 global stack: 4 size:1.000000, time:10000.016983 size:2.000000, time:0.000000, executed if:(not inlined) calls: prvProcessReceivedCommands/27 function not considered for inlining loop depth: 1 freq:10000.02 size: 1 time: 10callee size:56 stack:20 prvProcessTimerOrBlockTask/23 function not considered for inlining loop depth: 1 freq:10000.02 size: 3 time: 12callee size:19 stack: 4 prvGetNextExpireTime/24 function not considered for inlining loop depth: 1 freq:10000.02 size: 3 time: 12callee size: 6 stack: 0 op0 is compile time invariant IPA function summary for prvProcessExpiredTimer/21 inlinable global time: 42.630000 self size: 23 global size: 23 min size: 20 self stack: 0 global stack: 0 size:10.000000, time:9.340000 size:3.000000, time:2.000000, executed if:(not inlined) calls: prvReloadTimer/20 function not considered for inlining loop depth: 0 freq:0.33 size: 4 time: 13callee size:10 stack: 0 uxListRemove/43 function body not available loop depth: 0 freq:1.00 size: 2 time: 11 indirect call loop depth: 0 freq:1.00 size: 4 time: 16 IPA function summary for prvReloadTimer/20 inlinable global time: 328.454547 self size: 20 global size: 20 min size: 20 self stack: 0 global stack: 0 size:5.500000, time:48.000000 size:4.500000, time:14.636364, executed if:(not inlined) calls: prvInsertTimerInActiveList/26 function not considered for inlining loop depth: 1 freq:9.09 size: 6 time: 15callee size:11 stack: 0 op0 change 10.990000% of time op2 change 10.990000% of time indirect call loop depth: 1 freq:8.09 size: 4 time: 16 IPA function summary for pcTimerGetName/19 inlinable global time: 5.600001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:0.500000, time:0.350000, executed if:(op0 != 0B) && (not inlined), nonconst if:(op0[ref offset: 0] changed) && (op0 != 0B) && (not inlined) size:0.500000, time:0.350000, executed if:(op0 != 0B), nonconst if:(op0[ref offset: 0] changed) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: IPA function summary for xTimerGetExpiryTime/18 inlinable global time: 5.600001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:0.500000, time:0.350000, executed if:(op0 != 0B) && (not inlined), nonconst if:(op0[ref offset: 32] changed) && (op0 != 0B) && (not inlined) size:0.500000, time:0.350000, executed if:(op0 != 0B), nonconst if:(op0[ref offset: 32] changed) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: IPA function summary for uxTimerGetReloadMode/17 inlinable global time: 18.228702 self size: 16 global size: 16 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:3.500000, time:1.871450, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for vTimerSetReloadMode/16 inlinable global time: 18.763389 self size: 20 global size: 20 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:2.000000, time:1.069400, executed if:(op0 != 0B), nonconst if:(op1 changed) && (op0 != 0B) size:1.000000, time:0.267348, executed if:(op1 == 0) && (op0 != 0B) && (not inlined) size:2.000000, time:0.534696, executed if:(op1 == 0) && (op0 != 0B) size:1.000000, time:0.267348, executed if:(op1 != 0) && (op0 != 0B) && (not inlined) size:2.000000, time:0.534696, executed if:(op1 != 0) && (op0 != 0B) size:1.000000, time:1.069400, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for xTimerGetPeriod/15 inlinable global time: 5.600001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:0.500000, time:0.350000, executed if:(op0 != 0B) && (not inlined), nonconst if:(op0[ref offset: 192] changed) && (op0 != 0B) && (not inlined) size:0.500000, time:0.350000, executed if:(op0 != 0B), nonconst if:(op0[ref offset: 192] changed) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: IPA function summary for xTimerGetTimerDaemonTaskHandle/14 inlinable global time: 5.900001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:8.000000, time:4.500001 size:3.000000, time:1.399999, executed if:(not inlined) calls: IPA function summary for xTimerGenericCommand/13 inlinable global time: 20.230048 self size: 42 global size: 42 min size: 0 self stack: 16 global stack: 16 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:6.000000, time:3.570004, executed if:(op0 != 0B) size:2.000000, time:0.980004, executed if:(op0 != 0B), nonconst if:(op1 changed) && (op0 != 0B) size:4.000000, time:0.735003, executed if:(op1 <= 5) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: xQueueGenericSendFromISR/56 function body not available loop depth: 0 freq:0.25 size: 6 time: 15 predicate: (op1 > 5) && (op0 != 0B) op1 is compile time invariant op3 is compile time invariant xQueueGenericSend/55 function body not available loop depth: 0 freq:0.16 size: 6 time: 15 predicate: (op1 <= 5) && (op0 != 0B) op1 is compile time invariant op2 is compile time invariant op3 is compile time invariant xQueueGenericSend/55 function body not available loop depth: 0 freq:0.08 size: 6 time: 15 predicate: (op1 <= 5) && (op0 != 0B) op1 is compile time invariant op3 is compile time invariant xTaskGetSchedulerState/54 function body not available loop depth: 0 freq:0.25 size: 2 time: 11 predicate: (op1 <= 5) && (op0 != 0B) IPA function summary for xTimerCreate/11 inlinable global time: 25.089900 self size: 16 global size: 16 min size: 20 self stack: 0 global stack: 0 size:3.000000, time:2.534700 size:3.000000, time:2.000000, executed if:(not inlined) calls: prvInitialiseNewTimer.constprop/72 function not considered for inlining loop depth: 0 freq:0.53 size: 7 time: 16callee size:11 stack: 0 pvPortMalloc/52 function body not available loop depth: 0 freq:1.00 size: 3 time: 12 op0 is compile time invariant IPA function summary for xTimerCreateTimerTask/10 inlinable global time: 27.357181 self size: 22 global size: 22 min size: 18 self stack: 0 global stack: 0 size:10.000000, time:7.732635 size:3.000000, time:0.534703, executed if:(not inlined) calls: xTaskCreate/37 function body not available loop depth: 0 freq:0.53 size: 8 time: 17 op0 is compile time invariant op1 is compile time invariant op2 is compile time invariant op3 is compile time invariant op4 is compile time invariant op5 is compile time invariant prvCheckForValidListAndQueue/29 function not considered for inlining loop depth: 0 freq:1.00 size: 1 time: 10callee size:12 stack: 0 Flattening functions: Overall time estimate: 351507.595703 weighted by profile: 0.000000 Deciding on inlining of small functions. Starting with size 0. Enqueueing calls in prvInitialiseNewTimer.constprop/72. Enqueueing calls in prvInsertTimerInActiveList.part.0/57. Enqueueing calls in vTimerSetTimerNumber/36. Enqueueing calls in uxTimerGetTimerNumber/35. Enqueueing calls in xTimerPendFunctionCall/34. Enqueueing calls in xTimerPendFunctionCallFromISR/33. Enqueueing calls in vTimerSetTimerID/32. Enqueueing calls in pvTimerGetTimerID/31. Enqueueing calls in xTimerIsTimerActive/30. Enqueueing calls in prvCheckForValidListAndQueue/29. Enqueueing calls in prvSwitchTimerLists/28. Enqueueing calls in prvProcessReceivedCommands/27. Enqueueing calls in prvInsertTimerInActiveList/26. Enqueueing calls in prvSampleTimeNow/25. Enqueueing calls in prvGetNextExpireTime/24. Enqueueing calls in prvProcessTimerOrBlockTask/23. Enqueueing calls in prvTimerTask/22. Enqueueing calls in prvProcessExpiredTimer/21. Enqueueing calls in prvReloadTimer/20. Enqueueing calls in pcTimerGetName/19. Enqueueing calls in xTimerGetExpiryTime/18. Enqueueing calls in uxTimerGetReloadMode/17. Enqueueing calls in vTimerSetReloadMode/16. Enqueueing calls in xTimerGetPeriod/15. Enqueueing calls in xTimerGetTimerDaemonTaskHandle/14. Enqueueing calls in xTimerGenericCommand/13. Enqueueing calls in xTimerCreate/11. Enqueueing calls in xTimerCreateTimerTask/10. Considering prvGetNextExpireTime/24 with 12 size to be inlined into prvTimerTask/22 in ../FreeRTOS/Source/timers.c:586 Estimated badness is -6041.676941, frequency 10000.02. Considering prvProcessTimerOrBlockTask/23 with 38 size to be inlined into prvTimerTask/22 in ../FreeRTOS/Source/timers.c:590 Estimated badness is -416.667376, frequency 10000.02. Considering prvSampleTimeNow/25 with 12 size to be inlined into prvProcessTimerOrBlockTask/23 in ../FreeRTOS/Source/timers.c:611 Estimated badness is -7733.346512, frequency 10000.02. Considering prvProcessReceivedCommands/27 with 112 size to be inlined into prvTimerTask/22 in ../FreeRTOS/Source/timers.c:593 Estimated badness is -37.600263, frequency 10000.02. Considering prvSampleTimeNow/25 with 12 size to be inlined into prvProcessReceivedCommands/27 in ../FreeRTOS/Source/timers.c:811 Estimated badness is -7232.827499, frequency 9352.79. Considering prvInitialiseNewTimer.constprop/72 with 22 size to be inlined into xTimerCreate/11 in ../FreeRTOS/Source/timers.c:304 Estimated badness is -0.166209, frequency 0.53. Considering prvInsertTimerInActiveList.part.0/57 with 7 size to be inlined into prvInsertTimerInActiveList/26 in unknown:0 Estimated badness is -0.001786, frequency 0.16. Reclaiming functions: Reclaiming variables: Clearing address taken flags: Deciding on functions to be inlined into all callers and removing useless speculations: Overall time estimate: 6607568.406250 weighted by profile: 0.000000 Why inlining failed? function body not available : 38 calls, 230526.954346 freq, 0 count call is unlikely and code size would grow : 11 calls, 11457.497711 freq, 0 count IPA function summary for vTimerSetTimerNumber/36 inlinable global time: 3.000000 self size: 4 global size: 4 min size: 0 self stack: 0 global stack: 0 size:0.500000, time:0.500000 size:3.500000, time:2.500000, executed if:(not inlined) calls: IPA function summary for uxTimerGetTimerNumber/35 inlinable global time: 3.000000 self size: 4 global size: 4 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:3.000000, time:2.000000, executed if:(not inlined) size:0.500000, time:0.500000, executed if:(not inlined), nonconst if:(op0[ref offset: 288] changed) && (not inlined) size:0.500000, time:0.500000, nonconst if:(op0[ref offset: 288] changed) calls: IPA function summary for xTimerPendFunctionCall/34 inlinable global time: 16.555202 self size: 21 global size: 21 min size: 12 self stack: 16 global stack: 16 size:12.000000, time:7.465300 size:3.000000, time:1.069400, executed if:(not inlined) calls: xQueueGenericSend/55 function body not available loop depth: 0 freq:0.53 size: 6 time: 15 op1 is compile time invariant op3 is compile time invariant IPA function summary for xTimerPendFunctionCallFromISR/33 inlinable global time: 22.000000 self size: 14 global size: 14 min size: 12 self stack: 16 global stack: 16 size:5.000000, time:5.000000 size:3.000000, time:2.000000, executed if:(not inlined) calls: xQueueGenericSendFromISR/56 function body not available loop depth: 0 freq:1.00 size: 6 time: 15 op1 is compile time invariant op3 is compile time invariant IPA function summary for vTimerSetTimerID/32 inlinable global time: 16.624602 self size: 13 global size: 13 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:0.500000, time:0.267350, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for pvTimerGetTimerID/31 inlinable global time: 16.624602 self size: 13 global size: 13 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:0.500000, time:0.267350, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for xTimerIsTimerActive/30 inlinable global time: 17.159302 self size: 14 global size: 14 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:1.500000, time:0.802050, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for prvCheckForValidListAndQueue/29 inlinable global time: 33.264679 self size: 25 global size: 25 min size: 8 self stack: 0 global stack: 0 estimated growth:17 size:8.000000, time:3.871500 size:3.000000, time:2.000000, executed if:(not inlined) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:1.00 size: 1 time: 10 vQueueAddToRegistry/50 function body not available loop depth: 0 freq:0.09 size: 3 time: 12 op1 is compile time invariant xQueueGenericCreate/49 function body not available loop depth: 0 freq:0.17 size: 5 time: 14 op0 is compile time invariant op1 is compile time invariant op2 is compile time invariant vListInitialise/48 function body not available loop depth: 0 freq:0.17 size: 2 time: 11 op0 is compile time invariant vListInitialise/48 function body not available loop depth: 0 freq:0.17 size: 2 time: 11 op0 is compile time invariant vPortEnterCritical/47 function body not available loop depth: 0 freq:1.00 size: 1 time: 10 IPA function summary for prvSwitchTimerLists/28 inlinable global time: 154.636365 self size: 15 global size: 15 min size: 9 self stack: 0 global stack: 0 estimated growth:-4 size:9.000000, time:55.545455 size:3.000000, time:2.000000, executed if:(not inlined) calls: prvProcessExpiredTimer/21 call is unlikely and code size would grow loop depth: 1 freq:8.09 size: 3 time: 12callee size:11 stack: 0 op1 is compile time invariant IPA function summary for prvInsertTimerInActiveList/26 inlinable global time: 16.137500 self size: 22 global size: 23 min size: 3 self stack: 0 global stack: 0 estimated growth:15 size:3.000000, time:1.497500 size:4.000000, time:3.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op1 changed || op2 changed) size:3.000000, time:1.500000, nonconst if:(op2 changed || op3 changed) size:2.000000, time:0.670000, nonconst if:(op1 changed || op3 changed) size:0.500000, time:0.250000, executed if:(not inlined), nonconst if:(op0[ref offset: 192] changed) && (not inlined) size:0.500000, time:0.250000, nonconst if:(op0[ref offset: 192] changed) size:2.000000, time:1.000000, nonconst if:(op2 changed || op3 changed || op0[ref offset: 192] changed) calls: vListInsert/44 function body not available loop depth: 0 freq:0.33 size: 3 time: 12 prvInsertTimerInActiveList.part.0/57 inlined loop depth: 0 freq:0.16 size: 3 time: 12callee size: 3 stack: 0 Stack frame offset 0, callee self size 0, callee size 0 vListInsert/44 function body not available loop depth: 0 freq:0.16 size: 3 time: 12 IPA function summary for prvTimerTask/22 inlinable global time: 6606767.054688 self size: 10 global size: 166 min size: 290 self stack: 4 global stack: 24 size:112.500000, time:2200324.062500 size:2.000000, time:0.000000, executed if:(not inlined) calls: prvProcessReceivedCommands/27 inlined loop depth: 1 freq:10000.02 size: 1 time: 10callee size:56 stack:20 Stack frame offset 4, callee self size 20, callee size 20 xQueueReceive/46 function body not available loop depth: 4 freq:179947.93 size: 5 time: 14 op1 is compile time invariant op2 is compile time invariant vPortFree/45 function body not available loop depth: 2 freq:617.28 size: 2 time: 11 prvInsertTimerInActiveList/26 call is unlikely and code size would grow loop depth: 2 freq:1767.68 size: 5 time: 14callee size:11 stack: 0 prvReloadTimer/20 call is unlikely and code size would grow loop depth: 2 freq:308.64 size: 4 time: 13callee size:10 stack: 0 prvInsertTimerInActiveList/26 call is unlikely and code size would grow loop depth: 2 freq:1870.56 size: 6 time: 15callee size:11 stack: 0 prvSampleTimeNow/25 inlined loop depth: 3 freq:9352.79 size: 3 time: 12callee size: 6 stack: 0 Stack frame offset 24, callee self size 0, callee size 0 prvSwitchTimerLists/28 call is unlikely and code size would grow loop depth: 3 freq:3086.42 size: 1 time: 10callee size: 7 stack: 0 xTaskGetTickCount/41 function body not available loop depth: 3 freq:9352.79 size: 2 time: 11 uxListRemove/43 function body not available loop depth: 3 freq:5000.94 size: 2 time: 11 indirect call loop depth: 2 freq:935.28 size: 4 time: 16 indirect call loop depth: 4 freq:69720.83 size: 5 time: 17 prvProcessTimerOrBlockTask/23 inlined loop depth: 1 freq:10000.02 size: 3 time: 12callee size:19 stack: 4 Stack frame offset 4, callee self size 4, callee size 4 xTaskResumeAll/39 function body not available loop depth: 1 freq:3300.01 size: 1 time: 10 xTaskResumeAll/39 function body not available loop depth: 1 freq:5594.51 size: 2 time: 11 vQueueWaitForMessageRestricted/40 function body not available loop depth: 1 freq:5594.51 size: 4 time: 13 prvProcessExpiredTimer/21 call is unlikely and code size would grow loop depth: 1 freq:1105.50 size: 3 time: 12callee size:11 stack: 0 xTaskResumeAll/39 function body not available loop depth: 1 freq:1105.50 size: 1 time: 10 prvSampleTimeNow/73 inlined loop depth: 1 freq:10000.02 size: 3 time: 12callee size: 6 stack: 0 Stack frame offset 8, callee self size 0, callee size 0 xTaskGetTickCount/41 function body not available loop depth: 1 freq:10000.02 size: 2 time: 11 prvSwitchTimerLists/28 call is unlikely and code size would grow loop depth: 1 freq:3300.01 size: 1 time: 10callee size: 7 stack: 0 vTaskSuspendAll/38 function body not available loop depth: 1 freq:10000.02 size: 1 time: 10 prvGetNextExpireTime/24 inlined loop depth: 1 freq:10000.02 size: 3 time: 12callee size: 6 stack: 0 Stack frame offset 4, callee self size 0, callee size 0 IPA function summary for prvProcessExpiredTimer/21 inlinable global time: 42.630000 self size: 23 global size: 23 min size: 10 self stack: 0 global stack: 0 estimated growth:11 size:10.000000, time:9.340000 size:3.000000, time:2.000000, executed if:(not inlined) calls: prvReloadTimer/20 call is unlikely and code size would grow loop depth: 0 freq:0.33 size: 4 time: 13callee size:10 stack: 0 uxListRemove/43 function body not available loop depth: 0 freq:1.00 size: 2 time: 11 indirect call loop depth: 0 freq:1.00 size: 4 time: 16 IPA function summary for prvReloadTimer/20 inlinable global time: 328.454547 self size: 20 global size: 20 min size: 6 self stack: 0 global stack: 0 estimated growth:4 size:5.500000, time:48.000000 size:4.500000, time:14.636364, executed if:(not inlined) calls: prvInsertTimerInActiveList/26 call is unlikely and code size would grow loop depth: 1 freq:9.09 size: 6 time: 15callee size:11 stack: 0 op0 change 10.990000% of time op2 change 10.990000% of time indirect call loop depth: 1 freq:8.09 size: 4 time: 16 IPA function summary for pcTimerGetName/19 inlinable global time: 5.600001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:0.500000, time:0.350000, executed if:(op0 != 0B) && (not inlined), nonconst if:(op0[ref offset: 0] changed) && (op0 != 0B) && (not inlined) size:0.500000, time:0.350000, executed if:(op0 != 0B), nonconst if:(op0[ref offset: 0] changed) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: IPA function summary for xTimerGetExpiryTime/18 inlinable global time: 5.600001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:0.500000, time:0.350000, executed if:(op0 != 0B) && (not inlined), nonconst if:(op0[ref offset: 32] changed) && (op0 != 0B) && (not inlined) size:0.500000, time:0.350000, executed if:(op0 != 0B), nonconst if:(op0[ref offset: 32] changed) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: IPA function summary for uxTimerGetReloadMode/17 inlinable global time: 18.228702 self size: 16 global size: 16 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:1.500000, time:1.336750, executed if:(op0 != 0B) && (not inlined) size:3.500000, time:1.871450, executed if:(op0 != 0B) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for vTimerSetReloadMode/16 inlinable global time: 18.763389 self size: 20 global size: 20 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:2.000000, time:1.069400, executed if:(op0 != 0B), nonconst if:(op1 changed) && (op0 != 0B) size:1.000000, time:0.267348, executed if:(op1 == 0) && (op0 != 0B) && (not inlined) size:2.000000, time:0.534696, executed if:(op1 == 0) && (op0 != 0B) size:1.000000, time:0.267348, executed if:(op1 != 0) && (op0 != 0B) && (not inlined) size:2.000000, time:0.534696, executed if:(op1 != 0) && (op0 != 0B) size:1.000000, time:1.069400, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:2.326499, executed if:(op0 == 0B) calls: vPortExitCritical/51 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) vPortEnterCritical/47 function body not available loop depth: 0 freq:0.53 size: 1 time: 10 predicate: (op0 != 0B) IPA function summary for xTimerGetPeriod/15 inlinable global time: 5.600001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:0.500000, time:0.350000, executed if:(op0 != 0B) && (not inlined), nonconst if:(op0[ref offset: 192] changed) && (op0 != 0B) && (not inlined) size:0.500000, time:0.350000, executed if:(op0 != 0B), nonconst if:(op0[ref offset: 192] changed) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: IPA function summary for xTimerGetTimerDaemonTaskHandle/14 inlinable global time: 5.900001 self size: 11 global size: 11 min size: 0 self stack: 0 global stack: 0 size:8.000000, time:4.500001 size:3.000000, time:1.399999, executed if:(not inlined) calls: IPA function summary for xTimerGenericCommand/13 inlinable global time: 20.230048 self size: 42 global size: 42 min size: 0 self stack: 16 global stack: 16 size:0.000000, time:0.000000 size:2.000000, time:0.000000, executed if:(not inlined) size:2.000000, time:2.000000, nonconst if:(op0 changed) size:6.000000, time:3.570004, executed if:(op0 != 0B) size:2.000000, time:0.980004, executed if:(op0 != 0B), nonconst if:(op1 changed) && (op0 != 0B) size:4.000000, time:0.735003, executed if:(op1 <= 5) && (op0 != 0B) size:1.000000, time:1.399999, executed if:(op0 != 0B) && (not inlined) size:5.000000, time:1.500001, executed if:(op0 == 0B) calls: xQueueGenericSendFromISR/56 function body not available loop depth: 0 freq:0.25 size: 6 time: 15 predicate: (op1 > 5) && (op0 != 0B) op1 is compile time invariant op3 is compile time invariant xQueueGenericSend/55 function body not available loop depth: 0 freq:0.16 size: 6 time: 15 predicate: (op1 <= 5) && (op0 != 0B) op1 is compile time invariant op2 is compile time invariant op3 is compile time invariant xQueueGenericSend/55 function body not available loop depth: 0 freq:0.08 size: 6 time: 15 predicate: (op1 <= 5) && (op0 != 0B) op1 is compile time invariant op3 is compile time invariant xTaskGetSchedulerState/54 function body not available loop depth: 0 freq:0.25 size: 2 time: 11 predicate: (op1 <= 5) && (op0 != 0B) IPA function summary for xTimerCreate/11 inlinable global time: 23.983085 self size: 16 global size: 25 min size: 26 self stack: 0 global stack: 0 size:3.000000, time:2.534700 size:3.000000, time:2.000000, executed if:(not inlined) size:2.000000, time:1.069400, nonconst if:(op1 changed) size:2.000000, time:0.352903, executed if:(op1 != 0) size:2.000000, time:0.352903, executed if:(op1 != 0), nonconst if:(op2 changed) && (op1 != 0) size:2.000000, time:0.176452, executed if:(op2 != 0) && (op1 != 0) size:5.000000, time:1.791242, executed if:(op1 == 0) calls: prvInitialiseNewTimer.constprop/72 inlined loop depth: 0 freq:0.53 size: 7 time: 16callee size:11 stack: 0 Stack frame offset 0, callee self size 0, callee size 0 prvCheckForValidListAndQueue/29 call is unlikely and code size would grow loop depth: 0 freq:0.18 size: 1 time: 10callee size:12 stack: 0 predicate: (op1 != 0) vListInitialiseItem/53 function body not available loop depth: 0 freq:0.18 size: 2 time: 11 predicate: (op1 != 0) pvPortMalloc/52 function body not available loop depth: 0 freq:1.00 size: 3 time: 12 op0 is compile time invariant IPA function summary for xTimerCreateTimerTask/10 inlinable global time: 27.357181 self size: 22 global size: 22 min size: 18 self stack: 0 global stack: 0 size:10.000000, time:7.732635 size:3.000000, time:0.534703, executed if:(not inlined) calls: xTaskCreate/37 function body not available loop depth: 0 freq:0.53 size: 8 time: 17 op0 is compile time invariant op1 is compile time invariant op2 is compile time invariant op3 is compile time invariant op4 is compile time invariant op5 is compile time invariant prvCheckForValidListAndQueue/29 call is unlikely and code size would grow loop depth: 0 freq:1.00 size: 1 time: 10callee size:12 stack: 0 Symbol table: prvSampleTimeNow/73 (prvSampleTimeNow) @05e5b0e0 Type: function definition analyzed Visibility: next sharing asm name: 25 References: xLastTime.6551/42 (read)xLastTime.6551/42 (write) Referring: Function prvSampleTimeNow/73 is inline copy in prvTimerTask/22 Clone of prvSampleTimeNow/25 Availability: local Function flags: count:1073741824 (estimated locally) body local optimize_size Called by: prvProcessTimerOrBlockTask/23 (inlined) (1073741824 (estimated locally),10000.02 per call) Calls: xTaskGetTickCount/41 (1073741824 (estimated locally),10000.02 per call) prvSwitchTimerLists/28 (354334802 (estimated locally),3300.01 per call) prvInitialiseNewTimer.constprop.0/72 (prvInitialiseNewTimer.constprop) @05e55d20 Type: function definition analyzed Visibility: References: Referring: Function prvInitialiseNewTimer.constprop/72 is inline copy in xTimerCreate/11 Clone of prvInitialiseNewTimer/12 Availability: local Function flags: count:574129754 (estimated locally) local optimize_size Called by: xTimerCreate/11 (inlined) (574129754 (estimated locally),0.53 per call) Calls: prvCheckForValidListAndQueue/29 (189463535 (estimated locally),0.18 per call) vListInitialiseItem/53 (189463535 (estimated locally),0.18 per call) prvInsertTimerInActiveList.part.0/57 (prvInsertTimerInActiveList.part.0) @05e55a80 Type: function definition analyzed Visibility: prevailing_def_ironly artificial References: pxOverflowTimerList/7 (read) Referring: Function prvInsertTimerInActiveList.part.0/57 is inline copy in prvInsertTimerInActiveList/26 Availability: local Function flags: count:177167400 (estimated locally) first_run:1 body local split_part optimize_size Called by: prvInsertTimerInActiveList/26 (inlined) (177167400 (estimated locally),0.16 per call) Calls: vListInsert/44 (177167400 (estimated locally),0.16 per call) xQueueGenericSendFromISR/56 (xQueueGenericSendFromISR) @05f5cc40 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerPendFunctionCallFromISR/33 (1073741824 (estimated locally),1.00 per call) xTimerGenericCommand/13 (87689 (estimated locally),0.25 per call) Calls: xQueueGenericSend/55 (xQueueGenericSend) @05f5cb60 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerPendFunctionCall/34 (123389 (estimated locally),0.53 per call) xTimerGenericCommand/13 (57875 (estimated locally),0.16 per call) xTimerGenericCommand/13 (29814 (estimated locally),0.08 per call) Calls: xTaskGetSchedulerState/54 (xTaskGetSchedulerState) @05f5ca80 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerGenericCommand/13 (87689 (estimated locally),0.25 per call) Calls: vListInitialiseItem/53 (vListInitialiseItem) @05f5c8c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvInitialiseNewTimer.constprop/72 (189463535 (estimated locally),0.18 per call) Calls: pvPortMalloc/52 (pvPortMalloc) @05f5c700 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerCreate/11 (1073741824 (estimated locally),1.00 per call) Calls: vPortExitCritical/51 (vPortExitCritical) @05f5c460 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: vTimerSetTimerID/32 (123389 (estimated locally),0.53 per call) pvTimerGetTimerID/31 (123389 (estimated locally),0.53 per call) xTimerIsTimerActive/30 (123389 (estimated locally),0.53 per call) uxTimerGetReloadMode/17 (123389 (estimated locally),0.53 per call) vTimerSetReloadMode/16 (123389 (estimated locally),0.53 per call) prvCheckForValidListAndQueue/29 (1073741824 (estimated locally),1.00 per call) Calls: vQueueAddToRegistry/50 (vQueueAddToRegistry) @05f5c380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvCheckForValidListAndQueue/29 (100070816 (estimated locally),0.09 per call) Calls: xQueueGenericCreate/49 (xQueueGenericCreate) @05f5c2a0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvCheckForValidListAndQueue/29 (187153200 (estimated locally),0.17 per call) Calls: vListInitialise/48 (vListInitialise) @05f5c0e0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvCheckForValidListAndQueue/29 (187153200 (estimated locally),0.17 per call) prvCheckForValidListAndQueue/29 (187153200 (estimated locally),0.17 per call) Calls: vPortEnterCritical/47 (vPortEnterCritical) @05f5c000 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: vTimerSetTimerID/32 (123389 (estimated locally),0.53 per call) pvTimerGetTimerID/31 (123389 (estimated locally),0.53 per call) xTimerIsTimerActive/30 (123389 (estimated locally),0.53 per call) uxTimerGetReloadMode/17 (123389 (estimated locally),0.53 per call) vTimerSetReloadMode/16 (123389 (estimated locally),0.53 per call) prvCheckForValidListAndQueue/29 (1073741824 (estimated locally),1.00 per call) Calls: xQueueReceive/46 (xQueueReceive) @05f36e00 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessReceivedCommands/27 (19321729474 (estimated locally),179947.93 per call) Calls: vPortFree/45 (vPortFree) @05f36d20 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessReceivedCommands/27 (66280295 (estimated locally),617.28 per call) Calls: vListInsert/44 (vListInsert) @05f369a0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvInsertTimerInActiveList/26 (357019157 (estimated locally),0.33 per call) prvInsertTimerInActiveList.part.0/57 (177167400 (estimated locally),0.16 per call) Calls: uxListRemove/43 (uxListRemove) @05f36700 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessReceivedCommands/27 (536970861 (estimated locally),5000.94 per call) prvProcessExpiredTimer/21 (1073741824 (estimated locally),1.00 per call) Calls: xLastTime.6551/42 (xLastTime) @05f4c120 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvSampleTimeNow/25 (read)prvSampleTimeNow/25 (write)prvSampleTimeNow/73 (read)prvSampleTimeNow/73 (write) Availability: available Varpool flags: initialized xTaskGetTickCount/41 (xTaskGetTickCount) @05f36380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvSampleTimeNow/73 (1073741824 (estimated locally),10000.02 per call) prvSampleTimeNow/25 (1004246918 (estimated locally),9352.79 per call) Calls: vQueueWaitForMessageRestricted/40 (vQueueWaitForMessageRestricted) @05f361c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessTimerOrBlockTask/23 (600704865 (estimated locally),5594.51 per call) Calls: xTaskResumeAll/39 (xTaskResumeAll) @05f360e0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessTimerOrBlockTask/23 (354334802 (estimated locally),3300.01 per call) prvProcessTimerOrBlockTask/23 (600704865 (estimated locally),5594.51 per call) prvProcessTimerOrBlockTask/23 (118702158 (estimated locally),1105.50 per call) Calls: vTaskSuspendAll/38 (vTaskSuspendAll) @05f36000 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessTimerOrBlockTask/23 (1073741824 (estimated locally),10000.02 per call) Calls: xTaskCreate/37 (xTaskCreate) @05f2aee0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerCreateTimerTask/10 (78363 (estimated locally),0.53 per call) Calls: vTimerSetTimerNumber/36 (vTimerSetTimerNumber) @05f2aa80 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: uxTimerGetTimerNumber/35 (uxTimerGetTimerNumber) @05f2a7e0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: xTimerPendFunctionCall/34 (xTimerPendFunctionCall) @05f2a540 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read) Referring: Availability: available Function flags: count:230763 (estimated locally) body optimize_size Called by: Calls: xQueueGenericSend/55 (123389 (estimated locally),0.53 per call) xTimerPendFunctionCallFromISR/33 (xTimerPendFunctionCallFromISR) @05f2a0e0 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read) Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: xQueueGenericSendFromISR/56 (1073741824 (estimated locally),1.00 per call) vTimerSetTimerID/32 (vTimerSetTimerID) @05f268c0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:230763 (estimated locally) body optimize_size Called by: Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call) pvTimerGetTimerID/31 (pvTimerGetTimerID) @05f26ee0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:230763 (estimated locally) body optimize_size Called by: Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call) xTimerIsTimerActive/30 (xTimerIsTimerActive) @05f26b60 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:230763 (estimated locally) body optimize_size Called by: Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call) prvCheckForValidListAndQueue/29 (prvCheckForValidListAndQueue) @05f267e0 Type: function definition analyzed Visibility: prevailing_def_ironly References: xTimerQueue/8 (read)xActiveTimerList1/4 (addr)xActiveTimerList2/5 (addr)pxCurrentTimerList/6 (write)xActiveTimerList1/4 (addr)pxOverflowTimerList/7 (write)xActiveTimerList2/5 (addr)xTimerQueue/8 (write) Referring: Availability: local Function flags: count:1073741824 (estimated locally) body local optimize_size Called by: prvInitialiseNewTimer.constprop/72 (189463535 (estimated locally),0.18 per call) xTimerCreateTimerTask/10 (146556 (estimated locally),1.00 per call) Calls: vPortExitCritical/51 (1073741824 (estimated locally),1.00 per call) vQueueAddToRegistry/50 (100070816 (estimated locally),0.09 per call) xQueueGenericCreate/49 (187153200 (estimated locally),0.17 per call) vListInitialise/48 (187153200 (estimated locally),0.17 per call) vListInitialise/48 (187153200 (estimated locally),0.17 per call) vPortEnterCritical/47 (1073741824 (estimated locally),1.00 per call) prvSwitchTimerLists/28 (prvSwitchTimerLists) @05f26460 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxCurrentTimerList/6 (read)pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (write)pxOverflowTimerList/7 (write) Referring: Availability: local Function flags: count:118111600 (estimated locally) body local optimize_size Called by: prvSampleTimeNow/73 (354334802 (estimated locally),3300.01 per call) prvSampleTimeNow/25 (331401483 (estimated locally),3086.42 per call) Calls: prvProcessExpiredTimer/21 (955630223 (estimated locally),8.09 per call) prvProcessReceivedCommands/27 (prvProcessReceivedCommands) @05f260e0 Type: function definition analyzed Visibility: prevailing_def_ironly References: xTimerQueue/8 (read) Referring: Function prvProcessReceivedCommands/27 is inline copy in prvTimerTask/22 Availability: local Function flags: count:1073741824 (estimated locally) body local optimize_size Called by: prvTimerTask/22 (inlined) (1073741824 (estimated locally),10000.02 per call) Calls: xQueueReceive/46 (19321729474 (estimated locally),179947.93 per call) vPortFree/45 (66280295 (estimated locally),617.28 per call) prvInsertTimerInActiveList/26 (189802709 (estimated locally),1767.68 per call) prvReloadTimer/20 (33140147 (estimated locally),308.64 per call) prvInsertTimerInActiveList/26 (200849425 (estimated locally),1870.56 per call) prvSampleTimeNow/25 (inlined) (1004246918 (estimated locally),9352.79 per call) uxListRemove/43 (536970861 (estimated locally),5000.94 per call) Indirect call(100424661 (estimated locally),935.28 per call) Indirect call(7486204063 (estimated locally),69720.83 per call) prvInsertTimerInActiveList/26 (prvInsertTimerInActiveList) @05f1a7e0 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxCurrentTimerList/6 (read) Referring: Availability: local Function flags: count:1073741824 (estimated locally) body local optimize_size Called by: prvProcessReceivedCommands/27 (189802709 (estimated locally),1767.68 per call) prvProcessReceivedCommands/27 (200849425 (estimated locally),1870.56 per call) prvReloadTimer/20 (1073741824 (estimated locally),9.09 per call) Calls: vListInsert/44 (357019157 (estimated locally),0.33 per call) prvInsertTimerInActiveList.part.0/57 (inlined) (177167400 (estimated locally),0.16 per call) prvSampleTimeNow/25 (prvSampleTimeNow) @05f1ad20 Type: function definition analyzed Visibility: prevailing_def_ironly previous sharing asm name: 73 References: xLastTime.6551/42 (read)xLastTime.6551/42 (write) Referring: Function prvSampleTimeNow/25 is inline copy in prvTimerTask/22 Availability: local Function flags: count:1004246918 (estimated locally) body local optimize_size Called by: prvProcessReceivedCommands/27 (inlined) (1004246918 (estimated locally),9352.79 per call) Calls: prvSwitchTimerLists/28 (331401483 (estimated locally),3086.42 per call) xTaskGetTickCount/41 (1004246918 (estimated locally),9352.79 per call) prvGetNextExpireTime/24 (prvGetNextExpireTime) @05f1aa80 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxCurrentTimerList/6 (read) Referring: Function prvGetNextExpireTime/24 is inline copy in prvTimerTask/22 Availability: local Function flags: count:1073741824 (estimated locally) body local optimize_size Called by: prvTimerTask/22 (inlined) (1073741824 (estimated locally),10000.02 per call) Calls: prvProcessTimerOrBlockTask/23 (prvProcessTimerOrBlockTask) @05f1a700 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxOverflowTimerList/7 (read)xTimerQueue/8 (read) Referring: Function prvProcessTimerOrBlockTask/23 is inline copy in prvTimerTask/22 Availability: local Function flags: count:1073741824 (estimated locally) body local optimize_size Called by: prvTimerTask/22 (inlined) (1073741824 (estimated locally),10000.02 per call) Calls: xTaskResumeAll/39 (354334802 (estimated locally),3300.01 per call) xTaskResumeAll/39 (600704865 (estimated locally),5594.51 per call) vQueueWaitForMessageRestricted/40 (600704865 (estimated locally),5594.51 per call) prvProcessExpiredTimer/21 (118702158 (estimated locally),1105.50 per call) xTaskResumeAll/39 (118702158 (estimated locally),1105.50 per call) prvSampleTimeNow/73 (inlined) (1073741824 (estimated locally),10000.02 per call) vTaskSuspendAll/38 (1073741824 (estimated locally),10000.02 per call) prvTimerTask/22 (prvTimerTask) @05f1a2a0 Type: function definition analyzed Visibility: prevailing_def_ironly Address is taken. References: Referring: xTimerCreateTimerTask/10 (addr) Availability: available Function flags: count:107374 (estimated locally) body executed_once optimize_size Called by: Calls: prvProcessReceivedCommands/27 (inlined) (1073741824 (estimated locally),10000.02 per call) prvProcessTimerOrBlockTask/23 (inlined) (1073741824 (estimated locally),10000.02 per call) prvGetNextExpireTime/24 (inlined) (1073741824 (estimated locally),10000.02 per call) prvProcessExpiredTimer/21 (prvProcessExpiredTimer) @05f1a000 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxCurrentTimerList/6 (read) Referring: Availability: local Function flags: count:1073741824 (estimated locally) body local optimize_size Called by: prvProcessTimerOrBlockTask/23 (118702158 (estimated locally),1105.50 per call) prvSwitchTimerLists/28 (955630223 (estimated locally),8.09 per call) Calls: prvReloadTimer/20 (354334802 (estimated locally),0.33 per call) uxListRemove/43 (1073741824 (estimated locally),1.00 per call) Indirect call(1073741824 (estimated locally),1.00 per call) prvReloadTimer/20 (prvReloadTimer) @05ec0540 Type: function definition analyzed Visibility: prevailing_def_ironly References: Referring: Availability: local Function flags: count:118111600 (estimated locally) body local optimize_size Called by: prvProcessReceivedCommands/27 (33140147 (estimated locally),308.64 per call) prvProcessExpiredTimer/21 (354334802 (estimated locally),0.33 per call) Calls: prvInsertTimerInActiveList/26 (1073741824 (estimated locally),9.09 per call) Indirect call(955630223 (estimated locally),8.09 per call) of param:0 loaded from aggregate passed by reference at offset 256 (vptr maybe changed) pcTimerGetName/19 (pcTimerGetName) @05ec0ee0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:357913 (estimated locally) body optimize_size Called by: Calls: xTimerGetExpiryTime/18 (xTimerGetExpiryTime) @05ec0b60 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:357913 (estimated locally) body optimize_size Called by: Calls: uxTimerGetReloadMode/17 (uxTimerGetReloadMode) @05ec07e0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:230763 (estimated locally) body optimize_size Called by: Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call) vTimerSetReloadMode/16 (vTimerSetReloadMode) @05ec0460 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:230763 (estimated locally) body optimize_size Called by: Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call) xTimerGetPeriod/15 (xTimerGetPeriod) @05ec00e0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:357913 (estimated locally) body optimize_size Called by: Calls: xTimerGetTimerDaemonTaskHandle/14 (xTimerGetTimerDaemonTaskHandle) @05f157e0 Type: function definition analyzed Visibility: externally_visible public References: xTimerTaskHandle/9 (read) Referring: Availability: available Function flags: count:357913 (estimated locally) body optimize_size Called by: Calls: xTimerGenericCommand/13 (xTimerGenericCommand) @05f151c0 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read) Referring: Availability: available Function flags: count:357913 (estimated locally) body optimize_size Called by: Calls: xQueueGenericSendFromISR/56 (87689 (estimated locally),0.25 per call) xQueueGenericSend/55 (57875 (estimated locally),0.16 per call) xQueueGenericSend/55 (29814 (estimated locally),0.08 per call) xTaskGetSchedulerState/54 (87689 (estimated locally),0.25 per call) prvInitialiseNewTimer/12 (prvInitialiseNewTimer) @05f15a80 Type: function Body removed by symtab_remove_unreachable_nodes Visibility: prevailing_def_ironly References: Referring: Availability: not_available Function flags: count:160260 (estimated locally) body optimize_size Called by: Calls: xTimerCreate/11 (xTimerCreate) @05f15700 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: count:1073741824 (estimated locally) body optimize_size Called by: Calls: prvInitialiseNewTimer.constprop/72 (inlined) (574129754 (estimated locally),0.53 per call) pvPortMalloc/52 (1073741824 (estimated locally),1.00 per call) xTimerCreateTimerTask/10 (xTimerCreateTimerTask) @05f15460 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read)prvTimerTask/22 (addr)xTimerTaskHandle/9 (addr) Referring: Availability: available Function flags: count:146556 (estimated locally) body optimize_size Called by: Calls: xTaskCreate/37 (78363 (estimated locally),0.53 per call) prvCheckForValidListAndQueue/29 (146556 (estimated locally),1.00 per call) xTimerTaskHandle/9 (xTimerTaskHandle) @05f0f678 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: xTimerCreateTimerTask/10 (addr)xTimerGetTimerDaemonTaskHandle/14 (read) Availability: available Varpool flags: initialized xTimerQueue/8 (xTimerQueue) @05f0f5e8 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvProcessReceivedCommands/27 (read)xTimerGenericCommand/13 (read)xTimerPendFunctionCallFromISR/33 (read)prvCheckForValidListAndQueue/29 (write)xTimerCreateTimerTask/10 (read)prvCheckForValidListAndQueue/29 (read)prvProcessTimerOrBlockTask/23 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerPendFunctionCall/34 (read) Availability: available Varpool flags: initialized pxOverflowTimerList/7 (pxOverflowTimerList) @05f0f558 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvInsertTimerInActiveList.part.0/57 (read)prvSwitchTimerLists/28 (write)prvProcessTimerOrBlockTask/23 (read)prvSwitchTimerLists/28 (read)prvCheckForValidListAndQueue/29 (write) Availability: available Varpool flags: pxCurrentTimerList/6 (pxCurrentTimerList) @05f0f4c8 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvSwitchTimerLists/28 (write)prvProcessExpiredTimer/21 (read)prvInsertTimerInActiveList/26 (read)prvGetNextExpireTime/24 (read)prvSwitchTimerLists/28 (read)prvCheckForValidListAndQueue/29 (write) Availability: available Varpool flags: xActiveTimerList2/5 (xActiveTimerList2) @05f0f438 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr) Availability: available Varpool flags: xActiveTimerList1/4 (xActiveTimerList1) @05f0f3a8 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr) Availability: available Varpool flags: ;; Function prvCheckForValidListAndQueue (prvCheckForValidListAndQueue, funcdef_no=23, decl_uid=6421, cgraph_uid=24, symbol_order=29) prvCheckForValidListAndQueue () { struct QueueDefinition * xTimerQueue.17_1; struct QueueDefinition * _2; [local count: 1073741824]: # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT xTimerQueue.17_1 = xTimerQueue; if (xTimerQueue.17_1 == 0B) goto ; [17.43%] else goto ; [82.57%] [local count: 187153200]: # DEBUG BEGIN_STMT vListInitialise (&xActiveTimerList1); # DEBUG BEGIN_STMT vListInitialise (&xActiveTimerList2); # DEBUG BEGIN_STMT pxCurrentTimerList = &xActiveTimerList1; # DEBUG BEGIN_STMT pxOverflowTimerList = &xActiveTimerList2; # DEBUG BEGIN_STMT _2 = xQueueGenericCreate (10, 16, 0); xTimerQueue = _2; # DEBUG BEGIN_STMT if (_2 != 0B) goto ; [53.47%] else goto ; [46.53%] [local count: 100070816]: # DEBUG BEGIN_STMT vQueueAddToRegistry (_2, "TmrQ"); [local count: 1073741824]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortExitCritical (); return; } ;; Function prvInsertTimerInActiveList (prvInsertTimerInActiveList, funcdef_no=20, decl_uid=6430, cgraph_uid=21, symbol_order=26) Symbols to be put in SSA form { D.6795 D.6894 } Incremental SSA update started at block: 0 Number of blocks in CFG: 13 Number of blocks to update: 12 ( 92%) Removing basic block 4 Removing basic block 10 Merging blocks 11 and 12 Merging blocks 11 and 9 ;; 1 loops found ;; ;; Loop 0 ;; header 0, latch 1 ;; depth 0, outer -1 ;; nodes: 0 1 2 3 4 5 6 7 8 ;; 2 succs { 3 5 } ;; 3 succs { 8 4 } ;; 4 succs { 8 } ;; 5 succs { 6 7 } ;; 6 succs { 8 7 } ;; 7 succs { 8 } ;; 8 succs { 1 } prvInsertTimerInActiveList (struct Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime) { BaseType_t D.6894; BaseType_t xProcessTimerNow; long unsigned int _1; long unsigned int _2; struct List_t * pxCurrentTimerList.15_3; struct ListItem_t * _4; struct List_t * pxOverflowTimerList.14_17; struct ListItem_t * _18; [local count: 1073741824]: # DEBUG BEGIN_STMT # DEBUG xProcessTimerNow => 0 # DEBUG BEGIN_STMT pxTimer_8(D)->xTimerListItem.xItemValue = xNextExpiryTime_9(D); # DEBUG BEGIN_STMT pxTimer_8(D)->xTimerListItem.pvOwner = pxTimer_8(D); # DEBUG BEGIN_STMT if (xNextExpiryTime_9(D) <= xTimeNow_12(D)) goto ; [50.00%] else goto ; [50.00%] [local count: 536870913]: # DEBUG BEGIN_STMT _1 = xTimeNow_12(D) - xCommandTime_13(D); _2 = pxTimer_8(D)->xTimerPeriodInTicks; if (_1 >= _2) goto ; [67.00%] else goto ; [33.00%] [local count: 177167401]: # DEBUG D#1 => xNextExpiryTime_9(D) # DEBUG D#2 => xTimeNow_12(D) # DEBUG D#3 => xCommandTime_13(D) # DEBUG pxTimer => pxTimer_8(D) # DEBUG INLINE_ENTRY prvInsertTimerInActiveList # DEBUG D#6 => D#1 # DEBUG xNextExpiryTime => D#6 # DEBUG D#5 => D#2 # DEBUG xTimeNow => D#5 # DEBUG D#4 => D#3 # DEBUG xCommandTime => D#4 # DEBUG BEGIN_STMT pxOverflowTimerList.14_17 = pxOverflowTimerList; _18 = &pxTimer_8(D)->xTimerListItem; vListInsert (pxOverflowTimerList.14_17, _18); # DEBUG xProcessTimerNow => 0 # DEBUG BEGIN_STMT _21 = 0; # DEBUG pxTimer => NULL # DEBUG xProcessTimerNow => NULL # DEBUG xNextExpiryTime => NULL # DEBUG xTimeNow => NULL # DEBUG xCommandTime => NULL xProcessTimerNow_16 = _21; goto ; [100.00%] [local count: 536870913]: # DEBUG BEGIN_STMT if (xTimeNow_12(D) < xCommandTime_13(D)) goto ; [67.00%] else goto ; [33.00%] [local count: 359703511]: if (xNextExpiryTime_9(D) >= xCommandTime_13(D)) goto ; [50.00%] else goto ; [50.00%] [local count: 357019157]: # DEBUG BEGIN_STMT pxCurrentTimerList.15_3 = pxCurrentTimerList; _4 = &pxTimer_8(D)->xTimerListItem; vListInsert (pxCurrentTimerList.15_3, _4); [local count: 1073741824]: # xProcessTimerNow_5 = PHI # DEBUG xProcessTimerNow => xProcessTimerNow_5 # DEBUG BEGIN_STMT return xProcessTimerNow_5; } ;; Function prvReloadTimer (prvReloadTimer, funcdef_no=14, decl_uid=6434, cgraph_uid=15, symbol_order=20) prvReloadTimer (struct Timer_t * const pxTimer, TickType_t xExpiredTime, const TickType_t xTimeNow) { long unsigned int _1; void (*) (struct tmrTimerControl *) _2; long unsigned int _3; long unsigned int _4; long int _5; [local count: 118111600]: # DEBUG BEGIN_STMT goto ; [100.00%] [local count: 955630223]: # DEBUG BEGIN_STMT _1 = pxTimer_10(D)->xTimerPeriodInTicks; xExpiredTime_13 = _1 + xExpiredTime_6; # DEBUG xExpiredTime => xExpiredTime_13 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _2 = pxTimer_10(D)->pxCallbackFunction; _2 (pxTimer_10(D)); [local count: 1073741824]: # xExpiredTime_6 = PHI # DEBUG xExpiredTime => xExpiredTime_6 # DEBUG BEGIN_STMT _3 = pxTimer_10(D)->xTimerPeriodInTicks; _4 = _3 + xExpiredTime_6; _5 = prvInsertTimerInActiveList (pxTimer_10(D), _4, xTimeNow_11(D), xExpiredTime_6); if (_5 != 0) goto ; [89.00%] else goto ; [11.00%] [local count: 118111601]: return; } ;; Function prvProcessExpiredTimer (prvProcessExpiredTimer, funcdef_no=15, decl_uid=6437, cgraph_uid=16, symbol_order=21) prvProcessExpiredTimer (const TickType_t xNextExpireTime, const TickType_t xTimeNow) { struct Timer_t * const pxTimer; struct List_t * pxCurrentTimerList.13_1; struct xLIST_ITEM * _2; struct ListItem_t * _3; unsigned char _4; unsigned char _5; void (*) (struct tmrTimerControl *) _6; unsigned char _16; [local count: 1073741824]: # DEBUG BEGIN_STMT pxCurrentTimerList.13_1 = pxCurrentTimerList; _2 = pxCurrentTimerList.13_1->xListEnd.pxNext; pxTimer_9 = _2->pvOwner; # DEBUG pxTimer => pxTimer_9 # DEBUG BEGIN_STMT _3 = &pxTimer_9->xTimerListItem; uxListRemove (_3); # DEBUG BEGIN_STMT _4 = pxTimer_9->ucStatus; _16 = _4 & 4; if (_16 != 0) goto ; [33.00%] else goto ; [67.00%] [local count: 354334802]: # DEBUG BEGIN_STMT prvReloadTimer (pxTimer_9, xNextExpireTime_12(D), xTimeNow_13(D)); goto ; [100.00%] [local count: 719407023]: # DEBUG BEGIN_STMT _5 = _4 & 254; pxTimer_9->ucStatus = _5; [local count: 1073741824]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _6 = pxTimer_9->pxCallbackFunction; _6 (pxTimer_9); return; } ;; Function prvSwitchTimerLists (prvSwitchTimerLists, funcdef_no=22, decl_uid=6439, cgraph_uid=23, symbol_order=28) prvSwitchTimerLists () { TickType_t xNextExpireTime; struct xLIST_ITEM * _1; struct List_t * pxCurrentTimerList.11_2; long unsigned int _3; struct List_t * pxOverflowTimerList.12_4; struct List_t * pxCurrentTimerList.11_7; [local count: 118111600]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [100.00%] [local count: 955630223]: # DEBUG BEGIN_STMT _1 = pxCurrentTimerList.11_2->xListEnd.pxNext; xNextExpireTime_10 = _1->xItemValue; # DEBUG xNextExpireTime => xNextExpireTime_10 # DEBUG BEGIN_STMT prvProcessExpiredTimer (xNextExpireTime_10, 4294967295); [local count: 1073741824]: # DEBUG BEGIN_STMT pxCurrentTimerList.11_2 = pxCurrentTimerList; _3 ={v} pxCurrentTimerList.11_2->uxNumberOfItems; if (_3 != 0) goto ; [89.00%] else goto ; [11.00%] [local count: 118111601]: # pxCurrentTimerList.11_7 = PHI # DEBUG BEGIN_STMT # DEBUG pxTemp => pxCurrentTimerList.11_7 # DEBUG BEGIN_STMT pxOverflowTimerList.12_4 = pxOverflowTimerList; pxCurrentTimerList = pxOverflowTimerList.12_4; # DEBUG BEGIN_STMT pxOverflowTimerList = pxCurrentTimerList.11_7; return; } ;; Function prvTimerTask (prvTimerTask, funcdef_no=16, decl_uid=6423, cgraph_uid=17, symbol_order=22) (executed once) Symbols to be put in SSA form { D.6802 D.6922 D.6925 D.6928 } Incremental SSA update started at block: 0 Number of blocks in CFG: 62 Number of blocks to update: 61 ( 98%) Merging blocks 3 and 47 Removing basic block 4 Removing basic block 5 Removing basic block 6 Removing basic block 10 Merging blocks 13 and 58 Removing basic block 14 Merging blocks 23 and 24 Removing basic block 34 Merging blocks 51 and 46 Merging blocks 56 and 52 Merging blocks 61 and 57 Merging blocks 51 and 35 Merging blocks 51 and 53 No longer having address taken: xListWasEmpty No longer having address taken: xTimerListsWereSwitched No longer having address taken: xTimerListsWereSwitched Symbols to be put in SSA form { D.6535 D.6906 D.6919 } Incremental SSA update started at block: 0 Number of blocks in CFG: 48 Number of blocks to update: 47 ( 98%) ;; 6 loops found ;; ;; Loop 0 ;; header 0, latch 1 ;; depth 0, outer -1 ;; nodes: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ;; ;; Loop 2 ;; header 38, latch 38 ;; depth 1, outer 0 ;; nodes: 38 ;; ;; Loop 1 ;; header 3, latch 47 ;; depth 1, outer 0 ;; nodes: 3 47 46 23 45 29 44 20 43 30 34 35 39 41 42 40 36 32 33 31 13 17 18 19 10 8 9 7 5 6 4 14 15 16 11 12 27 28 26 24 25 21 22 ;; ;; Loop 3 ;; header 44, latch 43 ;; depth 2, outer 1 ;; nodes: 44 43 30 34 35 39 41 42 40 29 27 28 26 24 25 23 21 22 46 45 36 32 33 31 ;; ;; Loop 4 ;; header 45, latch 29 ;; depth 3, outer 3 ;; nodes: 45 29 27 28 26 24 25 23 21 22 46 ;; ;; Loop 5 ;; header 46, latch 23 ;; depth 4, outer 4 ;; nodes: 46 23 21 22 ;; 2 succs { 3 } ;; 3 succs { 5 4 } ;; 4 succs { 5 } ;; 5 succs { 6 7 } ;; 6 succs { 7 } ;; 7 succs { 8 9 } ;; 8 succs { 10 } ;; 9 succs { 10 } ;; 10 succs { 11 19 } ;; 11 succs { 12 14 } ;; 12 succs { 13 14 } ;; 13 succs { 20 } ;; 14 succs { 15 17 } ;; 15 succs { 17 16 } ;; 16 succs { 17 } ;; 17 succs { 18 20 } ;; 18 succs { 20 } ;; 19 succs { 20 } ;; 20 succs { 44 } ;; 21 succs { 22 23 } ;; 22 succs { 23 } ;; 23 succs { 24 46 } ;; 24 succs { 25 26 } ;; 25 succs { 26 } ;; 26 succs { 27 28 } ;; 27 succs { 29 } ;; 28 succs { 29 } ;; 29 succs { 45 30 35 36 40 } ;; 30 succs { 31 43 } ;; 31 succs { 32 33 } ;; 32 succs { 34 } ;; 33 succs { 34 } ;; 34 succs { 43 } ;; 35 succs { 43 } ;; 36 succs { 37 39 } ;; 37 succs { 38 } ;; 38 succs { 38 } ;; 39 succs { 43 } ;; 40 succs { 41 42 } ;; 41 succs { 43 } ;; 42 succs { 43 } ;; 43 succs { 44 } ;; 44 succs { 45 } ;; 45 succs { 46 } ;; 46 succs { 21 47 } ;; 47 succs { 3 } prvTimerTask (void * pvParameters) { TickType_t xTimeNow; TickType_t D.6928; static TickType_t xLastTime = 0; TickType_t xTimeNow; TickType_t D.6925; static TickType_t xLastTime = 0; TickType_t xNextExpireTime; TickType_t D.6922; TickType_t xTimeNow; BaseType_t xTimerListsWereSwitched; BaseType_t xListWasEmpty; struct DaemonTaskMessage_t xMessage; struct Timer_t * pxTimer; BaseType_t xTimerListsWereSwitched; TickType_t xTimeNow; uint32_t ulNewBASEPRI; BaseType_t xListWasEmpty; TickType_t xNextExpireTime; long int xListWasEmpty.1_1; long int _8; void (*) (void *, uint32_t) _9; void * _10; long unsigned int _11; long int _12; struct xLIST * _14; struct ListItem_t * _15; long int _17; unsigned char _19; unsigned char _20; long unsigned int _21; long unsigned int _22; long unsigned int _23; long int _25; unsigned char _26; unsigned char _27; long unsigned int _28; long unsigned int _29; long unsigned int _30; unsigned char _31; void (*) (struct tmrTimerControl *) _32; unsigned char _34; unsigned char _35; unsigned char _37; unsigned char _38; long unsigned int _39; long unsigned int _42; unsigned char _44; unsigned char _45; unsigned char _46; struct QueueDefinition * xTimerQueue.16_47; long int _48; long int xTimerListsWereSwitched.5_50; struct List_t * pxOverflowTimerList.7_51; long unsigned int _52; struct QueueDefinition * xTimerQueue.8_53; long unsigned int _54; long int _56; struct List_t * pxCurrentTimerList.3_57; long unsigned int _58; long int iftmp.2_59; struct xLIST_ITEM * _60; long unsigned int xLastTime.9_64; long unsigned int xLastTime.9_66; [local count: 107374]: [local count: 10436763]: # DEBUG ulNewBASEPRI => NULL # DEBUG xTimeNow => NULL # DEBUG xTimerListsWereSwitched => NULL # DEBUG pxTimer => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG pxListWasEmpty => &xListWasEmpty # DEBUG INLINE_ENTRY prvGetNextExpireTime # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT pxCurrentTimerList.3_57 = pxCurrentTimerList; _58 ={v} pxCurrentTimerList.3_57->uxNumberOfItems; if (_58 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 5218382]: [local count: 10436763]: # iftmp.2_59 = PHI <1(3), 0(4)> xListWasEmpty_119 = iftmp.2_59; # DEBUG xListWasEmpty => xListWasEmpty_119 # DEBUG BEGIN_STMT if (iftmp.2_59 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 5218382]: # DEBUG BEGIN_STMT _60 = pxCurrentTimerList.3_57->xListEnd.pxNext; xNextExpireTime_61 = _60->xItemValue; # DEBUG xNextExpireTime => xNextExpireTime_61 [local count: 10436763]: # xNextExpireTime_62 = PHI <0(5), xNextExpireTime_61(6)> # DEBUG xNextExpireTime => xNextExpireTime_62 # DEBUG BEGIN_STMT _78 = xNextExpireTime_62; # DEBUG pxListWasEmpty => NULL # DEBUG xNextExpireTime => NULL xNextExpireTime_5 = _78; # DEBUG xNextExpireTime => xNextExpireTime_5 # DEBUG BEGIN_STMT xListWasEmpty.1_1 = xListWasEmpty_119; # DEBUG xNextExpireTime => xNextExpireTime_5 # DEBUG xListWasEmpty => xListWasEmpty.1_1 # DEBUG INLINE_ENTRY prvProcessTimerOrBlockTask # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vTaskSuspendAll (); # DEBUG BEGIN_STMT # DEBUG pxTimerListsWereSwitched => &xTimerListsWereSwitched # DEBUG INLINE_ENTRY prvSampleTimeNow # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimeNow_63 = xTaskGetTickCount (); # DEBUG xTimeNow => xTimeNow_63 # DEBUG BEGIN_STMT xLastTime.9_64 = xLastTime; if (xTimeNow_63 < xLastTime.9_64) goto ; [33.00%] else goto ; [67.00%] [local count: 3444132]: # DEBUG BEGIN_STMT prvSwitchTimerLists (); # DEBUG BEGIN_STMT xTimerListsWereSwitched_121 = 1; # DEBUG xTimerListsWereSwitched => xTimerListsWereSwitched_121 goto ; [100.00%] [local count: 6992631]: # DEBUG BEGIN_STMT xTimerListsWereSwitched_120 = 0; # DEBUG xTimerListsWereSwitched => xTimerListsWereSwitched_120 [local count: 10436763]: # xTimerListsWereSwitched_118 = PHI # DEBUG xTimerListsWereSwitched => xTimerListsWereSwitched_118 # DEBUG BEGIN_STMT xLastTime = xTimeNow_63; # DEBUG BEGIN_STMT _85 = xTimeNow_63; # DEBUG pxTimerListsWereSwitched => NULL # DEBUG xTimeNow => NULL xTimeNow_49 = _85; # DEBUG xTimeNow => xTimeNow_49 # DEBUG BEGIN_STMT xTimerListsWereSwitched.5_50 = xTimerListsWereSwitched_118; if (xTimerListsWereSwitched.5_50 == 0) goto ; [67.00%] else goto ; [33.00%] [local count: 6992631]: # DEBUG BEGIN_STMT if (xListWasEmpty.1_1 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 3496316]: if (xNextExpireTime_5 <= xTimeNow_49) goto ; [33.00%] else goto ; [67.00%] [local count: 1153784]: # DEBUG BEGIN_STMT xTaskResumeAll (); # DEBUG BEGIN_STMT prvProcessExpiredTimer (xNextExpireTime_5, xTimeNow_49); goto ; [100.00%] [local count: 5838847]: # DEBUG BEGIN_STMT if (xListWasEmpty.1_1 != 0) goto ; [50.00%] else goto ; [50.00%] [local count: 2919424]: # DEBUG BEGIN_STMT pxOverflowTimerList.7_51 = pxOverflowTimerList; _52 ={v} pxOverflowTimerList.7_51->uxNumberOfItems; if (_52 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 1459712]: [local count: 5838847]: # xListWasEmpty_55 = PHI # DEBUG xListWasEmpty => xListWasEmpty_55 # DEBUG BEGIN_STMT xTimerQueue.8_53 = xTimerQueue; _54 = xNextExpireTime_5 - xTimeNow_49; vQueueWaitForMessageRestricted (xTimerQueue.8_53, _54, xListWasEmpty_55); # DEBUG BEGIN_STMT _56 = xTaskResumeAll (); if (_56 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 2919424]: # DEBUG BEGIN_STMT MEM[(volatile uint32_t *)3758157060B] ={v} 268435456; # DEBUG BEGIN_STMT __asm__ __volatile__("dsb" : : : "memory"); # DEBUG BEGIN_STMT __asm__ __volatile__("isb"); # DEBUG BEGIN_STMT goto ; [100.00%] [local count: 3444132]: # DEBUG BEGIN_STMT xTaskResumeAll (); [local count: 10436763]: # DEBUG D#10 => {CLOBBER} # DEBUG xTimerListsWereSwitched => D#10 goto ; [100.00%] [local count: 177477686]: # DEBUG BEGIN_STMT _8 = xMessage.xMessageID; if (_8 < 0) goto ; [41.00%] else goto ; [59.00%] [local count: 72765851]: # DEBUG BEGIN_STMT # DEBUG pxCallback => &xMessage.u.xCallbackParameters # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _9 = MEM[(const struct CallbackParameters_t *)&xMessage + 4B].pxCallbackFunction; _10 = MEM[(const struct CallbackParameters_t *)&xMessage + 4B].pvParameter1; _11 = MEM[(const struct CallbackParameters_t *)&xMessage + 4B].ulParameter2; _9 (_10, _11); [local count: 177477686]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _12 = xMessage.xMessageID; if (_12 >= 0) goto ; [5.50%] else goto ; [94.50%] [local count: 9761273]: # DEBUG BEGIN_STMT pxTimer_13 = xMessage.u.xTimerParameters.pxTimer; # DEBUG pxTimer => pxTimer_13 # DEBUG BEGIN_STMT _14 = pxTimer_13->xTimerListItem.pvContainer; if (_14 != 0B) goto ; [53.47%] else goto ; [46.53%] [local count: 5219353]: # DEBUG BEGIN_STMT _15 = &pxTimer_13->xTimerListItem; uxListRemove (_15); [local count: 9761273]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG pxTimerListsWereSwitched => &xTimerListsWereSwitched # DEBUG INLINE_ENTRY prvSampleTimeNow # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimeNow_65 = xTaskGetTickCount (); # DEBUG xTimeNow => xTimeNow_65 # DEBUG BEGIN_STMT xLastTime.9_66 = xLastTime; if (xTimeNow_65 < xLastTime.9_66) goto ; [33.00%] else goto ; [67.00%] [local count: 3221220]: # DEBUG BEGIN_STMT prvSwitchTimerLists (); # DEBUG BEGIN_STMT xTimerListsWereSwitched_125 = 1; # DEBUG xTimerListsWereSwitched => xTimerListsWereSwitched_125 goto ; [100.00%] [local count: 6540053]: # DEBUG BEGIN_STMT xTimerListsWereSwitched_124 = 0; # DEBUG xTimerListsWereSwitched => xTimerListsWereSwitched_124 [local count: 9761273]: # DEBUG BEGIN_STMT xLastTime = xTimeNow_65; # DEBUG BEGIN_STMT _105 = xTimeNow_65; # DEBUG pxTimerListsWereSwitched => NULL # DEBUG xTimeNow => NULL xTimeNow_16 = _105; # DEBUG xTimeNow => xTimeNow_16 # DEBUG BEGIN_STMT _17 = xMessage.xMessageID; switch (_17) [20.00%], case 1 ... 2: [20.00%], case 3: [20.00%], case 4: [20.00%], case 5: [20.00%], case 6 ... 7: [20.00%], case 8: [20.00%], case 9: [20.00%]> [local count: 1952255]: # pxTimer_18 = PHI # xTimeNow_24 = PHI : # DEBUG BEGIN_STMT _19 = pxTimer_18->ucStatus; _20 = _19 | 1; pxTimer_18->ucStatus = _20; # DEBUG BEGIN_STMT _21 = xMessage.u.xTimerParameters.xMessageValue; _22 = pxTimer_18->xTimerPeriodInTicks; _23 = _21 + _22; _25 = prvInsertTimerInActiveList (pxTimer_18, _23, xTimeNow_24, _21); if (_25 != 0) goto ; [50.00%] else goto ; [50.00%] [local count: 976127]: # DEBUG BEGIN_STMT _26 = pxTimer_18->ucStatus; _27 = _26 & 4; if (_27 != 0) goto ; [33.00%] else goto ; [67.00%] [local count: 322122]: # DEBUG BEGIN_STMT _28 = xMessage.u.xTimerParameters.xMessageValue; _29 = pxTimer_18->xTimerPeriodInTicks; _30 = _28 + _29; prvReloadTimer (pxTimer_18, _30, xTimeNow_24); goto ; [100.00%] [local count: 654005]: # DEBUG BEGIN_STMT _31 = _26 & 254; pxTimer_18->ucStatus = _31; [local count: 976127]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _32 = pxTimer_18->pxCallbackFunction; _32 (pxTimer_18); goto ; [100.00%] [local count: 1952255]: # pxTimer_33 = PHI : # DEBUG BEGIN_STMT _34 = pxTimer_33->ucStatus; _35 = _34 & 254; pxTimer_33->ucStatus = _35; # DEBUG BEGIN_STMT goto ; [100.00%] [local count: 1952255]: # pxTimer_36 = PHI # xTimeNow_41 = PHI : # DEBUG BEGIN_STMT _37 = pxTimer_36->ucStatus; _38 = _37 | 1; pxTimer_36->ucStatus = _38; # DEBUG BEGIN_STMT _39 = xMessage.u.xTimerParameters.xMessageValue; pxTimer_36->xTimerPeriodInTicks = _39; # DEBUG BEGIN_STMT if (_39 == 0) goto ; [5.50%] else goto ; [94.50%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_40 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_40 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [100.00%] [local count: 1844881]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _42 = _39 + xTimeNow_41; prvInsertTimerInActiveList (pxTimer_36, _42, xTimeNow_41, xTimeNow_41); # DEBUG BEGIN_STMT goto ; [100.00%] [local count: 1952255]: # pxTimer_43 = PHI : # DEBUG BEGIN_STMT _44 = pxTimer_43->ucStatus; _45 = _44 & 2; if (_45 == 0) goto ; [33.00%] else goto ; [67.00%] [local count: 644244]: # DEBUG BEGIN_STMT vPortFree (pxTimer_43); goto ; [100.00%] [local count: 1308011]: # DEBUG BEGIN_STMT _46 = _44 & 254; pxTimer_43->ucStatus = _46; [local count: 7701644]: [local count: 18138407]: # DEBUG xNextExpireTime => NULL # DEBUG xListWasEmpty => NULL # DEBUG xTimerListsWereSwitched => NULL # DEBUG xTimeNow => NULL [local count: 20090662]: : [local count: 187807075]: # DEBUG BEGIN_STMT xTimerQueue.16_47 = xTimerQueue; _48 = xQueueReceive (xTimerQueue.16_47, &xMessage, 0); if (_48 != 0) goto ; [94.50%] else goto ; [5.50%] [local count: 10329389]: xMessage ={v} {CLOBBER}; # DEBUG D#11 => {CLOBBER} # DEBUG xTimerListsWereSwitched => D#11 goto ; [100.00%] } ;; Function xTimerCreateTimerTask (xTimerCreateTimerTask, funcdef_no=4, decl_uid=6377, cgraph_uid=5, symbol_order=10) xTimerCreateTimerTask () { uint32_t ulNewBASEPRI; BaseType_t xReturn; struct QueueDefinition * xTimerQueue.0_1; [local count: 146556]: # DEBUG BEGIN_STMT # DEBUG xReturn => 0 # DEBUG BEGIN_STMT prvCheckForValidListAndQueue (); # DEBUG BEGIN_STMT xTimerQueue.0_1 = xTimerQueue; if (xTimerQueue.0_1 != 0B) goto ; [53.47%] else goto ; [46.53%] [local count: 78363]: # DEBUG BEGIN_STMT xReturn_5 = xTaskCreate (prvTimerTask, "Tmr Svc", 180, 0B, 2, &xTimerTaskHandle); # DEBUG xReturn => xReturn_5 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xReturn_5 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 107374]: # DEBUG xReturn => NULL # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_7 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_7 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 39182]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT return xReturn_5; } ;; Function xTimerCreate (xTimerCreate, funcdef_no=5, decl_uid=6345, cgraph_uid=6, symbol_order=11) Symbols to be put in SSA form { D.6806 } Incremental SSA update started at block: 0 Number of blocks in CFG: 14 Number of blocks to update: 13 ( 93%) Merging blocks 3 and 6 Removing basic block 5 Merging blocks 9 and 10 Merging blocks 3 and 7 ;; 2 loops found ;; ;; Loop 0 ;; header 0, latch 1 ;; depth 0, outer -1 ;; nodes: 0 1 2 3 4 5 6 7 8 9 ;; ;; Loop 1 ;; header 5, latch 5 ;; depth 1, outer 0 ;; nodes: 5 ;; 2 succs { 3 9 } ;; 3 succs { 4 6 } ;; 4 succs { 5 } ;; 5 succs { 5 } ;; 6 succs { 7 8 } ;; 7 succs { 8 } ;; 8 succs { 9 } ;; 9 succs { 1 } xTimerCreate (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction) { uint32_t ulNewBASEPRI; struct Timer_t * pxNewTimer; struct ListItem_t * _13; unsigned char _14; unsigned char _15; [local count: 299719]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT pxNewTimer_4 = pvPortMalloc (44); # DEBUG pxNewTimer => pxNewTimer_4 # DEBUG BEGIN_STMT if (pxNewTimer_4 != 0B) goto ; [53.47%] else goto ; [46.53%] [local count: 160260]: # DEBUG BEGIN_STMT pxNewTimer_4->ucStatus = 0; # DEBUG BEGIN_STMT # DEBUG pcTimerName => pcTimerName_6(D) # DEBUG xTimerPeriodInTicks => xTimerPeriodInTicks_7(D) # DEBUG uxAutoReload => uxAutoReload_8(D) # DEBUG pvTimerID => pvTimerID_9(D) # DEBUG pxCallbackFunction => pxCallbackFunction_10(D) # DEBUG pxNewTimer => pxNewTimer_4 # DEBUG INLINE_ENTRY prvInitialiseNewTimer # DEBUG BEGIN_STMT if (xTimerPeriodInTicks_7(D) == 0) goto ; [67.00%] else goto ; [33.00%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_12 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_12 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [100.00%] [local count: 52886]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT prvCheckForValidListAndQueue (); # DEBUG BEGIN_STMT pxNewTimer_4->pcTimerName = pcTimerName_6(D); # DEBUG BEGIN_STMT pxNewTimer_4->xTimerPeriodInTicks = xTimerPeriodInTicks_7(D); # DEBUG BEGIN_STMT pxNewTimer_4->pvTimerID = pvTimerID_9(D); # DEBUG BEGIN_STMT pxNewTimer_4->pxCallbackFunction = pxCallbackFunction_10(D); # DEBUG BEGIN_STMT _13 = &pxNewTimer_4->xTimerListItem; vListInitialiseItem (_13); # DEBUG BEGIN_STMT if (uxAutoReload_8(D) != 0) goto ; [50.00%] else goto ; [50.00%] [local count: 26443]: # DEBUG BEGIN_STMT _14 = pxNewTimer_4->ucStatus; _15 = _14 | 4; pxNewTimer_4->ucStatus = _15; [local count: 52886]: # DEBUG BEGIN_STMT [local count: 192345]: # DEBUG pcTimerName => NULL # DEBUG xTimerPeriodInTicks => NULL # DEBUG uxAutoReload => NULL # DEBUG pvTimerID => NULL # DEBUG pxCallbackFunction => NULL # DEBUG pxNewTimer => NULL # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT return pxNewTimer_4; } ;; Function xTimerGenericCommand (xTimerGenericCommand, funcdef_no=7, decl_uid=6383, cgraph_uid=8, symbol_order=13) xTimerGenericCommand (struct tmrTimerControl * xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait) { uint32_t ulNewBASEPRI; struct DaemonTaskMessage_t xMessage; BaseType_t xReturn; struct QueueDefinition * xTimerQueue.20_1; long int _2; struct QueueDefinition * xTimerQueue.21_3; struct QueueDefinition * xTimerQueue.22_4; [local count: 357913]: # DEBUG BEGIN_STMT # DEBUG xReturn => 0 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer_7(D) == 0B) goto ; [30.00%] else goto ; [70.00%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_24 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_24 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 250539]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimerQueue.20_1 = xTimerQueue; if (xTimerQueue.20_1 != 0B) goto ; [70.00%] else goto ; [30.00%] [local count: 175378]: # DEBUG BEGIN_STMT xMessage.xMessageID = xCommandID_9(D); # DEBUG BEGIN_STMT xMessage.u.xTimerParameters.xMessageValue = xOptionalValue_11(D); # DEBUG BEGIN_STMT xMessage.u.xTimerParameters.pxTimer = xTimer_7(D); # DEBUG BEGIN_STMT if (xCommandID_9(D) <= 5) goto ; [50.00%] else goto ; [50.00%] [local count: 87689]: # DEBUG BEGIN_STMT _2 = xTaskGetSchedulerState (); if (_2 == 2) goto ; [34.00%] else goto ; [66.00%] [local count: 29814]: # DEBUG BEGIN_STMT xTimerQueue.21_3 = xTimerQueue; xReturn_22 = xQueueGenericSend (xTimerQueue.21_3, &xMessage, xTicksToWait_20(D), 0); # DEBUG xReturn => xReturn_22 goto ; [100.00%] [local count: 57875]: # DEBUG BEGIN_STMT xTimerQueue.22_4 = xTimerQueue; xReturn_19 = xQueueGenericSend (xTimerQueue.22_4, &xMessage, 0, 0); # DEBUG xReturn => xReturn_19 goto ; [100.00%] [local count: 87689]: # DEBUG BEGIN_STMT xReturn_16 = xQueueGenericSendFromISR (xTimerQueue.20_1, &xMessage, pxHigherPriorityTaskWoken_14(D), 0); # DEBUG xReturn => xReturn_16 [local count: 250539]: # xReturn_5 = PHI <0(5), xReturn_16(10), xReturn_19(9), xReturn_22(8)> # DEBUG xReturn => xReturn_5 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xMessage ={v} {CLOBBER}; return xReturn_5; } ;; Function xTimerGetTimerDaemonTaskHandle (xTimerGetTimerDaemonTaskHandle, funcdef_no=8, decl_uid=6354, cgraph_uid=9, symbol_order=14) xTimerGetTimerDaemonTaskHandle () { uint32_t ulNewBASEPRI; struct tskTaskControlBlock * xTimerTaskHandle.24_1; [local count: 357913]: # DEBUG BEGIN_STMT xTimerTaskHandle.24_1 = xTimerTaskHandle; if (xTimerTaskHandle.24_1 == 0B) goto ; [30.00%] else goto ; [70.00%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_3 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_3 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 250539]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT return xTimerTaskHandle.24_1; } ;; Function xTimerGetPeriod (xTimerGetPeriod, funcdef_no=9, decl_uid=6373, cgraph_uid=10, symbol_order=15) xTimerGetPeriod (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; TickType_t _3; [local count: 357913]: # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_1(D) # DEBUG BEGIN_STMT if (xTimer_1(D) == 0B) goto ; [30.00%] else goto ; [70.00%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_4 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_4 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 250539]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _3 = MEM[(struct Timer_t *)xTimer_1(D)].xTimerPeriodInTicks; return _3; } ;; Function vTimerSetReloadMode (vTimerSetReloadMode, funcdef_no=10, decl_uid=6369, cgraph_uid=11, symbol_order=16) vTimerSetReloadMode (struct tmrTimerControl * xTimer, const UBaseType_t uxAutoReload) { uint32_t ulNewBASEPRI; unsigned char _1; unsigned char _2; unsigned char _3; unsigned char _4; [local count: 230763]: # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_6(D) # DEBUG BEGIN_STMT if (xTimer_6(D) == 0B) goto ; [46.53%] else goto ; [53.47%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_13 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_13 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 123389]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT if (uxAutoReload_9(D) != 0) goto ; [50.00%] else goto ; [50.00%] [local count: 61694]: # DEBUG BEGIN_STMT _1 = MEM[(struct Timer_t *)xTimer_6(D)].ucStatus; _2 = _1 | 4; MEM[(struct Timer_t *)xTimer_6(D)].ucStatus = _2; goto ; [100.00%] [local count: 61694]: # DEBUG BEGIN_STMT _3 = MEM[(struct Timer_t *)xTimer_6(D)].ucStatus; _4 = _3 & 251; MEM[(struct Timer_t *)xTimer_6(D)].ucStatus = _4; [local count: 123389]: # DEBUG BEGIN_STMT vPortExitCritical (); return; } ;; Function uxTimerGetReloadMode (uxTimerGetReloadMode, funcdef_no=11, decl_uid=6371, cgraph_uid=12, symbol_order=17) uxTimerGetReloadMode (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; UBaseType_t uxReturn; unsigned char _1; unsigned char _4; [local count: 230763]: # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_3(D) # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer_3(D) == 0B) goto ; [46.53%] else goto ; [53.47%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_8 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 123389]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT _1 = MEM[(struct Timer_t *)xTimer_3(D)].ucStatus; _4 = _1 & 4; if (_4 == 0) goto ; [50.00%] else goto ; [50.00%] [local count: 61694]: # DEBUG BEGIN_STMT # DEBUG uxReturn => 1 [local count: 123389]: # uxReturn_2 = PHI <0(5), 1(6)> # DEBUG uxReturn => uxReturn_2 # DEBUG BEGIN_STMT vPortExitCritical (); # DEBUG BEGIN_STMT return uxReturn_2; } ;; Function xTimerGetExpiryTime (xTimerGetExpiryTime, funcdef_no=12, decl_uid=6375, cgraph_uid=13, symbol_order=18) xTimerGetExpiryTime (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; TickType_t xReturn; [local count: 357913]: # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_1(D) # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer_1(D) == 0B) goto ; [30.00%] else goto ; [70.00%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_4 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_4 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 250539]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xReturn_3 = MEM[(struct Timer_t *)xTimer_1(D)].xTimerListItem.xItemValue; # DEBUG xReturn => xReturn_3 # DEBUG BEGIN_STMT return xReturn_3; } ;; Function pcTimerGetName (pcTimerGetName, funcdef_no=13, decl_uid=6366, cgraph_uid=14, symbol_order=19) pcTimerGetName (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; const char * _3; [local count: 357913]: # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_1(D) # DEBUG BEGIN_STMT if (xTimer_1(D) == 0B) goto ; [30.00%] else goto ; [70.00%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_4 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_4 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 250539]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _3 = MEM[(struct Timer_t *)xTimer_1(D)].pcTimerName; return _3; } ;; Function xTimerIsTimerActive (xTimerIsTimerActive, funcdef_no=24, decl_uid=6352, cgraph_uid=25, symbol_order=30) xTimerIsTimerActive (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; unsigned char _1; long int _2; unsigned char _4; [local count: 230763]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_3(D) # DEBUG BEGIN_STMT if (xTimer_3(D) == 0B) goto ; [46.53%] else goto ; [53.47%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_8 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 123389]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT _1 = MEM[(struct Timer_t *)xTimer_3(D)].ucStatus; _4 = _1 & 1; _2 = (long int) _4; # DEBUG xReturn => _2 # DEBUG BEGIN_STMT vPortExitCritical (); # DEBUG BEGIN_STMT return _2; } ;; Function pvTimerGetTimerID (pvTimerGetTimerID, funcdef_no=25, decl_uid=6347, cgraph_uid=26, symbol_order=31) pvTimerGetTimerID (struct tmrTimerControl * const xTimer) { uint32_t ulNewBASEPRI; void * pvReturn; [local count: 230763]: # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_1(D) # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer_1(D) == 0B) goto ; [46.53%] else goto ; [53.47%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_6 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_6 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 123389]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT pvReturn_4 = MEM[(struct Timer_t *)xTimer_1(D)].pvTimerID; # DEBUG pvReturn => pvReturn_4 # DEBUG BEGIN_STMT vPortExitCritical (); # DEBUG BEGIN_STMT return pvReturn_4; } ;; Function vTimerSetTimerID (vTimerSetTimerID, funcdef_no=26, decl_uid=6350, cgraph_uid=27, symbol_order=32) vTimerSetTimerID (struct tmrTimerControl * xTimer, void * pvNewID) { uint32_t ulNewBASEPRI; [local count: 230763]: # DEBUG BEGIN_STMT # DEBUG pxTimer => xTimer_1(D) # DEBUG BEGIN_STMT if (xTimer_1(D) == 0B) goto ; [46.53%] else goto ; [53.47%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_7 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_7 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 123389]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT MEM[(struct Timer_t *)xTimer_1(D)].pvTimerID = pvNewID_4(D); # DEBUG BEGIN_STMT vPortExitCritical (); return; } ;; Function xTimerPendFunctionCallFromISR (xTimerPendFunctionCallFromISR, funcdef_no=27, decl_uid=6359, cgraph_uid=28, symbol_order=33) xTimerPendFunctionCallFromISR (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, BaseType_t * pxHigherPriorityTaskWoken) { BaseType_t xReturn; struct DaemonTaskMessage_t xMessage; struct QueueDefinition * xTimerQueue.25_1; [local count: 1073741824]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xMessage.xMessageID = -2; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend_4(D); # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1_6(D); # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2_8(D); # DEBUG BEGIN_STMT xTimerQueue.25_1 = xTimerQueue; xReturn_12 = xQueueGenericSendFromISR (xTimerQueue.25_1, &xMessage, pxHigherPriorityTaskWoken_10(D), 0); # DEBUG xReturn => xReturn_12 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xMessage ={v} {CLOBBER}; return xReturn_12; } ;; Function xTimerPendFunctionCall (xTimerPendFunctionCall, funcdef_no=28, decl_uid=6364, cgraph_uid=29, symbol_order=34) xTimerPendFunctionCall (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait) { uint32_t ulNewBASEPRI; BaseType_t xReturn; struct DaemonTaskMessage_t xMessage; struct QueueDefinition * xTimerQueue.26_1; [local count: 230763]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimerQueue.26_1 = xTimerQueue; if (xTimerQueue.26_1 == 0B) goto ; [46.53%] else goto ; [53.47%] [local count: 107374]: # DEBUG BEGIN_STMT # DEBUG INLINE_ENTRY vPortRaiseBASEPRI # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_14 : "i" 16 : "memory"); # DEBUG ulNewBASEPRI => ulNewBASEPRI_14 [local count: 1073741824]: # DEBUG ulNewBASEPRI => NULL # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT [local count: 1073741824]: goto ; [100.00%] [local count: 123389]: # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xMessage.xMessageID = -1; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend_4(D); # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1_6(D); # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2_8(D); # DEBUG BEGIN_STMT xReturn_12 = xQueueGenericSend (xTimerQueue.26_1, &xMessage, xTicksToWait_10(D), 0); # DEBUG xReturn => xReturn_12 # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xMessage ={v} {CLOBBER}; return xReturn_12; } ;; Function uxTimerGetTimerNumber (uxTimerGetTimerNumber, funcdef_no=29, decl_uid=6388, cgraph_uid=30, symbol_order=35) uxTimerGetTimerNumber (struct tmrTimerControl * xTimer) { UBaseType_t _3; [local count: 1073741824]: # DEBUG BEGIN_STMT _3 = MEM[(struct Timer_t *)xTimer_2(D)].uxTimerNumber; return _3; } ;; Function vTimerSetTimerNumber (vTimerSetTimerNumber, funcdef_no=30, decl_uid=6386, cgraph_uid=31, symbol_order=36) vTimerSetTimerNumber (struct tmrTimerControl * xTimer, UBaseType_t uxTimerNumber) { [local count: 1073741824]: # DEBUG BEGIN_STMT MEM[(struct Timer_t *)xTimer_2(D)].uxTimerNumber = uxTimerNumber_3(D); return; }