Marking local functions: prvCheckForValidListAndQueue prvSwitchTimerLists prvProcessReceivedCommands prvInsertTimerInActiveList prvSampleTimeNow prvGetNextExpireTime prvProcessTimerOrBlockTask prvProcessExpiredTimer prvReloadTimer prvInitialiseNewTimer vPortRaiseBASEPRI Marking externally visible functions: vTimerSetTimerNumber uxTimerGetTimerNumber xTimerPendFunctionCall xTimerPendFunctionCallFromISR vTimerSetTimerID pvTimerGetTimerID xTimerIsTimerActive pcTimerGetName xTimerGetExpiryTime uxTimerGetReloadMode vTimerSetReloadMode xTimerGetPeriod xTimerGetTimerDaemonTaskHandle xTimerGenericCommand xTimerCreate xTimerCreateTimerTask Marking externally visible variables: Reclaiming functions: Reclaiming variables: Clearing address taken flags: Symbol table: xQueueGenericSendFromISR/56 (xQueueGenericSendFromISR) @05f06c40 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerPendFunctionCallFromISR/33 xTimerGenericCommand/13 Calls: xQueueGenericSend/55 (xQueueGenericSend) @05f06b60 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerPendFunctionCall/34 xTimerGenericCommand/13 xTimerGenericCommand/13 Calls: xTaskGetSchedulerState/54 (xTaskGetSchedulerState) @05f06a80 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerGenericCommand/13 Calls: vListInitialiseItem/53 (vListInitialiseItem) @05f068c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvInitialiseNewTimer/12 Calls: pvPortMalloc/52 (pvPortMalloc) @05f06700 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerCreate/11 Calls: vPortExitCritical/51 (vPortExitCritical) @05f06460 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 prvCheckForValidListAndQueue/29 Calls: vQueueAddToRegistry/50 (vQueueAddToRegistry) @05f06380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvCheckForValidListAndQueue/29 Calls: xQueueGenericCreate/49 (xQueueGenericCreate) @05f062a0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvCheckForValidListAndQueue/29 Calls: vListInitialise/48 (vListInitialise) @05f060e0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvCheckForValidListAndQueue/29 prvCheckForValidListAndQueue/29 Calls: vPortEnterCritical/47 (vPortEnterCritical) @05f06000 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 prvCheckForValidListAndQueue/29 Calls: xQueueReceive/46 (xQueueReceive) @05ed9e00 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessReceivedCommands/27 Calls: vPortFree/45 (vPortFree) @05ed9d20 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessReceivedCommands/27 Calls: vListInsert/44 (vListInsert) @05ed99a0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvInsertTimerInActiveList/26 prvInsertTimerInActiveList/26 Calls: uxListRemove/43 (uxListRemove) @05ed9700 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21 Calls: xLastTime.6551/42 (xLastTime) @05ef6120 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvSampleTimeNow/25 (read)prvSampleTimeNow/25 (write) Availability: available Varpool flags: initialized xTaskGetTickCount/41 (xTaskGetTickCount) @05ed9380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvSampleTimeNow/25 Calls: vQueueWaitForMessageRestricted/40 (vQueueWaitForMessageRestricted) @05ed91c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessTimerOrBlockTask/23 Calls: xTaskResumeAll/39 (xTaskResumeAll) @05ed90e0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23 Calls: vTaskSuspendAll/38 (vTaskSuspendAll) @05ed9000 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: prvProcessTimerOrBlockTask/23 Calls: xTaskCreate/37 (xTaskCreate) @05ecdee0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: optimize_size Called by: xTimerCreateTimerTask/10 Calls: vTimerSetTimerNumber/36 (vTimerSetTimerNumber) @05ecda80 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: uxTimerGetTimerNumber/35 (uxTimerGetTimerNumber) @05ecd7e0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: xTimerPendFunctionCall/34 (xTimerPendFunctionCall) @05ecd540 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read)xTimerQueue/8 (read) Referring: Availability: available Function flags: body optimize_size Called by: Calls: xQueueGenericSend/55 vPortRaiseBASEPRI/1 xTimerPendFunctionCallFromISR/33 (xTimerPendFunctionCallFromISR) @05ecd0e0 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read) Referring: Availability: available Function flags: body optimize_size Called by: Calls: xQueueGenericSendFromISR/56 vTimerSetTimerID/32 (vTimerSetTimerID) @05ec78c0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1 pvTimerGetTimerID/31 (pvTimerGetTimerID) @05ec7ee0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1 xTimerIsTimerActive/30 (xTimerIsTimerActive) @05ec7b60 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1 prvCheckForValidListAndQueue/29 (prvCheckForValidListAndQueue) @05ec77e0 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)xTimerQueue/8 (read)xTimerQueue/8 (read) Referring: Availability: local Function flags: body local optimize_size Called by: prvInitialiseNewTimer/12 xTimerCreateTimerTask/10 Calls: vPortExitCritical/51 vQueueAddToRegistry/50 xQueueGenericCreate/49 vListInitialise/48 vListInitialise/48 vPortEnterCritical/47 prvSwitchTimerLists/28 (prvSwitchTimerLists) @05ec7460 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (write)pxOverflowTimerList/7 (write) Referring: Availability: local Function flags: body local optimize_size Called by: prvSampleTimeNow/25 Calls: prvProcessExpiredTimer/21 prvProcessReceivedCommands/27 (prvProcessReceivedCommands) @05ec70e0 Type: function definition analyzed Visibility: prevailing_def_ironly References: xTimerQueue/8 (read) Referring: Availability: local Function flags: body local optimize_size Called by: prvTimerTask/22 Calls: xQueueReceive/46 vPortFree/45 prvInsertTimerInActiveList/26 vPortRaiseBASEPRI/1 prvReloadTimer/20 prvInsertTimerInActiveList/26 prvSampleTimeNow/25 uxListRemove/43 vPortRaiseBASEPRI/1 Indirect call Indirect call prvInsertTimerInActiveList/26 (prvInsertTimerInActiveList) @05ebb7e0 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (read) Referring: Availability: local Function flags: body local optimize_size Called by: prvProcessReceivedCommands/27 prvProcessReceivedCommands/27 prvReloadTimer/20 Calls: vListInsert/44 vListInsert/44 prvSampleTimeNow/25 (prvSampleTimeNow) @05ebbd20 Type: function definition analyzed Visibility: prevailing_def_ironly References: xLastTime.6551/42 (read)xLastTime.6551/42 (write) Referring: Availability: local Function flags: body local optimize_size Called by: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23 Calls: prvSwitchTimerLists/28 xTaskGetTickCount/41 prvGetNextExpireTime/24 (prvGetNextExpireTime) @05ebba80 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read) Referring: Availability: local Function flags: body local optimize_size Called by: prvTimerTask/22 Calls: prvProcessTimerOrBlockTask/23 (prvProcessTimerOrBlockTask) @05ebb700 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxOverflowTimerList/7 (read)xTimerQueue/8 (read) Referring: Availability: local Function flags: body local optimize_size Called by: prvTimerTask/22 Calls: xTaskResumeAll/39 xTaskResumeAll/39 vQueueWaitForMessageRestricted/40 prvProcessExpiredTimer/21 xTaskResumeAll/39 prvSampleTimeNow/25 vTaskSuspendAll/38 prvTimerTask/22 (prvTimerTask) @05ebb2a0 Type: function definition analyzed Visibility: prevailing_def_ironly Address is taken. References: Referring: xTimerCreateTimerTask/10 (addr) Availability: available Function flags: body optimize_size Called by: Calls: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23 prvGetNextExpireTime/24 prvProcessExpiredTimer/21 (prvProcessExpiredTimer) @05ebb000 Type: function definition analyzed Visibility: prevailing_def_ironly References: pxCurrentTimerList/6 (read) Referring: Availability: local Function flags: body local optimize_size Called by: prvSwitchTimerLists/28 prvProcessTimerOrBlockTask/23 Calls: prvReloadTimer/20 uxListRemove/43 Indirect call prvReloadTimer/20 (prvReloadTimer) @05e60540 Type: function definition analyzed Visibility: prevailing_def_ironly References: Referring: Availability: local Function flags: body local optimize_size Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21 Calls: prvInsertTimerInActiveList/26 Indirect call pcTimerGetName/19 (pcTimerGetName) @05e60ee0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortRaiseBASEPRI/1 xTimerGetExpiryTime/18 (xTimerGetExpiryTime) @05e60b60 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortRaiseBASEPRI/1 uxTimerGetReloadMode/17 (uxTimerGetReloadMode) @05e607e0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1 vTimerSetReloadMode/16 (vTimerSetReloadMode) @05e60460 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1 xTimerGetPeriod/15 (xTimerGetPeriod) @05e600e0 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortRaiseBASEPRI/1 xTimerGetTimerDaemonTaskHandle/14 (xTimerGetTimerDaemonTaskHandle) @05eb67e0 Type: function definition analyzed Visibility: externally_visible public References: xTimerTaskHandle/9 (read)xTimerTaskHandle/9 (read) Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortRaiseBASEPRI/1 xTimerGenericCommand/13 (xTimerGenericCommand) @05eb61c0 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read) Referring: Availability: available Function flags: body optimize_size Called by: Calls: xQueueGenericSendFromISR/56 xQueueGenericSend/55 xQueueGenericSend/55 xTaskGetSchedulerState/54 vPortRaiseBASEPRI/1 prvInitialiseNewTimer/12 (prvInitialiseNewTimer) @05eb6a80 Type: function definition analyzed Visibility: prevailing_def_ironly References: Referring: Availability: local Function flags: body local optimize_size Called by: xTimerCreate/11 Calls: vListInitialiseItem/53 prvCheckForValidListAndQueue/29 vPortRaiseBASEPRI/1 xTimerCreate/11 (xTimerCreate) @05eb6700 Type: function definition analyzed Visibility: externally_visible public References: Referring: Availability: available Function flags: body optimize_size Called by: Calls: prvInitialiseNewTimer/12 pvPortMalloc/52 xTimerCreateTimerTask/10 (xTimerCreateTimerTask) @05eb6460 Type: function definition analyzed Visibility: externally_visible public References: xTimerQueue/8 (read)prvTimerTask/22 (addr)xTimerTaskHandle/9 (addr) Referring: Availability: available Function flags: body optimize_size Called by: Calls: vPortRaiseBASEPRI/1 xTaskCreate/37 prvCheckForValidListAndQueue/29 xTimerTaskHandle/9 (xTimerTaskHandle) @05eb0678 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: xTimerCreateTimerTask/10 (addr)xTimerGetTimerDaemonTaskHandle/14 (read)xTimerGetTimerDaemonTaskHandle/14 (read) Availability: available Varpool flags: initialized xTimerQueue/8 (xTimerQueue) @05eb05e8 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: xTimerCreateTimerTask/10 (read)prvProcessTimerOrBlockTask/23 (read)prvProcessReceivedCommands/27 (read)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (write)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerPendFunctionCallFromISR/33 (read)xTimerPendFunctionCall/34 (read)xTimerPendFunctionCall/34 (read) Availability: available Varpool flags: initialized pxOverflowTimerList/7 (pxOverflowTimerList) @05eb0558 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvProcessTimerOrBlockTask/23 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (write)prvInsertTimerInActiveList/26 (read)prvCheckForValidListAndQueue/29 (write) Availability: available Varpool flags: pxCurrentTimerList/6 (pxCurrentTimerList) @05eb04c8 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvGetNextExpireTime/24 (read)prvGetNextExpireTime/24 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (write)prvProcessExpiredTimer/21 (read)prvInsertTimerInActiveList/26 (read)prvCheckForValidListAndQueue/29 (write) Availability: available Varpool flags: xActiveTimerList2/5 (xActiveTimerList2) @05eb0438 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr) Availability: available Varpool flags: xActiveTimerList1/4 (xActiveTimerList1) @05eb03a8 Type: variable definition analyzed Visibility: prevailing_def_ironly References: Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr) Availability: available Varpool flags: vPortRaiseBASEPRI/1 (vPortRaiseBASEPRI) @05dfbd20 Type: function definition analyzed Visibility: prevailing_def_ironly References: Referring: Availability: local Function flags: body local optimize_size Called by: xTimerPendFunctionCall/34 vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 pcTimerGetName/19 xTimerGetExpiryTime/18 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 xTimerGetPeriod/15 xTimerGetTimerDaemonTaskHandle/14 xTimerGenericCommand/13 prvInitialiseNewTimer/12 prvProcessReceivedCommands/27 prvProcessReceivedCommands/27 xTimerCreateTimerTask/10 Calls: vTimerSetTimerNumber (struct tmrTimerControl * xTimer, UBaseType_t uxTimerNumber) { : # DEBUG BEGIN_STMT MEM[(struct Timer_t *)xTimer].uxTimerNumber = uxTimerNumber; return; } uxTimerGetTimerNumber (struct tmrTimerControl * xTimer) { UBaseType_t D.6791; : # DEBUG BEGIN_STMT D.6791 = MEM[(struct Timer_t *)xTimer].uxTimerNumber; return D.6791; } xTimerPendFunctionCall (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait) { BaseType_t xReturn; struct DaemonTaskMessage_t xMessage; BaseType_t D.6788; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimerQueue.26_1 = xTimerQueue; if (xTimerQueue.26_1 == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xMessage.xMessageID = -1; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2; # DEBUG BEGIN_STMT xTimerQueue.27_2 = xTimerQueue; xReturn = xQueueGenericSend (xTimerQueue.27_2, &xMessage, xTicksToWait, 0); # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT D.6788 = xReturn; xMessage = {CLOBBER}; return D.6788; } xTimerPendFunctionCallFromISR (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, BaseType_t * pxHigherPriorityTaskWoken) { BaseType_t xReturn; struct DaemonTaskMessage_t xMessage; BaseType_t D.6783; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xMessage.xMessageID = -2; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1; # DEBUG BEGIN_STMT xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2; # DEBUG BEGIN_STMT xTimerQueue.25_1 = xTimerQueue; xReturn = xQueueGenericSendFromISR (xTimerQueue.25_1, &xMessage, pxHigherPriorityTaskWoken, 0); # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT D.6783 = xReturn; xMessage = {CLOBBER}; return D.6783; } vTimerSetTimerID (struct tmrTimerControl * xTimer, void * pvNewID) { struct Timer_t * const pxTimer; : # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT pxTimer->pvTimerID = pvNewID; # DEBUG BEGIN_STMT vPortExitCritical (); return; } pvTimerGetTimerID (struct tmrTimerControl * const xTimer) { void * pvReturn; struct Timer_t * const pxTimer; void * D.6779; : # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT pvReturn = pxTimer->pvTimerID; # DEBUG BEGIN_STMT vPortExitCritical (); # DEBUG BEGIN_STMT D.6779 = pvReturn; return D.6779; } xTimerIsTimerActive (struct tmrTimerControl * xTimer) { struct Timer_t * pxTimer; BaseType_t xReturn; BaseType_t D.6775; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT _1 = pxTimer->ucStatus; _2 = (int) _1; _3 = _2 & 1; if (_3 == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xReturn = 0; goto ; [INV] : # DEBUG BEGIN_STMT xReturn = 1; : # DEBUG BEGIN_STMT vPortExitCritical (); # DEBUG BEGIN_STMT D.6775 = xReturn; return D.6775; } prvCheckForValidListAndQueue () { : # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT xTimerQueue.17_1 = xTimerQueue; if (xTimerQueue.17_1 == 0B) goto ; [INV] else goto ; [INV] : # 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 xTimerQueue.18_3 = xTimerQueue; if (xTimerQueue.18_3 != 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xTimerQueue.19_4 = xTimerQueue; vQueueAddToRegistry (xTimerQueue.19_4, "TmrQ"); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortExitCritical (); return; } prvSwitchTimerLists () { struct List_t * pxTemp; TickType_t xNextExpireTime; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT pxCurrentTimerList.10_1 = pxCurrentTimerList; _2 = pxCurrentTimerList.10_1->xListEnd.pxNext; xNextExpireTime = _2->xItemValue; # DEBUG BEGIN_STMT prvProcessExpiredTimer (xNextExpireTime, 4294967295); : # DEBUG BEGIN_STMT pxCurrentTimerList.11_3 = pxCurrentTimerList; _4 = pxCurrentTimerList.11_3->uxNumberOfItems; if (_4 != 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT pxTemp = pxCurrentTimerList; # DEBUG BEGIN_STMT pxOverflowTimerList.12_5 = pxOverflowTimerList; pxCurrentTimerList = pxOverflowTimerList.12_5; # DEBUG BEGIN_STMT pxOverflowTimerList = pxTemp; return; } prvProcessReceivedCommands () { const struct CallbackParameters_t * const pxCallback; TickType_t xTimeNow; BaseType_t xTimerListsWereSwitched; struct Timer_t * pxTimer; struct DaemonTaskMessage_t xMessage; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT _1 = xMessage.xMessageID; if (_1 < 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT pxCallback = &xMessage.u.xCallbackParameters; # DEBUG BEGIN_STMT if (pxCallback == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _2 = pxCallback->pxCallbackFunction; _3 = pxCallback->pvParameter1; _4 = pxCallback->ulParameter2; _2 (_3, _4); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _5 = xMessage.xMessageID; if (_5 >= 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT pxTimer = xMessage.u.xTimerParameters.pxTimer; # DEBUG BEGIN_STMT _6 = pxTimer->xTimerListItem.pvContainer; if (_6 != 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _7 = &pxTimer->xTimerListItem; uxListRemove (_7); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimeNow = prvSampleTimeNow (&xTimerListsWereSwitched); # DEBUG BEGIN_STMT _8 = xMessage.xMessageID; switch (_8) [INV], case 1 ... 2: [INV], case 3: [INV], case 4: [INV], case 5: [INV], case 6 ... 7: [INV], case 8: [INV], case 9: [INV]> : : # DEBUG BEGIN_STMT _9 = pxTimer->ucStatus; _10 = _9 | 1; pxTimer->ucStatus = _10; # DEBUG BEGIN_STMT _11 = xMessage.u.xTimerParameters.xMessageValue; _12 = pxTimer->xTimerPeriodInTicks; _13 = _11 + _12; _14 = xMessage.u.xTimerParameters.xMessageValue; _15 = prvInsertTimerInActiveList (pxTimer, _13, xTimeNow, _14); if (_15 != 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _16 = pxTimer->ucStatus; _17 = (int) _16; _18 = _17 & 4; if (_18 != 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _19 = xMessage.u.xTimerParameters.xMessageValue; _20 = pxTimer->xTimerPeriodInTicks; _21 = _19 + _20; prvReloadTimer (pxTimer, _21, xTimeNow); goto ; [INV] : # DEBUG BEGIN_STMT _22 = pxTimer->ucStatus; _23 = _22 & 254; pxTimer->ucStatus = _23; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _24 = pxTimer->pxCallbackFunction; _24 (pxTimer); goto ; [INV] : : # DEBUG BEGIN_STMT _25 = pxTimer->ucStatus; _26 = _25 & 254; pxTimer->ucStatus = _26; # DEBUG BEGIN_STMT goto ; [INV] : : # DEBUG BEGIN_STMT _27 = pxTimer->ucStatus; _28 = _27 | 1; pxTimer->ucStatus = _28; # DEBUG BEGIN_STMT _29 = xMessage.u.xTimerParameters.xMessageValue; pxTimer->xTimerPeriodInTicks = _29; # DEBUG BEGIN_STMT _30 = pxTimer->xTimerPeriodInTicks; if (_30 == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _31 = pxTimer->xTimerPeriodInTicks; _32 = xTimeNow + _31; prvInsertTimerInActiveList (pxTimer, _32, xTimeNow, xTimeNow); # DEBUG BEGIN_STMT goto ; [INV] : : # DEBUG BEGIN_STMT _33 = pxTimer->ucStatus; _34 = (int) _33; _35 = _34 & 2; if (_35 == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortFree (pxTimer); goto ; [INV] : # DEBUG BEGIN_STMT _36 = pxTimer->ucStatus; _37 = _36 & 254; pxTimer->ucStatus = _37; : : # DEBUG BEGIN_STMT xTimerQueue.16_38 = xTimerQueue; _39 = xQueueReceive (xTimerQueue.16_38, &xMessage, 0); if (_39 != 0) goto ; [INV] else goto ; [INV] : xMessage = {CLOBBER}; xTimerListsWereSwitched = {CLOBBER}; return; } prvInsertTimerInActiveList (struct Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime) { BaseType_t xProcessTimerNow; BaseType_t D.6690; : # DEBUG BEGIN_STMT xProcessTimerNow = 0; # DEBUG BEGIN_STMT pxTimer->xTimerListItem.xItemValue = xNextExpiryTime; # DEBUG BEGIN_STMT pxTimer->xTimerListItem.pvOwner = pxTimer; # DEBUG BEGIN_STMT if (xNextExpiryTime <= xTimeNow) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _1 = xTimeNow - xCommandTime; _2 = pxTimer->xTimerPeriodInTicks; if (_1 >= _2) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xProcessTimerNow = 1; goto ; [INV] : # DEBUG BEGIN_STMT pxOverflowTimerList.14_3 = pxOverflowTimerList; _4 = &pxTimer->xTimerListItem; vListInsert (pxOverflowTimerList.14_3, _4); goto ; [INV] : # DEBUG BEGIN_STMT if (xTimeNow < xCommandTime) goto ; [INV] else goto ; [INV] : if (xNextExpiryTime >= xCommandTime) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xProcessTimerNow = 1; goto ; [INV] : # DEBUG BEGIN_STMT pxCurrentTimerList.15_5 = pxCurrentTimerList; _6 = &pxTimer->xTimerListItem; vListInsert (pxCurrentTimerList.15_5, _6); : # DEBUG BEGIN_STMT D.6690 = xProcessTimerNow; return D.6690; } prvSampleTimeNow (BaseType_t * const pxTimerListsWereSwitched) { static TickType_t xLastTime = 0; TickType_t xTimeNow; TickType_t D.6675; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimeNow = xTaskGetTickCount (); # DEBUG BEGIN_STMT xLastTime.9_1 = xLastTime; if (xTimeNow < xLastTime.9_1) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT prvSwitchTimerLists (); # DEBUG BEGIN_STMT *pxTimerListsWereSwitched = 1; goto ; [INV] : # DEBUG BEGIN_STMT *pxTimerListsWereSwitched = 0; : # DEBUG BEGIN_STMT xLastTime = xTimeNow; # DEBUG BEGIN_STMT D.6675 = xTimeNow; return D.6675; } prvGetNextExpireTime (BaseType_t * const pxListWasEmpty) { TickType_t xNextExpireTime; TickType_t D.6654; long int iftmp.2; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT pxCurrentTimerList.3_1 = pxCurrentTimerList; _2 = pxCurrentTimerList.3_1->uxNumberOfItems; if (_2 == 0) goto ; [INV] else goto ; [INV] : iftmp.2 = 1; goto ; [INV] : iftmp.2 = 0; : *pxListWasEmpty = iftmp.2; # DEBUG BEGIN_STMT _3 = *pxListWasEmpty; if (_3 == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT pxCurrentTimerList.4_4 = pxCurrentTimerList; _5 = pxCurrentTimerList.4_4->xListEnd.pxNext; xNextExpireTime = _5->xItemValue; goto ; [INV] : # DEBUG BEGIN_STMT xNextExpireTime = 0; : # DEBUG BEGIN_STMT D.6654 = xNextExpireTime; return D.6654; } prvProcessTimerOrBlockTask (const TickType_t xNextExpireTime, BaseType_t xListWasEmpty) { BaseType_t xTimerListsWereSwitched; TickType_t xTimeNow; long int iftmp.6; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vTaskSuspendAll (); # DEBUG BEGIN_STMT xTimeNow = prvSampleTimeNow (&xTimerListsWereSwitched); # DEBUG BEGIN_STMT xTimerListsWereSwitched.5_1 = xTimerListsWereSwitched; if (xTimerListsWereSwitched.5_1 == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT if (xListWasEmpty == 0) goto ; [INV] else goto ; [INV] : if (xNextExpireTime <= xTimeNow) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xTaskResumeAll (); # DEBUG BEGIN_STMT prvProcessExpiredTimer (xNextExpireTime, xTimeNow); goto ; [INV] : # DEBUG BEGIN_STMT if (xListWasEmpty != 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT pxOverflowTimerList.7_2 = pxOverflowTimerList; _3 = pxOverflowTimerList.7_2->uxNumberOfItems; if (_3 == 0) goto ; [INV] else goto ; [INV] : iftmp.6 = 1; goto ; [INV] : iftmp.6 = 0; : xListWasEmpty = iftmp.6; : # DEBUG BEGIN_STMT xTimerQueue.8_4 = xTimerQueue; _5 = xNextExpireTime - xTimeNow; vQueueWaitForMessageRestricted (xTimerQueue.8_4, _5, xListWasEmpty); # DEBUG BEGIN_STMT _6 = xTaskResumeAll (); if (_6 == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _7 = 3758157060B; *_7 = 268435456; # DEBUG BEGIN_STMT __asm__ __volatile__("dsb" : : : "memory"); # DEBUG BEGIN_STMT __asm__ __volatile__("isb"); # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT xTaskResumeAll (); : xTimerListsWereSwitched = {CLOBBER}; return; } prvTimerTask (void * pvParameters) { BaseType_t xListWasEmpty; TickType_t xNextExpireTime; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xNextExpireTime = prvGetNextExpireTime (&xListWasEmpty); # DEBUG BEGIN_STMT xListWasEmpty.1_1 = xListWasEmpty; prvProcessTimerOrBlockTask (xNextExpireTime, xListWasEmpty.1_1); # DEBUG BEGIN_STMT prvProcessReceivedCommands (); # DEBUG BEGIN_STMT goto ; [INV] } prvProcessExpiredTimer (const TickType_t xNextExpireTime, const TickType_t xTimeNow) { struct Timer_t * const pxTimer; : # DEBUG BEGIN_STMT pxCurrentTimerList.13_1 = pxCurrentTimerList; _2 = pxCurrentTimerList.13_1->xListEnd.pxNext; pxTimer = _2->pvOwner; # DEBUG BEGIN_STMT _3 = &pxTimer->xTimerListItem; uxListRemove (_3); # DEBUG BEGIN_STMT _4 = pxTimer->ucStatus; _5 = (int) _4; _6 = _5 & 4; if (_6 != 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT prvReloadTimer (pxTimer, xNextExpireTime, xTimeNow); goto ; [INV] : # DEBUG BEGIN_STMT _7 = pxTimer->ucStatus; _8 = _7 & 254; pxTimer->ucStatus = _8; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _9 = pxTimer->pxCallbackFunction; _9 (pxTimer); return; } prvReloadTimer (struct Timer_t * const pxTimer, TickType_t xExpiredTime, const TickType_t xTimeNow) { : # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT _1 = pxTimer->xTimerPeriodInTicks; xExpiredTime = xExpiredTime + _1; # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT _2 = pxTimer->pxCallbackFunction; _2 (pxTimer); : # DEBUG BEGIN_STMT _3 = pxTimer->xTimerPeriodInTicks; _4 = xExpiredTime + _3; _5 = prvInsertTimerInActiveList (pxTimer, _4, xTimeNow, xExpiredTime); if (_5 != 0) goto ; [INV] else goto ; [INV] : return; } pcTimerGetName (struct tmrTimerControl * xTimer) { struct Timer_t * pxTimer; const char * D.6768; : # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT D.6768 = pxTimer->pcTimerName; return D.6768; } xTimerGetExpiryTime (struct tmrTimerControl * xTimer) { TickType_t xReturn; struct Timer_t * pxTimer; TickType_t D.6764; : # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xReturn = pxTimer->xTimerListItem.xItemValue; # DEBUG BEGIN_STMT D.6764 = xReturn; return D.6764; } uxTimerGetReloadMode (struct tmrTimerControl * xTimer) { UBaseType_t uxReturn; struct Timer_t * pxTimer; UBaseType_t D.6760; : # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT _1 = pxTimer->ucStatus; _2 = (int) _1; _3 = _2 & 4; if (_3 == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT uxReturn = 0; goto ; [INV] : # DEBUG BEGIN_STMT uxReturn = 1; : # DEBUG BEGIN_STMT vPortExitCritical (); # DEBUG BEGIN_STMT D.6760 = uxReturn; return D.6760; } vTimerSetReloadMode (struct tmrTimerControl * xTimer, const UBaseType_t uxAutoReload) { struct Timer_t * pxTimer; : # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT vPortEnterCritical (); # DEBUG BEGIN_STMT if (uxAutoReload != 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _1 = pxTimer->ucStatus; _2 = _1 | 4; pxTimer->ucStatus = _2; goto ; [INV] : # DEBUG BEGIN_STMT _3 = pxTimer->ucStatus; _4 = _3 & 251; pxTimer->ucStatus = _4; : # DEBUG BEGIN_STMT vPortExitCritical (); return; } xTimerGetPeriod (struct tmrTimerControl * xTimer) { struct Timer_t * pxTimer; TickType_t D.6748; : # DEBUG BEGIN_STMT pxTimer = xTimer; # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT D.6748 = pxTimer->xTimerPeriodInTicks; return D.6748; } xTimerGetTimerDaemonTaskHandle () { struct tskTaskControlBlock * D.6744; : # DEBUG BEGIN_STMT xTimerTaskHandle.24_1 = xTimerTaskHandle; if (xTimerTaskHandle.24_1 == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT D.6744 = xTimerTaskHandle; return D.6744; } xTimerGenericCommand (struct tmrTimerControl * xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait) { struct DaemonTaskMessage_t xMessage; BaseType_t xReturn; BaseType_t D.6739; : # DEBUG BEGIN_STMT xReturn = 0; # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xTimer == 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT xTimerQueue.20_1 = xTimerQueue; if (xTimerQueue.20_1 != 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xMessage.xMessageID = xCommandID; # DEBUG BEGIN_STMT xMessage.u.xTimerParameters.xMessageValue = xOptionalValue; # DEBUG BEGIN_STMT xMessage.u.xTimerParameters.pxTimer = xTimer; # DEBUG BEGIN_STMT if (xCommandID <= 5) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _2 = xTaskGetSchedulerState (); if (_2 == 2) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xTimerQueue.21_3 = xTimerQueue; xReturn = xQueueGenericSend (xTimerQueue.21_3, &xMessage, xTicksToWait, 0); goto ; [INV] : # DEBUG BEGIN_STMT xTimerQueue.22_4 = xTimerQueue; xReturn = xQueueGenericSend (xTimerQueue.22_4, &xMessage, 0, 0); goto ; [INV] : # DEBUG BEGIN_STMT xTimerQueue.23_5 = xTimerQueue; xReturn = xQueueGenericSendFromISR (xTimerQueue.23_5, &xMessage, pxHigherPriorityTaskWoken, 0); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT D.6739 = xReturn; xMessage = {CLOBBER}; return D.6739; } prvInitialiseNewTimer (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction, struct Timer_t * pxNewTimer) { : # DEBUG BEGIN_STMT if (xTimerPeriodInTicks == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT prvCheckForValidListAndQueue (); # DEBUG BEGIN_STMT pxNewTimer->pcTimerName = pcTimerName; # DEBUG BEGIN_STMT pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks; # DEBUG BEGIN_STMT pxNewTimer->pvTimerID = pvTimerID; # DEBUG BEGIN_STMT pxNewTimer->pxCallbackFunction = pxCallbackFunction; # DEBUG BEGIN_STMT _1 = &pxNewTimer->xTimerListItem; vListInitialiseItem (_1); # DEBUG BEGIN_STMT if (uxAutoReload != 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT _2 = pxNewTimer->ucStatus; _3 = _2 | 4; pxNewTimer->ucStatus = _3; : # DEBUG BEGIN_STMT return; } xTimerCreate (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction) { struct Timer_t * pxNewTimer; struct tmrTimerControl * D.6722; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT pxNewTimer = pvPortMalloc (44); # DEBUG BEGIN_STMT if (pxNewTimer != 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT pxNewTimer->ucStatus = 0; # DEBUG BEGIN_STMT prvInitialiseNewTimer (pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer); : # DEBUG BEGIN_STMT D.6722 = pxNewTimer; return D.6722; } xTimerCreateTimerTask () { BaseType_t xReturn; BaseType_t D.6645; : # DEBUG BEGIN_STMT xReturn = 0; # DEBUG BEGIN_STMT prvCheckForValidListAndQueue (); # DEBUG BEGIN_STMT xTimerQueue.0_1 = xTimerQueue; if (xTimerQueue.0_1 != 0B) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT xReturn = xTaskCreate (prvTimerTask, "Tmr Svc", 180, 0B, 2, &xTimerTaskHandle); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT if (xReturn == 0) goto ; [INV] else goto ; [INV] : # DEBUG BEGIN_STMT vPortRaiseBASEPRI (); : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT goto ; [INV] : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT D.6645 = xReturn; return D.6645; } __attribute__((always_inline)) vPortRaiseBASEPRI () { uint32_t ulNewBASEPRI; : # DEBUG BEGIN_STMT # DEBUG BEGIN_STMT __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI : "i" 16 : "memory"); return; }