prvAddCurrentTaskToDelayedList (TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely) { struct ListItem_t * const pxIndex; const TickType_t xConstTickCount; TickType_t xTimeToWake; : xConstTickCount = xTickCount; pxCurrentTCB.152_1 = pxCurrentTCB; pxCurrentTCB.152_1->ucDelayAborted = 0; pxCurrentTCB.153_2 = pxCurrentTCB; _3 = &pxCurrentTCB.153_2->xStateListItem; _4 = uxListRemove (_3); : if (xTicksToWait == 4294967295) goto ; [INV] else goto ; [INV] : if (xCanBlockIndefinitely != 0) goto ; [INV] else goto ; [INV] : pxIndex = xSuspendedTaskList.pxIndex; pxCurrentTCB.154_5 = pxCurrentTCB; pxCurrentTCB.154_5->xStateListItem.pxNext = pxIndex; pxCurrentTCB.155_6 = pxCurrentTCB; _7 = pxIndex->pxPrevious; pxCurrentTCB.155_6->xStateListItem.pxPrevious = _7; pxCurrentTCB.156_8 = pxCurrentTCB; _9 = pxIndex->pxPrevious; _10 = &pxCurrentTCB.156_8->xStateListItem; _9->pxNext = _10; pxCurrentTCB.157_11 = pxCurrentTCB; _12 = &pxCurrentTCB.157_11->xStateListItem; pxIndex->pxPrevious = _12; pxCurrentTCB.158_13 = pxCurrentTCB; pxCurrentTCB.158_13->xStateListItem.pvContainer = &xSuspendedTaskList; _14 = xSuspendedTaskList.uxNumberOfItems; _15 = _14 + 1; xSuspendedTaskList.uxNumberOfItems = _15; goto ; [INV] : xTimeToWake = xConstTickCount + xTicksToWait; pxCurrentTCB.159_16 = pxCurrentTCB; pxCurrentTCB.159_16->xStateListItem.xItemValue = xTimeToWake; if (xTimeToWake < xConstTickCount) goto ; [INV] else goto ; [INV] : pxOverflowDelayedTaskList.160_17 = pxOverflowDelayedTaskList; pxCurrentTCB.161_18 = pxCurrentTCB; _19 = &pxCurrentTCB.161_18->xStateListItem; vListInsert (pxOverflowDelayedTaskList.160_17, _19); goto ; [INV] : pxDelayedTaskList.162_20 = pxDelayedTaskList; pxCurrentTCB.163_21 = pxCurrentTCB; _22 = &pxCurrentTCB.163_21->xStateListItem; vListInsert (pxDelayedTaskList.162_20, _22); xNextTaskUnblockTime.164_23 = xNextTaskUnblockTime; if (xTimeToWake < xNextTaskUnblockTime.164_23) goto ; [INV] else goto ; [INV] : xNextTaskUnblockTime = xTimeToWake; : return; } ulTaskGenericNotifyValueClear (struct tskTaskControlBlock * xTask, UBaseType_t uxIndexToClear, uint32_t ulBitsToClear) { uint32_t ulReturn; struct TCB_t * pxTCB; uint32_t D.8224; struct TCB_t * iftmp.151; : if (xTask == 0B) goto ; [INV] else goto ; [INV] : iftmp.151 = pxCurrentTCB; goto ; [INV] : iftmp.151 = xTask; : pxTCB = iftmp.151; vPortEnterCritical (); ulReturn = pxTCB->ulNotifiedValue[uxIndexToClear]; _1 = pxTCB->ulNotifiedValue[uxIndexToClear]; _2 = ~ulBitsToClear; _3 = _1 & _2; pxTCB->ulNotifiedValue[uxIndexToClear] = _3; vPortExitCritical (); D.8224 = ulReturn; : : return D.8224; } xTaskGenericNotifyStateClear (struct tskTaskControlBlock * xTask, UBaseType_t uxIndexToClear) { BaseType_t xReturn; struct TCB_t * pxTCB; BaseType_t D.8218; struct TCB_t * iftmp.150; : if (uxIndexToClear != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (xTask == 0B) goto ; [INV] else goto ; [INV] : iftmp.150 = pxCurrentTCB; goto ; [INV] : iftmp.150 = xTask; : pxTCB = iftmp.150; vPortEnterCritical (); _1 = pxTCB->ucNotifyState[uxIndexToClear]; if (_1 == 2) goto ; [INV] else goto ; [INV] : pxTCB->ucNotifyState[uxIndexToClear] = 0; xReturn = 1; goto ; [INV] : xReturn = 0; : vPortExitCritical (); D.8218 = xReturn; : : return D.8218; } vTaskGenericNotifyGiveFromISR (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, BaseType_t * pxHigherPriorityTaskWoken) { struct ListItem_t * const pxIndex; struct ListItem_t * const pxIndex; struct List_t * const pxList; UBaseType_t uxSavedInterruptStatus; uint8_t ucOriginalNotifyState; struct TCB_t * pxTCB; : if (xTaskToNotify == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (uxIndexToNotify != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortValidateInterruptPriority (); pxTCB = xTaskToNotify; uxSavedInterruptStatus = ulPortRaiseBASEPRI (); ucOriginalNotifyState = pxTCB->ucNotifyState[uxIndexToNotify]; pxTCB->ucNotifyState[uxIndexToNotify] = 2; _1 = pxTCB->ulNotifiedValue[uxIndexToNotify]; _2 = _1 + 1; pxTCB->ulNotifiedValue[uxIndexToNotify] = _2; if (ucOriginalNotifyState == 1) goto ; [INV] else goto ; [INV] : _3 = pxTCB->xEventListItem.pvContainer; if (_3 != 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : uxSchedulerSuspended.147_4 = uxSchedulerSuspended; if (uxSchedulerSuspended.147_4 == 0) goto ; [INV] else goto ; [INV] : pxList = pxTCB->xStateListItem.pvContainer; _5 = pxTCB->xStateListItem.pxNext; _6 = pxTCB->xStateListItem.pxPrevious; _5->pxPrevious = _6; _7 = pxTCB->xStateListItem.pxPrevious; _8 = pxTCB->xStateListItem.pxNext; _7->pxNext = _8; _9 = pxList->pxIndex; _10 = &pxTCB->xStateListItem; if (_9 == _10) goto ; [INV] else goto ; [INV] : _11 = pxTCB->xStateListItem.pxPrevious; pxList->pxIndex = _11; : pxTCB->xStateListItem.pvContainer = 0B; _12 = pxList->uxNumberOfItems; _13 = _12 + 4294967295; pxList->uxNumberOfItems = _13; _14 = pxTCB->uxPriority; uxTopReadyPriority.148_15 = uxTopReadyPriority; if (_14 > uxTopReadyPriority.148_15) goto ; [INV] else goto ; [INV] : _16 = pxTCB->uxPriority; uxTopReadyPriority = _16; : _17 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_17].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _18 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _18; _19 = pxIndex->pxPrevious; _20 = &pxTCB->xStateListItem; _19->pxNext = _20; _21 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _21; _22 = pxTCB->uxPriority; _23 = &pxReadyTasksLists[_22]; pxTCB->xStateListItem.pvContainer = _23; _24 = pxTCB->uxPriority; _25 = pxReadyTasksLists[_24].uxNumberOfItems; _26 = _25 + 1; pxReadyTasksLists[_24].uxNumberOfItems = _26; goto ; [INV] : pxIndex = xPendingReadyList.pxIndex; pxTCB->xEventListItem.pxNext = pxIndex; _27 = pxIndex->pxPrevious; pxTCB->xEventListItem.pxPrevious = _27; _28 = pxIndex->pxPrevious; _29 = &pxTCB->xEventListItem; _28->pxNext = _29; _30 = &pxTCB->xEventListItem; pxIndex->pxPrevious = _30; pxTCB->xEventListItem.pvContainer = &xPendingReadyList; _31 = xPendingReadyList.uxNumberOfItems; _32 = _31 + 1; xPendingReadyList.uxNumberOfItems = _32; : _33 = pxTCB->uxPriority; pxCurrentTCB.149_34 = pxCurrentTCB; _35 = pxCurrentTCB.149_34->uxPriority; if (_33 > _35) goto ; [INV] else goto ; [INV] : if (pxHigherPriorityTaskWoken != 0B) goto ; [INV] else goto ; [INV] : *pxHigherPriorityTaskWoken = 1; : xYieldPending = 1; : vPortSetBASEPRI (uxSavedInterruptStatus); return; } xTaskGenericNotifyFromISR (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t * pulPreviousNotificationValue, BaseType_t * pxHigherPriorityTaskWoken) { struct ListItem_t * const pxIndex; struct ListItem_t * const pxIndex; struct List_t * const pxList; UBaseType_t uxSavedInterruptStatus; BaseType_t xReturn; uint8_t ucOriginalNotifyState; struct TCB_t * pxTCB; BaseType_t D.8187; : xReturn = 1; if (xTaskToNotify == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (uxIndexToNotify != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortValidateInterruptPriority (); pxTCB = xTaskToNotify; uxSavedInterruptStatus = ulPortRaiseBASEPRI (); if (pulPreviousNotificationValue != 0B) goto ; [INV] else goto ; [INV] : _1 = pxTCB->ulNotifiedValue[uxIndexToNotify]; *pulPreviousNotificationValue = _1; : ucOriginalNotifyState = pxTCB->ucNotifyState[uxIndexToNotify]; pxTCB->ucNotifyState[uxIndexToNotify] = 2; switch (eAction) [INV], case 0: [INV], case 1: [INV], case 2: [INV], case 3: [INV], case 4: [INV]> : : _2 = pxTCB->ulNotifiedValue[uxIndexToNotify]; _3 = ulValue | _2; pxTCB->ulNotifiedValue[uxIndexToNotify] = _3; goto ; [INV] : : _4 = pxTCB->ulNotifiedValue[uxIndexToNotify]; _5 = _4 + 1; pxTCB->ulNotifiedValue[uxIndexToNotify] = _5; goto ; [INV] : : pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue; goto ; [INV] : : if (ucOriginalNotifyState != 2) goto ; [INV] else goto ; [INV] : pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue; goto ; [INV] : xReturn = 0; : goto ; [INV] : : goto ; [INV] : : xTickCount.143_6 = xTickCount; if (xTickCount.143_6 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : : if (ucOriginalNotifyState == 1) goto ; [INV] else goto ; [INV] : _7 = pxTCB->xEventListItem.pvContainer; if (_7 != 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : uxSchedulerSuspended.144_8 = uxSchedulerSuspended; if (uxSchedulerSuspended.144_8 == 0) goto ; [INV] else goto ; [INV] : pxList = pxTCB->xStateListItem.pvContainer; _9 = pxTCB->xStateListItem.pxNext; _10 = pxTCB->xStateListItem.pxPrevious; _9->pxPrevious = _10; _11 = pxTCB->xStateListItem.pxPrevious; _12 = pxTCB->xStateListItem.pxNext; _11->pxNext = _12; _13 = pxList->pxIndex; _14 = &pxTCB->xStateListItem; if (_13 == _14) goto ; [INV] else goto ; [INV] : _15 = pxTCB->xStateListItem.pxPrevious; pxList->pxIndex = _15; : pxTCB->xStateListItem.pvContainer = 0B; _16 = pxList->uxNumberOfItems; _17 = _16 + 4294967295; pxList->uxNumberOfItems = _17; _18 = pxTCB->uxPriority; uxTopReadyPriority.145_19 = uxTopReadyPriority; if (_18 > uxTopReadyPriority.145_19) goto ; [INV] else goto ; [INV] : _20 = pxTCB->uxPriority; uxTopReadyPriority = _20; : _21 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_21].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _22 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _22; _23 = pxIndex->pxPrevious; _24 = &pxTCB->xStateListItem; _23->pxNext = _24; _25 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _25; _26 = pxTCB->uxPriority; _27 = &pxReadyTasksLists[_26]; pxTCB->xStateListItem.pvContainer = _27; _28 = pxTCB->uxPriority; _29 = pxReadyTasksLists[_28].uxNumberOfItems; _30 = _29 + 1; pxReadyTasksLists[_28].uxNumberOfItems = _30; goto ; [INV] : pxIndex = xPendingReadyList.pxIndex; pxTCB->xEventListItem.pxNext = pxIndex; _31 = pxIndex->pxPrevious; pxTCB->xEventListItem.pxPrevious = _31; _32 = pxIndex->pxPrevious; _33 = &pxTCB->xEventListItem; _32->pxNext = _33; _34 = &pxTCB->xEventListItem; pxIndex->pxPrevious = _34; pxTCB->xEventListItem.pvContainer = &xPendingReadyList; _35 = xPendingReadyList.uxNumberOfItems; _36 = _35 + 1; xPendingReadyList.uxNumberOfItems = _36; : _37 = pxTCB->uxPriority; pxCurrentTCB.146_38 = pxCurrentTCB; _39 = pxCurrentTCB.146_38->uxPriority; if (_37 > _39) goto ; [INV] else goto ; [INV] : if (pxHigherPriorityTaskWoken != 0B) goto ; [INV] else goto ; [INV] : *pxHigherPriorityTaskWoken = 1; : xYieldPending = 1; : vPortSetBASEPRI (uxSavedInterruptStatus); D.8187 = xReturn; : : return D.8187; } xTaskGenericNotify (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t * pulPreviousNotificationValue) { struct ListItem_t * const pxIndex; struct List_t * const pxList; uint8_t ucOriginalNotifyState; BaseType_t xReturn; struct TCB_t * pxTCB; BaseType_t D.8158; : xReturn = 1; if (uxIndexToNotify != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (xTaskToNotify == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxTCB = xTaskToNotify; vPortEnterCritical (); if (pulPreviousNotificationValue != 0B) goto ; [INV] else goto ; [INV] : _1 = pxTCB->ulNotifiedValue[uxIndexToNotify]; *pulPreviousNotificationValue = _1; : ucOriginalNotifyState = pxTCB->ucNotifyState[uxIndexToNotify]; pxTCB->ucNotifyState[uxIndexToNotify] = 2; switch (eAction) [INV], case 0: [INV], case 1: [INV], case 2: [INV], case 3: [INV], case 4: [INV]> : : _2 = pxTCB->ulNotifiedValue[uxIndexToNotify]; _3 = ulValue | _2; pxTCB->ulNotifiedValue[uxIndexToNotify] = _3; goto ; [INV] : : _4 = pxTCB->ulNotifiedValue[uxIndexToNotify]; _5 = _4 + 1; pxTCB->ulNotifiedValue[uxIndexToNotify] = _5; goto ; [INV] : : pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue; goto ; [INV] : : if (ucOriginalNotifyState != 2) goto ; [INV] else goto ; [INV] : pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue; goto ; [INV] : xReturn = 0; : goto ; [INV] : : goto ; [INV] : : xTickCount.140_6 = xTickCount; if (xTickCount.140_6 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : : if (ucOriginalNotifyState == 1) goto ; [INV] else goto ; [INV] : pxList = pxTCB->xStateListItem.pvContainer; _7 = pxTCB->xStateListItem.pxNext; _8 = pxTCB->xStateListItem.pxPrevious; _7->pxPrevious = _8; _9 = pxTCB->xStateListItem.pxPrevious; _10 = pxTCB->xStateListItem.pxNext; _9->pxNext = _10; _11 = pxList->pxIndex; _12 = &pxTCB->xStateListItem; if (_11 == _12) goto ; [INV] else goto ; [INV] : _13 = pxTCB->xStateListItem.pxPrevious; pxList->pxIndex = _13; : pxTCB->xStateListItem.pvContainer = 0B; _14 = pxList->uxNumberOfItems; _15 = _14 + 4294967295; pxList->uxNumberOfItems = _15; _16 = pxTCB->uxPriority; uxTopReadyPriority.141_17 = uxTopReadyPriority; if (_16 > uxTopReadyPriority.141_17) goto ; [INV] else goto ; [INV] : _18 = pxTCB->uxPriority; uxTopReadyPriority = _18; : _19 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_19].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _20 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _20; _21 = pxIndex->pxPrevious; _22 = &pxTCB->xStateListItem; _21->pxNext = _22; _23 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _23; _24 = pxTCB->uxPriority; _25 = &pxReadyTasksLists[_24]; pxTCB->xStateListItem.pvContainer = _25; _26 = pxTCB->uxPriority; _27 = pxReadyTasksLists[_26].uxNumberOfItems; _28 = _27 + 1; pxReadyTasksLists[_26].uxNumberOfItems = _28; _29 = pxTCB->xEventListItem.pvContainer; if (_29 != 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _30 = pxTCB->uxPriority; pxCurrentTCB.142_31 = pxCurrentTCB; _32 = pxCurrentTCB.142_31->uxPriority; if (_30 > _32) goto ; [INV] else goto ; [INV] : _33 = 3758157060B; *_33 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); D.8158 = xReturn; : : return D.8158; } xTaskGenericNotifyWait (UBaseType_t uxIndexToWait, uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t * pulNotificationValue, TickType_t xTicksToWait) { BaseType_t xReturn; BaseType_t D.8133; struct TCB_t * pxCurrentTCB.138; struct TCB_t * pxCurrentTCB.134; : if (uxIndexToWait != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); pxCurrentTCB.133_1 = pxCurrentTCB; _2 = pxCurrentTCB.133_1->ucNotifyState[uxIndexToWait]; if (_2 != 2) goto ; [INV] else goto ; [INV] : pxCurrentTCB.134 = pxCurrentTCB; _3 = pxCurrentTCB.134->ulNotifiedValue[uxIndexToWait]; _4 = ~ulBitsToClearOnEntry; _5 = _3 & _4; pxCurrentTCB.134->ulNotifiedValue[uxIndexToWait] = _5; pxCurrentTCB.135_6 = pxCurrentTCB; pxCurrentTCB.135_6->ucNotifyState[uxIndexToWait] = 1; if (xTicksToWait != 0) goto ; [INV] else goto ; [INV] : prvAddCurrentTaskToDelayedList (xTicksToWait, 1); _7 = 3758157060B; *_7 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); vPortEnterCritical (); if (pulNotificationValue != 0B) goto ; [INV] else goto ; [INV] : pxCurrentTCB.136_8 = pxCurrentTCB; _9 = pxCurrentTCB.136_8->ulNotifiedValue[uxIndexToWait]; *pulNotificationValue = _9; : pxCurrentTCB.137_10 = pxCurrentTCB; _11 = pxCurrentTCB.137_10->ucNotifyState[uxIndexToWait]; if (_11 != 2) goto ; [INV] else goto ; [INV] : xReturn = 0; goto ; [INV] : pxCurrentTCB.138 = pxCurrentTCB; _12 = pxCurrentTCB.138->ulNotifiedValue[uxIndexToWait]; _13 = ~ulBitsToClearOnExit; _14 = _12 & _13; pxCurrentTCB.138->ulNotifiedValue[uxIndexToWait] = _14; xReturn = 1; : pxCurrentTCB.139_15 = pxCurrentTCB; pxCurrentTCB.139_15->ucNotifyState[uxIndexToWait] = 0; vPortExitCritical (); D.8133 = xReturn; : : return D.8133; } ulTaskGenericNotifyTake (UBaseType_t uxIndexToWait, BaseType_t xClearCountOnExit, TickType_t xTicksToWait) { uint32_t ulReturn; uint32_t D.8116; : if (uxIndexToWait != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); pxCurrentTCB.127_1 = pxCurrentTCB; _2 = pxCurrentTCB.127_1->ulNotifiedValue[uxIndexToWait]; if (_2 == 0) goto ; [INV] else goto ; [INV] : pxCurrentTCB.128_3 = pxCurrentTCB; pxCurrentTCB.128_3->ucNotifyState[uxIndexToWait] = 1; if (xTicksToWait != 0) goto ; [INV] else goto ; [INV] : prvAddCurrentTaskToDelayedList (xTicksToWait, 1); _4 = 3758157060B; *_4 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); vPortEnterCritical (); pxCurrentTCB.129_5 = pxCurrentTCB; ulReturn = pxCurrentTCB.129_5->ulNotifiedValue[uxIndexToWait]; if (ulReturn != 0) goto ; [INV] else goto ; [INV] : if (xClearCountOnExit != 0) goto ; [INV] else goto ; [INV] : pxCurrentTCB.130_6 = pxCurrentTCB; pxCurrentTCB.130_6->ulNotifiedValue[uxIndexToWait] = 0; goto ; [INV] : pxCurrentTCB.131_7 = pxCurrentTCB; _8 = ulReturn + 4294967295; pxCurrentTCB.131_7->ulNotifiedValue[uxIndexToWait] = _8; : pxCurrentTCB.132_9 = pxCurrentTCB; pxCurrentTCB.132_9->ucNotifyState[uxIndexToWait] = 0; vPortExitCritical (); D.8116 = ulReturn; : : return D.8116; } pvTaskIncrementMutexHeldCount () { struct tskTaskControlBlock * D.8100; : pxCurrentTCB.125_1 = pxCurrentTCB; if (pxCurrentTCB.125_1 != 0B) goto ; [INV] else goto ; [INV] : pxCurrentTCB.126_2 = pxCurrentTCB; _3 = pxCurrentTCB.126_2->uxMutexesHeld; _4 = _3 + 1; pxCurrentTCB.126_2->uxMutexesHeld = _4; : D.8100 = pxCurrentTCB; : : return D.8100; } uxTaskResetEventItemValue () { TickType_t uxReturn; TickType_t D.8096; : pxCurrentTCB.122_1 = pxCurrentTCB; uxReturn = pxCurrentTCB.122_1->xEventListItem.xItemValue; pxCurrentTCB.123_2 = pxCurrentTCB; _3 = pxCurrentTCB.123_2->uxPriority; pxCurrentTCB.124_4 = pxCurrentTCB; _5 = 5 - _3; pxCurrentTCB.124_4->xEventListItem.xItemValue = _5; D.8096 = uxReturn; : : return D.8096; } vTaskList (char * pcWriteBuffer) { char cStatus; UBaseType_t x; UBaseType_t uxArraySize; struct TaskStatus_t * pxTaskStatusArray; : *pcWriteBuffer = 0; uxArraySize = uxCurrentNumberOfTasks; uxCurrentNumberOfTasks.121_1 = uxCurrentNumberOfTasks; _2 = uxCurrentNumberOfTasks.121_1 * 36; pxTaskStatusArray = pvPortMalloc (_2); if (pxTaskStatusArray != 0B) goto ; [INV] else goto ; [INV] : uxArraySize = uxTaskGetSystemState (pxTaskStatusArray, uxArraySize, 0B); x = 0; goto ; [INV] : _3 = x * 36; _4 = pxTaskStatusArray + _3; _5 = _4->eCurrentState; switch (_5) [INV], case 0: [INV], case 1: [INV], case 2: [INV], case 3: [INV], case 4: [INV]> : : cStatus = 88; goto ; [INV] : : cStatus = 82; goto ; [INV] : : cStatus = 66; goto ; [INV] : : cStatus = 83; goto ; [INV] : : cStatus = 68; goto ; [INV] : : cStatus = 0; : _6 = x * 36; _7 = pxTaskStatusArray + _6; _8 = _7->pcTaskName; pcWriteBuffer = prvWriteNameToBuffer (pcWriteBuffer, _8); _9 = (int) cStatus; _10 = x * 36; _11 = pxTaskStatusArray + _10; _12 = _11->uxCurrentPriority; _13 = x * 36; _14 = pxTaskStatusArray + _13; _15 = _14->usStackHighWaterMark; _16 = (unsigned int) _15; _17 = x * 36; _18 = pxTaskStatusArray + _17; _19 = _18->xTaskNumber; sprintf (pcWriteBuffer, "\t%c\t%u\t%u\t%u\r\n", _9, _12, _16, _19); _20 = strlen (pcWriteBuffer); pcWriteBuffer = pcWriteBuffer + _20; x = x + 1; : if (x < uxArraySize) goto ; [INV] else goto ; [INV] : vPortFree (pxTaskStatusArray); : return; } prvWriteNameToBuffer (char * pcBuffer, const char * pcTaskName) { size_t x; char * D.8091; : strcpy (pcBuffer, pcTaskName); x = strlen (pcBuffer); goto ; [INV] : _1 = pcBuffer + x; *_1 = 32; x = x + 1; : if (x <= 8) goto ; [INV] else goto ; [INV] : _2 = pcBuffer + x; *_2 = 0; D.8091 = pcBuffer + x; : : return D.8091; } vTaskPriorityDisinheritAfterTimeout (struct tskTaskControlBlock * const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask) { struct ListItem_t * const pxIndex; const UBaseType_t uxOnlyOneMutexHeld; UBaseType_t uxPriorityToUse; UBaseType_t uxPriorityUsedOnEntry; struct TCB_t * const pxTCB; : pxTCB = pxMutexHolder; uxOnlyOneMutexHeld = 1; if (pxMutexHolder != 0B) goto ; [INV] else goto ; [INV] : _1 = pxTCB->uxMutexesHeld; if (_1 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = pxTCB->uxBasePriority; if (uxHighestPriorityWaitingTask > _2) goto ; [INV] else goto ; [INV] : uxPriorityToUse = uxHighestPriorityWaitingTask; goto ; [INV] : uxPriorityToUse = pxTCB->uxBasePriority; : _3 = pxTCB->uxPriority; if (uxPriorityToUse != _3) goto ; [INV] else goto ; [INV] : _4 = pxTCB->uxMutexesHeld; if (uxOnlyOneMutexHeld == _4) goto ; [INV] else goto ; [INV] : pxCurrentTCB.119_5 = pxCurrentTCB; if (pxTCB == pxCurrentTCB.119_5) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : uxPriorityUsedOnEntry = pxTCB->uxPriority; pxTCB->uxPriority = uxPriorityToUse; _6 = pxTCB->xEventListItem.xItemValue; _7 = (signed int) _6; if (_7 >= 0) goto ; [INV] else goto ; [INV] : _8 = 5 - uxPriorityToUse; pxTCB->xEventListItem.xItemValue = _8; : _9 = pxTCB->xStateListItem.pvContainer; _10 = &pxReadyTasksLists[uxPriorityUsedOnEntry]; if (_9 == _10) goto ; [INV] else goto ; [INV] : _11 = &pxTCB->xStateListItem; _12 = uxListRemove (_11); : _13 = pxTCB->uxPriority; uxTopReadyPriority.120_14 = uxTopReadyPriority; if (_13 > uxTopReadyPriority.120_14) goto ; [INV] else goto ; [INV] : _15 = pxTCB->uxPriority; uxTopReadyPriority = _15; : _16 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_16].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _17 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _17; _18 = pxIndex->pxPrevious; _19 = &pxTCB->xStateListItem; _18->pxNext = _19; _20 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _20; _21 = pxTCB->uxPriority; _22 = &pxReadyTasksLists[_21]; pxTCB->xStateListItem.pvContainer = _22; _23 = pxTCB->uxPriority; _24 = pxReadyTasksLists[_23].uxNumberOfItems; _25 = _24 + 1; pxReadyTasksLists[_23].uxNumberOfItems = _25; : return; } xTaskPriorityDisinherit (struct tskTaskControlBlock * const pxMutexHolder) { struct ListItem_t * const pxIndex; BaseType_t xReturn; struct TCB_t * const pxTCB; BaseType_t D.8062; : pxTCB = pxMutexHolder; xReturn = 0; if (pxMutexHolder != 0B) goto ; [INV] else goto ; [INV] : pxCurrentTCB.117_1 = pxCurrentTCB; if (pxTCB != pxCurrentTCB.117_1) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = pxTCB->uxMutexesHeld; if (_2 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _3 = pxTCB->uxMutexesHeld; _4 = _3 + 4294967295; pxTCB->uxMutexesHeld = _4; _5 = pxTCB->uxPriority; _6 = pxTCB->uxBasePriority; if (_5 != _6) goto ; [INV] else goto ; [INV] : _7 = pxTCB->uxMutexesHeld; if (_7 == 0) goto ; [INV] else goto ; [INV] : _8 = &pxTCB->xStateListItem; _9 = uxListRemove (_8); : _10 = pxTCB->uxBasePriority; pxTCB->uxPriority = _10; _11 = pxTCB->uxPriority; _12 = 5 - _11; pxTCB->xEventListItem.xItemValue = _12; _13 = pxTCB->uxPriority; uxTopReadyPriority.118_14 = uxTopReadyPriority; if (_13 > uxTopReadyPriority.118_14) goto ; [INV] else goto ; [INV] : _15 = pxTCB->uxPriority; uxTopReadyPriority = _15; : _16 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_16].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _17 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _17; _18 = pxIndex->pxPrevious; _19 = &pxTCB->xStateListItem; _18->pxNext = _19; _20 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _20; _21 = pxTCB->uxPriority; _22 = &pxReadyTasksLists[_21]; pxTCB->xStateListItem.pvContainer = _22; _23 = pxTCB->uxPriority; _24 = pxReadyTasksLists[_23].uxNumberOfItems; _25 = _24 + 1; pxReadyTasksLists[_23].uxNumberOfItems = _25; xReturn = 1; : D.8062 = xReturn; : : return D.8062; } xTaskPriorityInherit (struct tskTaskControlBlock * const pxMutexHolder) { struct ListItem_t * const pxIndex; BaseType_t xReturn; struct TCB_t * const pxMutexHolderTCB; BaseType_t D.8042; : pxMutexHolderTCB = pxMutexHolder; xReturn = 0; if (pxMutexHolder != 0B) goto ; [INV] else goto ; [INV] : _1 = pxMutexHolderTCB->uxPriority; pxCurrentTCB.111_2 = pxCurrentTCB; _3 = pxCurrentTCB.111_2->uxPriority; if (_1 < _3) goto ; [INV] else goto ; [INV] : _4 = pxMutexHolderTCB->xEventListItem.xItemValue; _5 = (signed int) _4; if (_5 >= 0) goto ; [INV] else goto ; [INV] : pxCurrentTCB.112_6 = pxCurrentTCB; _7 = pxCurrentTCB.112_6->uxPriority; _8 = 5 - _7; pxMutexHolderTCB->xEventListItem.xItemValue = _8; : _9 = pxMutexHolderTCB->xStateListItem.pvContainer; _10 = pxMutexHolderTCB->uxPriority; _11 = &pxReadyTasksLists[_10]; if (_9 == _11) goto ; [INV] else goto ; [INV] : _12 = &pxMutexHolderTCB->xStateListItem; _13 = uxListRemove (_12); : pxCurrentTCB.113_14 = pxCurrentTCB; _15 = pxCurrentTCB.113_14->uxPriority; pxMutexHolderTCB->uxPriority = _15; _16 = pxMutexHolderTCB->uxPriority; uxTopReadyPriority.114_17 = uxTopReadyPriority; if (_16 > uxTopReadyPriority.114_17) goto ; [INV] else goto ; [INV] : _18 = pxMutexHolderTCB->uxPriority; uxTopReadyPriority = _18; : _19 = pxMutexHolderTCB->uxPriority; pxIndex = pxReadyTasksLists[_19].pxIndex; pxMutexHolderTCB->xStateListItem.pxNext = pxIndex; _20 = pxIndex->pxPrevious; pxMutexHolderTCB->xStateListItem.pxPrevious = _20; _21 = pxIndex->pxPrevious; _22 = &pxMutexHolderTCB->xStateListItem; _21->pxNext = _22; _23 = &pxMutexHolderTCB->xStateListItem; pxIndex->pxPrevious = _23; _24 = pxMutexHolderTCB->uxPriority; _25 = &pxReadyTasksLists[_24]; pxMutexHolderTCB->xStateListItem.pvContainer = _25; _26 = pxMutexHolderTCB->uxPriority; _27 = pxReadyTasksLists[_26].uxNumberOfItems; _28 = _27 + 1; pxReadyTasksLists[_26].uxNumberOfItems = _28; goto ; [INV] : pxCurrentTCB.115_29 = pxCurrentTCB; _30 = pxCurrentTCB.115_29->uxPriority; pxMutexHolderTCB->uxPriority = _30; : xReturn = 1; goto ; [INV] : _31 = pxMutexHolderTCB->uxBasePriority; pxCurrentTCB.116_32 = pxCurrentTCB; _33 = pxCurrentTCB.116_32->uxPriority; if (_31 < _33) goto ; [INV] else goto ; [INV] : xReturn = 1; : D.8042 = xReturn; : : return D.8042; } xTaskGetSchedulerState () { BaseType_t xReturn; BaseType_t D.8020; : xSchedulerRunning.109_1 = xSchedulerRunning; if (xSchedulerRunning.109_1 == 0) goto ; [INV] else goto ; [INV] : xReturn = 1; goto ; [INV] : uxSchedulerSuspended.110_2 = uxSchedulerSuspended; if (uxSchedulerSuspended.110_2 == 0) goto ; [INV] else goto ; [INV] : xReturn = 2; goto ; [INV] : xReturn = 0; : D.8020 = xReturn; : : return D.8020; } xTaskGetCurrentTaskHandle () { struct tskTaskControlBlock * xReturn; struct tskTaskControlBlock * D.8012; : xReturn = pxCurrentTCB; D.8012 = xReturn; : : return D.8012; } prvResetNextTaskUnblockTime () { : pxDelayedTaskList.107_1 = pxDelayedTaskList; _2 = pxDelayedTaskList.107_1->uxNumberOfItems; if (_2 == 0) goto ; [INV] else goto ; [INV] : xNextTaskUnblockTime = 4294967295; goto ; [INV] : pxDelayedTaskList.108_3 = pxDelayedTaskList; _4 = pxDelayedTaskList.108_3->xListEnd.pxNext; _5 = _4->xItemValue; xNextTaskUnblockTime = _5; : return; } prvDeleteTCB (struct TCB_t * pxTCB) { : _1 = pxTCB->pxStack; vPortFree (_1); vPortFree (pxTCB); return; } uxTaskGetStackHighWaterMark (struct tskTaskControlBlock * xTask) { UBaseType_t uxReturn; uint8_t * pucEndOfStack; struct TCB_t * pxTCB; UBaseType_t D.8007; struct TCB_t * iftmp.106; : if (xTask == 0B) goto ; [INV] else goto ; [INV] : iftmp.106 = pxCurrentTCB; goto ; [INV] : iftmp.106 = xTask; : pxTCB = iftmp.106; pucEndOfStack = pxTCB->pxStack; _1 = prvTaskCheckFreeStackSpace (pucEndOfStack); uxReturn = (UBaseType_t) _1; D.8007 = uxReturn; : : return D.8007; } prvTaskCheckFreeStackSpace (const uint8_t * pucStackByte) { uint32_t ulCount; uint16_t D.8001; : ulCount = 0; goto ; [INV] : pucStackByte = pucStackByte + 1; ulCount = ulCount + 1; : _1 = *pucStackByte; if (_1 == 165) goto ; [INV] else goto ; [INV] : ulCount = ulCount / 4; D.8001 = (uint16_t) ulCount; : : return D.8001; } prvListTasksWithinSingleList (struct TaskStatus_t * pxTaskStatusArray, struct List_t * pxList, eTaskState eState) { struct List_t * const pxConstList; struct List_t * const pxConstList; UBaseType_t uxTask; struct TCB_t * pxFirstTCB; struct TCB_t * pxNextTCB; UBaseType_t D.7999; : uxTask = 0; _1 = pxList->uxNumberOfItems; if (_1 != 0) goto ; [INV] else goto ; [INV] : pxConstList = pxList; _2 = pxConstList->pxIndex; _3 = _2->pxNext; pxConstList->pxIndex = _3; _4 = pxConstList->pxIndex; _5 = &pxConstList->xListEnd; if (_4 == _5) goto ; [INV] else goto ; [INV] : _6 = pxConstList->pxIndex; _7 = _6->pxNext; pxConstList->pxIndex = _7; : _8 = pxConstList->pxIndex; pxFirstTCB = _8->pvOwner; : pxConstList = pxList; _9 = pxConstList->pxIndex; _10 = _9->pxNext; pxConstList->pxIndex = _10; _11 = pxConstList->pxIndex; _12 = &pxConstList->xListEnd; if (_11 == _12) goto ; [INV] else goto ; [INV] : _13 = pxConstList->pxIndex; _14 = _13->pxNext; pxConstList->pxIndex = _14; : _15 = pxConstList->pxIndex; pxNextTCB = _15->pvOwner; _16 = uxTask * 36; _17 = pxTaskStatusArray + _16; vTaskGetInfo (pxNextTCB, _17, 1, eState); uxTask = uxTask + 1; if (pxNextTCB != pxFirstTCB) goto ; [INV] else goto ; [INV] : D.7999 = uxTask; : : return D.7999; } vTaskGetInfo (struct tskTaskControlBlock * xTask, struct TaskStatus_t * pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState) { struct TCB_t * pxTCB; struct TCB_t * iftmp.104; : if (xTask == 0B) goto ; [INV] else goto ; [INV] : iftmp.104 = pxCurrentTCB; goto ; [INV] : iftmp.104 = xTask; : pxTCB = iftmp.104; pxTaskStatus->xHandle = pxTCB; _1 = &pxTCB->pcTaskName[0]; pxTaskStatus->pcTaskName = _1; _2 = pxTCB->uxPriority; pxTaskStatus->uxCurrentPriority = _2; _3 = pxTCB->pxStack; pxTaskStatus->pxStackBase = _3; _4 = pxTCB->uxTCBNumber; pxTaskStatus->xTaskNumber = _4; _5 = pxTCB->uxBasePriority; pxTaskStatus->uxBasePriority = _5; pxTaskStatus->ulRunTimeCounter = 0; if (eState != 5) goto ; [INV] else goto ; [INV] : pxCurrentTCB.105_6 = pxCurrentTCB; if (pxTCB == pxCurrentTCB.105_6) goto ; [INV] else goto ; [INV] : pxTaskStatus->eCurrentState = 0; goto ; [INV] : pxTaskStatus->eCurrentState = eState; if (eState == 3) goto ; [INV] else goto ; [INV] : vTaskSuspendAll (); _7 = pxTCB->xEventListItem.pvContainer; if (_7 != 0B) goto ; [INV] else goto ; [INV] : pxTaskStatus->eCurrentState = 2; : xTaskResumeAll (); goto ; [INV] : _8 = eTaskGetState (pxTCB); pxTaskStatus->eCurrentState = _8; : if (xGetFreeStackSpace != 0) goto ; [INV] else goto ; [INV] : _9 = pxTCB->pxStack; _10 = prvTaskCheckFreeStackSpace (_9); pxTaskStatus->usStackHighWaterMark = _10; goto ; [INV] : pxTaskStatus->usStackHighWaterMark = 0; : return; } prvCheckTasksWaitingTermination () { struct TCB_t * pxTCB; : goto ; [INV] : vPortEnterCritical (); _1 = xTasksWaitingTermination.xListEnd.pxNext; pxTCB = _1->pvOwner; _2 = &pxTCB->xStateListItem; uxListRemove (_2); uxCurrentNumberOfTasks.101_3 = uxCurrentNumberOfTasks; _4 = uxCurrentNumberOfTasks.101_3 + 4294967295; uxCurrentNumberOfTasks = _4; uxDeletedTasksWaitingCleanUp.102_5 = uxDeletedTasksWaitingCleanUp; _6 = uxDeletedTasksWaitingCleanUp.102_5 + 4294967295; uxDeletedTasksWaitingCleanUp = _6; vPortExitCritical (); prvDeleteTCB (pxTCB); : uxDeletedTasksWaitingCleanUp.103_7 = uxDeletedTasksWaitingCleanUp; if (uxDeletedTasksWaitingCleanUp.103_7 != 0) goto ; [INV] else goto ; [INV] : return; } prvInitialiseTaskLists () { UBaseType_t uxPriority; : uxPriority = 0; goto ; [INV] : _1 = &pxReadyTasksLists[uxPriority]; vListInitialise (_1); uxPriority = uxPriority + 1; : if (uxPriority <= 4) goto ; [INV] else goto ; [INV] : vListInitialise (&xDelayedTaskList1); vListInitialise (&xDelayedTaskList2); vListInitialise (&xPendingReadyList); vListInitialise (&xTasksWaitingTermination); vListInitialise (&xSuspendedTaskList); pxDelayedTaskList = &xDelayedTaskList1; pxOverflowDelayedTaskList = &xDelayedTaskList2; return; } prvIdleTask (void * pvParameters) { : prvCheckTasksWaitingTermination (); _1 = pxReadyTasksLists[0].uxNumberOfItems; if (_1 > 1) goto ; [INV] else goto ; [INV] : _2 = 3758157060B; *_2 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : goto ; [INV] } vTaskSetTaskNumber (struct tskTaskControlBlock * xTask, const UBaseType_t uxHandle) { struct TCB_t * pxTCB; : if (xTask != 0B) goto ; [INV] else goto ; [INV] : pxTCB = xTask; pxTCB->uxTaskNumber = uxHandle; : return; } uxTaskGetTaskNumber (struct tskTaskControlBlock * xTask) { const struct TCB_t * pxTCB; UBaseType_t uxReturn; UBaseType_t D.7968; : if (xTask != 0B) goto ; [INV] else goto ; [INV] : pxTCB = xTask; uxReturn = pxTCB->uxTaskNumber; goto ; [INV] : uxReturn = 0; : D.7968 = uxReturn; : : return D.7968; } vTaskMissedYield () { : xYieldPending = 1; return; } xTaskCheckForTimeOut (struct TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait) { const TickType_t xElapsedTime; const TickType_t xConstTickCount; BaseType_t xReturn; BaseType_t D.7963; : if (pxTimeOut == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (pxTicksToWait == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); xConstTickCount = xTickCount; _1 = pxTimeOut->xTimeOnEntering; xElapsedTime = xConstTickCount - _1; pxCurrentTCB.98_2 = pxCurrentTCB; _3 = pxCurrentTCB.98_2->ucDelayAborted; if (_3 != 0) goto ; [INV] else goto ; [INV] : pxCurrentTCB.99_4 = pxCurrentTCB; pxCurrentTCB.99_4->ucDelayAborted = 0; xReturn = 1; goto ; [INV] : _5 = *pxTicksToWait; if (_5 == 4294967295) goto ; [INV] else goto ; [INV] : xReturn = 0; goto ; [INV] : _6 = pxTimeOut->xOverflowCount; xNumOfOverflows.100_7 = xNumOfOverflows; if (_6 != xNumOfOverflows.100_7) goto ; [INV] else goto ; [INV] : _8 = pxTimeOut->xTimeOnEntering; if (xConstTickCount >= _8) goto ; [INV] else goto ; [INV] : xReturn = 1; *pxTicksToWait = 0; goto ; [INV] : _9 = *pxTicksToWait; if (xElapsedTime < _9) goto ; [INV] else goto ; [INV] : _10 = *pxTicksToWait; _11 = _10 - xElapsedTime; *pxTicksToWait = _11; vTaskInternalSetTimeOutState (pxTimeOut); xReturn = 0; goto ; [INV] : *pxTicksToWait = 0; xReturn = 1; : vPortExitCritical (); D.7963 = xReturn; : : return D.7963; } vTaskInternalSetTimeOutState (struct TimeOut_t * const pxTimeOut) { : xNumOfOverflows.96_1 = xNumOfOverflows; pxTimeOut->xOverflowCount = xNumOfOverflows.96_1; xTickCount.97_2 = xTickCount; pxTimeOut->xTimeOnEntering = xTickCount.97_2; return; } vTaskSetTimeOutState (struct TimeOut_t * const pxTimeOut) { : if (pxTimeOut == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); xNumOfOverflows.94_1 = xNumOfOverflows; pxTimeOut->xOverflowCount = xNumOfOverflows.94_1; xTickCount.95_2 = xTickCount; pxTimeOut->xTimeOnEntering = xTickCount.95_2; vPortExitCritical (); return; } vTaskRemoveFromUnorderedEventList (struct ListItem_t * pxEventListItem, const TickType_t xItemValue) { struct ListItem_t * const pxIndex; struct List_t * const pxList; struct List_t * const pxList; struct TCB_t * pxUnblockedTCB; : uxSchedulerSuspended.91_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.91_1 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _2 = xItemValue | 2147483648; pxEventListItem->xItemValue = _2; pxUnblockedTCB = pxEventListItem->pvOwner; if (pxUnblockedTCB == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxList = pxEventListItem->pvContainer; _3 = pxEventListItem->pxNext; _4 = pxEventListItem->pxPrevious; _3->pxPrevious = _4; _5 = pxEventListItem->pxPrevious; _6 = pxEventListItem->pxNext; _5->pxNext = _6; _7 = pxList->pxIndex; if (pxEventListItem == _7) goto ; [INV] else goto ; [INV] : _8 = pxEventListItem->pxPrevious; pxList->pxIndex = _8; : pxEventListItem->pvContainer = 0B; _9 = pxList->uxNumberOfItems; _10 = _9 + 4294967295; pxList->uxNumberOfItems = _10; pxList = pxUnblockedTCB->xStateListItem.pvContainer; _11 = pxUnblockedTCB->xStateListItem.pxNext; _12 = pxUnblockedTCB->xStateListItem.pxPrevious; _11->pxPrevious = _12; _13 = pxUnblockedTCB->xStateListItem.pxPrevious; _14 = pxUnblockedTCB->xStateListItem.pxNext; _13->pxNext = _14; _15 = pxList->pxIndex; _16 = &pxUnblockedTCB->xStateListItem; if (_15 == _16) goto ; [INV] else goto ; [INV] : _17 = pxUnblockedTCB->xStateListItem.pxPrevious; pxList->pxIndex = _17; : pxUnblockedTCB->xStateListItem.pvContainer = 0B; _18 = pxList->uxNumberOfItems; _19 = _18 + 4294967295; pxList->uxNumberOfItems = _19; _20 = pxUnblockedTCB->uxPriority; uxTopReadyPriority.92_21 = uxTopReadyPriority; if (_20 > uxTopReadyPriority.92_21) goto ; [INV] else goto ; [INV] : _22 = pxUnblockedTCB->uxPriority; uxTopReadyPriority = _22; : _23 = pxUnblockedTCB->uxPriority; pxIndex = pxReadyTasksLists[_23].pxIndex; pxUnblockedTCB->xStateListItem.pxNext = pxIndex; _24 = pxIndex->pxPrevious; pxUnblockedTCB->xStateListItem.pxPrevious = _24; _25 = pxIndex->pxPrevious; _26 = &pxUnblockedTCB->xStateListItem; _25->pxNext = _26; _27 = &pxUnblockedTCB->xStateListItem; pxIndex->pxPrevious = _27; _28 = pxUnblockedTCB->uxPriority; _29 = &pxReadyTasksLists[_28]; pxUnblockedTCB->xStateListItem.pvContainer = _29; _30 = pxUnblockedTCB->uxPriority; _31 = pxReadyTasksLists[_30].uxNumberOfItems; _32 = _31 + 1; pxReadyTasksLists[_30].uxNumberOfItems = _32; _33 = pxUnblockedTCB->uxPriority; pxCurrentTCB.93_34 = pxCurrentTCB; _35 = pxCurrentTCB.93_34->uxPriority; if (_33 > _35) goto ; [INV] else goto ; [INV] : xYieldPending = 1; : return; } xTaskRemoveFromEventList (const struct List_t * const pxEventList) { struct ListItem_t * const pxIndex; struct ListItem_t * const pxIndex; struct List_t * const pxList; struct List_t * const pxList; BaseType_t xReturn; struct TCB_t * pxUnblockedTCB; BaseType_t D.7930; : _1 = pxEventList->xListEnd.pxNext; pxUnblockedTCB = _1->pvOwner; if (pxUnblockedTCB == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxList = pxUnblockedTCB->xEventListItem.pvContainer; _2 = pxUnblockedTCB->xEventListItem.pxNext; _3 = pxUnblockedTCB->xEventListItem.pxPrevious; _2->pxPrevious = _3; _4 = pxUnblockedTCB->xEventListItem.pxPrevious; _5 = pxUnblockedTCB->xEventListItem.pxNext; _4->pxNext = _5; _6 = pxList->pxIndex; _7 = &pxUnblockedTCB->xEventListItem; if (_6 == _7) goto ; [INV] else goto ; [INV] : _8 = pxUnblockedTCB->xEventListItem.pxPrevious; pxList->pxIndex = _8; : pxUnblockedTCB->xEventListItem.pvContainer = 0B; _9 = pxList->uxNumberOfItems; _10 = _9 + 4294967295; pxList->uxNumberOfItems = _10; uxSchedulerSuspended.88_11 = uxSchedulerSuspended; if (uxSchedulerSuspended.88_11 == 0) goto ; [INV] else goto ; [INV] : pxList = pxUnblockedTCB->xStateListItem.pvContainer; _12 = pxUnblockedTCB->xStateListItem.pxNext; _13 = pxUnblockedTCB->xStateListItem.pxPrevious; _12->pxPrevious = _13; _14 = pxUnblockedTCB->xStateListItem.pxPrevious; _15 = pxUnblockedTCB->xStateListItem.pxNext; _14->pxNext = _15; _16 = pxList->pxIndex; _17 = &pxUnblockedTCB->xStateListItem; if (_16 == _17) goto ; [INV] else goto ; [INV] : _18 = pxUnblockedTCB->xStateListItem.pxPrevious; pxList->pxIndex = _18; : pxUnblockedTCB->xStateListItem.pvContainer = 0B; _19 = pxList->uxNumberOfItems; _20 = _19 + 4294967295; pxList->uxNumberOfItems = _20; _21 = pxUnblockedTCB->uxPriority; uxTopReadyPriority.89_22 = uxTopReadyPriority; if (_21 > uxTopReadyPriority.89_22) goto ; [INV] else goto ; [INV] : _23 = pxUnblockedTCB->uxPriority; uxTopReadyPriority = _23; : _24 = pxUnblockedTCB->uxPriority; pxIndex = pxReadyTasksLists[_24].pxIndex; pxUnblockedTCB->xStateListItem.pxNext = pxIndex; _25 = pxIndex->pxPrevious; pxUnblockedTCB->xStateListItem.pxPrevious = _25; _26 = pxIndex->pxPrevious; _27 = &pxUnblockedTCB->xStateListItem; _26->pxNext = _27; _28 = &pxUnblockedTCB->xStateListItem; pxIndex->pxPrevious = _28; _29 = pxUnblockedTCB->uxPriority; _30 = &pxReadyTasksLists[_29]; pxUnblockedTCB->xStateListItem.pvContainer = _30; _31 = pxUnblockedTCB->uxPriority; _32 = pxReadyTasksLists[_31].uxNumberOfItems; _33 = _32 + 1; pxReadyTasksLists[_31].uxNumberOfItems = _33; goto ; [INV] : pxIndex = xPendingReadyList.pxIndex; pxUnblockedTCB->xEventListItem.pxNext = pxIndex; _34 = pxIndex->pxPrevious; pxUnblockedTCB->xEventListItem.pxPrevious = _34; _35 = pxIndex->pxPrevious; _36 = &pxUnblockedTCB->xEventListItem; _35->pxNext = _36; _37 = &pxUnblockedTCB->xEventListItem; pxIndex->pxPrevious = _37; pxUnblockedTCB->xEventListItem.pvContainer = &xPendingReadyList; _38 = xPendingReadyList.uxNumberOfItems; _39 = _38 + 1; xPendingReadyList.uxNumberOfItems = _39; : _40 = pxUnblockedTCB->uxPriority; pxCurrentTCB.90_41 = pxCurrentTCB; _42 = pxCurrentTCB.90_41->uxPriority; if (_40 > _42) goto ; [INV] else goto ; [INV] : xReturn = 1; xYieldPending = 1; goto ; [INV] : xReturn = 0; : D.7930 = xReturn; : : return D.7930; } vTaskPlaceOnEventListRestricted (struct List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) { struct ListItem_t * const pxIndex; : if (pxEventList == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxIndex = pxEventList->pxIndex; pxCurrentTCB.83_1 = pxCurrentTCB; pxCurrentTCB.83_1->xEventListItem.pxNext = pxIndex; pxCurrentTCB.84_2 = pxCurrentTCB; _3 = pxIndex->pxPrevious; pxCurrentTCB.84_2->xEventListItem.pxPrevious = _3; pxCurrentTCB.85_4 = pxCurrentTCB; _5 = pxIndex->pxPrevious; _6 = &pxCurrentTCB.85_4->xEventListItem; _5->pxNext = _6; pxCurrentTCB.86_7 = pxCurrentTCB; _8 = &pxCurrentTCB.86_7->xEventListItem; pxIndex->pxPrevious = _8; pxCurrentTCB.87_9 = pxCurrentTCB; pxCurrentTCB.87_9->xEventListItem.pvContainer = pxEventList; _10 = pxEventList->uxNumberOfItems; _11 = _10 + 1; pxEventList->uxNumberOfItems = _11; if (xWaitIndefinitely != 0) goto ; [INV] else goto ; [INV] : xTicksToWait = 4294967295; : prvAddCurrentTaskToDelayedList (xTicksToWait, xWaitIndefinitely); return; } vTaskPlaceOnUnorderedEventList (struct List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait) { struct ListItem_t * const pxIndex; : if (pxEventList == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : uxSchedulerSuspended.76_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.76_1 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxCurrentTCB.77_2 = pxCurrentTCB; _3 = xItemValue | 2147483648; pxCurrentTCB.77_2->xEventListItem.xItemValue = _3; pxIndex = pxEventList->pxIndex; pxCurrentTCB.78_4 = pxCurrentTCB; pxCurrentTCB.78_4->xEventListItem.pxNext = pxIndex; pxCurrentTCB.79_5 = pxCurrentTCB; _6 = pxIndex->pxPrevious; pxCurrentTCB.79_5->xEventListItem.pxPrevious = _6; pxCurrentTCB.80_7 = pxCurrentTCB; _8 = pxIndex->pxPrevious; _9 = &pxCurrentTCB.80_7->xEventListItem; _8->pxNext = _9; pxCurrentTCB.81_10 = pxCurrentTCB; _11 = &pxCurrentTCB.81_10->xEventListItem; pxIndex->pxPrevious = _11; pxCurrentTCB.82_12 = pxCurrentTCB; pxCurrentTCB.82_12->xEventListItem.pvContainer = pxEventList; _13 = pxEventList->uxNumberOfItems; _14 = _13 + 1; pxEventList->uxNumberOfItems = _14; prvAddCurrentTaskToDelayedList (xTicksToWait, 1); return; } vTaskPlaceOnEventList (struct List_t * const pxEventList, const TickType_t xTicksToWait) { : if (pxEventList == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxCurrentTCB.75_1 = pxCurrentTCB; _2 = &pxCurrentTCB.75_1->xEventListItem; vListInsert (pxEventList, _2); prvAddCurrentTaskToDelayedList (xTicksToWait, 1); return; } __attribute__((used)) vTaskSwitchContext () { struct List_t * const pxConstList; UBaseType_t uxTopPriority; : uxSchedulerSuspended.74_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.74_1 != 0) goto ; [INV] else goto ; [INV] : xYieldPending = 1; goto ; [INV] : xYieldPending = 0; uxTopPriority = uxTopReadyPriority; goto ; [INV] : if (uxTopPriority == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : uxTopPriority = uxTopPriority + 4294967295; : _2 = pxReadyTasksLists[uxTopPriority].uxNumberOfItems; if (_2 == 0) goto ; [INV] else goto ; [INV] : pxConstList = &pxReadyTasksLists[uxTopPriority]; _3 = pxConstList->pxIndex; _4 = _3->pxNext; pxConstList->pxIndex = _4; _5 = pxConstList->pxIndex; _6 = &pxConstList->xListEnd; if (_5 == _6) goto ; [INV] else goto ; [INV] : _7 = pxConstList->pxIndex; _8 = _7->pxNext; pxConstList->pxIndex = _8; : _9 = pxConstList->pxIndex; _10 = _9->pvOwner; pxCurrentTCB = _10; uxTopReadyPriority = uxTopPriority; : return; } xTaskIncrementTick () { struct ListItem_t * const pxIndex; struct List_t * const pxList; struct List_t * const pxList; struct List_t * pxTemp; const TickType_t xConstTickCount; BaseType_t xSwitchRequired; TickType_t xItemValue; struct TCB_t * pxTCB; BaseType_t D.7897; : xSwitchRequired = 0; uxSchedulerSuspended.61_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.61_1 == 0) goto ; [INV] else goto ; [INV] : xTickCount.62_2 = xTickCount; xConstTickCount = xTickCount.62_2 + 1; xTickCount = xConstTickCount; if (xConstTickCount == 0) goto ; [INV] else goto ; [INV] : pxDelayedTaskList.63_3 = pxDelayedTaskList; _4 = pxDelayedTaskList.63_3->uxNumberOfItems; if (_4 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxTemp = pxDelayedTaskList; pxOverflowDelayedTaskList.64_5 = pxOverflowDelayedTaskList; pxDelayedTaskList = pxOverflowDelayedTaskList.64_5; pxOverflowDelayedTaskList = pxTemp; xNumOfOverflows.65_6 = xNumOfOverflows; _7 = xNumOfOverflows.65_6 + 1; xNumOfOverflows = _7; prvResetNextTaskUnblockTime (); : xNextTaskUnblockTime.66_8 = xNextTaskUnblockTime; if (xConstTickCount >= xNextTaskUnblockTime.66_8) goto ; [INV] else goto ; [INV] : pxDelayedTaskList.67_9 = pxDelayedTaskList; _10 = pxDelayedTaskList.67_9->uxNumberOfItems; if (_10 == 0) goto ; [INV] else goto ; [INV] : xNextTaskUnblockTime = 4294967295; goto ; [INV] : pxDelayedTaskList.68_11 = pxDelayedTaskList; _12 = pxDelayedTaskList.68_11->xListEnd.pxNext; pxTCB = _12->pvOwner; xItemValue = pxTCB->xStateListItem.xItemValue; if (xConstTickCount < xItemValue) goto ; [INV] else goto ; [INV] : xNextTaskUnblockTime = xItemValue; goto ; [INV] : pxList = pxTCB->xStateListItem.pvContainer; _13 = pxTCB->xStateListItem.pxNext; _14 = pxTCB->xStateListItem.pxPrevious; _13->pxPrevious = _14; _15 = pxTCB->xStateListItem.pxPrevious; _16 = pxTCB->xStateListItem.pxNext; _15->pxNext = _16; _17 = pxList->pxIndex; _18 = &pxTCB->xStateListItem; if (_17 == _18) goto ; [INV] else goto ; [INV] : _19 = pxTCB->xStateListItem.pxPrevious; pxList->pxIndex = _19; : pxTCB->xStateListItem.pvContainer = 0B; _20 = pxList->uxNumberOfItems; _21 = _20 + 4294967295; pxList->uxNumberOfItems = _21; _22 = pxTCB->xEventListItem.pvContainer; if (_22 != 0B) goto ; [INV] else goto ; [INV] : pxList = pxTCB->xEventListItem.pvContainer; _23 = pxTCB->xEventListItem.pxNext; _24 = pxTCB->xEventListItem.pxPrevious; _23->pxPrevious = _24; _25 = pxTCB->xEventListItem.pxPrevious; _26 = pxTCB->xEventListItem.pxNext; _25->pxNext = _26; _27 = pxList->pxIndex; _28 = &pxTCB->xEventListItem; if (_27 == _28) goto ; [INV] else goto ; [INV] : _29 = pxTCB->xEventListItem.pxPrevious; pxList->pxIndex = _29; : pxTCB->xEventListItem.pvContainer = 0B; _30 = pxList->uxNumberOfItems; _31 = _30 + 4294967295; pxList->uxNumberOfItems = _31; : _32 = pxTCB->uxPriority; uxTopReadyPriority.69_33 = uxTopReadyPriority; if (_32 > uxTopReadyPriority.69_33) goto ; [INV] else goto ; [INV] : _34 = pxTCB->uxPriority; uxTopReadyPriority = _34; : _35 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_35].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _36 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _36; _37 = pxIndex->pxPrevious; _38 = &pxTCB->xStateListItem; _37->pxNext = _38; _39 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _39; _40 = pxTCB->uxPriority; _41 = &pxReadyTasksLists[_40]; pxTCB->xStateListItem.pvContainer = _41; _42 = pxTCB->uxPriority; _43 = pxReadyTasksLists[_42].uxNumberOfItems; _44 = _43 + 1; pxReadyTasksLists[_42].uxNumberOfItems = _44; _45 = pxTCB->uxPriority; pxCurrentTCB.70_46 = pxCurrentTCB; _47 = pxCurrentTCB.70_46->uxPriority; if (_45 >= _47) goto ; [INV] else goto ; [INV] : xSwitchRequired = 1; : goto ; [INV] : pxCurrentTCB.71_48 = pxCurrentTCB; _49 = pxCurrentTCB.71_48->uxPriority; _50 = pxReadyTasksLists[_49].uxNumberOfItems; if (_50 > 1) goto ; [INV] else goto ; [INV] : xSwitchRequired = 1; : xYieldPending.72_51 = xYieldPending; if (xYieldPending.72_51 != 0) goto ; [INV] else goto ; [INV] : xSwitchRequired = 1; goto ; [INV] : xPendedTicks.73_52 = xPendedTicks; _53 = xPendedTicks.73_52 + 1; xPendedTicks = _53; : D.7897 = xSwitchRequired; : : return D.7897; } xTaskAbortDelay (struct tskTaskControlBlock * xTask) { struct ListItem_t * const pxIndex; BaseType_t xReturn; struct TCB_t * pxTCB; BaseType_t D.7863; : pxTCB = xTask; if (pxTCB == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vTaskSuspendAll (); _1 = eTaskGetState (xTask); if (_1 == 2) goto ; [INV] else goto ; [INV] : xReturn = 1; _2 = &pxTCB->xStateListItem; uxListRemove (_2); vPortEnterCritical (); _3 = pxTCB->xEventListItem.pvContainer; if (_3 != 0B) goto ; [INV] else goto ; [INV] : _4 = &pxTCB->xEventListItem; uxListRemove (_4); pxTCB->ucDelayAborted = 1; : vPortExitCritical (); _5 = pxTCB->uxPriority; uxTopReadyPriority.59_6 = uxTopReadyPriority; if (_5 > uxTopReadyPriority.59_6) goto ; [INV] else goto ; [INV] : _7 = pxTCB->uxPriority; uxTopReadyPriority = _7; : _8 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_8].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _9 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _9; _10 = pxIndex->pxPrevious; _11 = &pxTCB->xStateListItem; _10->pxNext = _11; _12 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _12; _13 = pxTCB->uxPriority; _14 = &pxReadyTasksLists[_13]; pxTCB->xStateListItem.pvContainer = _14; _15 = pxTCB->uxPriority; _16 = pxReadyTasksLists[_15].uxNumberOfItems; _17 = _16 + 1; pxReadyTasksLists[_15].uxNumberOfItems = _17; _18 = pxTCB->uxPriority; pxCurrentTCB.60_19 = pxCurrentTCB; _20 = pxCurrentTCB.60_19->uxPriority; if (_18 > _20) goto ; [INV] else goto ; [INV] : xYieldPending = 1; goto ; [INV] : xReturn = 0; : xTaskResumeAll (); D.7863 = xReturn; : : return D.7863; } xTaskCatchUpTicks (TickType_t xTicksToCatchUp) { BaseType_t xYieldOccurred; BaseType_t D.7848; : uxSchedulerSuspended.57_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.57_1 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vTaskSuspendAll (); xPendedTicks.58_2 = xPendedTicks; _3 = xTicksToCatchUp + xPendedTicks.58_2; xPendedTicks = _3; xYieldOccurred = xTaskResumeAll (); D.7848 = xYieldOccurred; : : return D.7848; } uxTaskGetSystemState (struct TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime) { UBaseType_t uxQueue; UBaseType_t uxTask; UBaseType_t D.7844; long unsigned int D.7840; long unsigned int D.7839; long unsigned int D.7838; long unsigned int D.7837; long unsigned int D.7836; : uxTask = 0; uxQueue = 5; vTaskSuspendAll (); uxCurrentNumberOfTasks.54_1 = uxCurrentNumberOfTasks; if (uxArraySize >= uxCurrentNumberOfTasks.54_1) goto ; [INV] else goto ; [INV] : uxQueue = uxQueue + 4294967295; _2 = uxTask * 36; _3 = pxTaskStatusArray + _2; _4 = &pxReadyTasksLists[uxQueue]; D.7836 = prvListTasksWithinSingleList (_3, _4, 1); uxTask = D.7836 + uxTask; if (uxQueue != 0) goto ; [INV] else goto ; [INV] : _5 = uxTask * 36; _6 = pxTaskStatusArray + _5; pxDelayedTaskList.55_7 = pxDelayedTaskList; D.7837 = prvListTasksWithinSingleList (_6, pxDelayedTaskList.55_7, 2); uxTask = D.7837 + uxTask; _8 = uxTask * 36; _9 = pxTaskStatusArray + _8; pxOverflowDelayedTaskList.56_10 = pxOverflowDelayedTaskList; D.7838 = prvListTasksWithinSingleList (_9, pxOverflowDelayedTaskList.56_10, 2); uxTask = D.7838 + uxTask; _11 = uxTask * 36; _12 = pxTaskStatusArray + _11; D.7839 = prvListTasksWithinSingleList (_12, &xTasksWaitingTermination, 4); uxTask = D.7839 + uxTask; _13 = uxTask * 36; _14 = pxTaskStatusArray + _13; D.7840 = prvListTasksWithinSingleList (_14, &xSuspendedTaskList, 3); uxTask = D.7840 + uxTask; if (pulTotalRunTime != 0B) goto ; [INV] else goto ; [INV] : *pulTotalRunTime = 0; : xTaskResumeAll (); D.7844 = uxTask; : : return D.7844; } xTaskGetHandle (const char * pcNameToQuery) { struct TCB_t * pxTCB; UBaseType_t uxQueue; struct tskTaskControlBlock * D.7832; : uxQueue = 5; _1 = strlen (pcNameToQuery); if (_1 > 9) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vTaskSuspendAll (); : uxQueue = uxQueue + 4294967295; _2 = &pxReadyTasksLists[uxQueue]; pxTCB = prvSearchForNameWithinSingleList (_2, pcNameToQuery); if (pxTCB != 0B) goto ; [INV] else goto ; [INV] : goto ; [INV] : if (uxQueue != 0) goto ; [INV] else goto ; [INV] : if (pxTCB == 0B) goto ; [INV] else goto ; [INV] : pxDelayedTaskList.52_3 = pxDelayedTaskList; pxTCB = prvSearchForNameWithinSingleList (pxDelayedTaskList.52_3, pcNameToQuery); : if (pxTCB == 0B) goto ; [INV] else goto ; [INV] : pxOverflowDelayedTaskList.53_4 = pxOverflowDelayedTaskList; pxTCB = prvSearchForNameWithinSingleList (pxOverflowDelayedTaskList.53_4, pcNameToQuery); : if (pxTCB == 0B) goto ; [INV] else goto ; [INV] : pxTCB = prvSearchForNameWithinSingleList (&xSuspendedTaskList, pcNameToQuery); : if (pxTCB == 0B) goto ; [INV] else goto ; [INV] : pxTCB = prvSearchForNameWithinSingleList (&xTasksWaitingTermination, pcNameToQuery); : xTaskResumeAll (); D.7832 = pxTCB; : : return D.7832; } prvSearchForNameWithinSingleList (struct List_t * pxList, const char * pcNameToQuery) { struct List_t * const pxConstList; struct List_t * const pxConstList; BaseType_t xBreakLoop; char cNextChar; UBaseType_t x; struct TCB_t * pxReturn; struct TCB_t * pxFirstTCB; struct TCB_t * pxNextTCB; struct TCB_t * D.7818; : pxReturn = 0B; _1 = pxList->uxNumberOfItems; if (_1 != 0) goto ; [INV] else goto ; [INV] : pxConstList = pxList; _2 = pxConstList->pxIndex; _3 = _2->pxNext; pxConstList->pxIndex = _3; _4 = pxConstList->pxIndex; _5 = &pxConstList->xListEnd; if (_4 == _5) goto ; [INV] else goto ; [INV] : _6 = pxConstList->pxIndex; _7 = _6->pxNext; pxConstList->pxIndex = _7; : _8 = pxConstList->pxIndex; pxFirstTCB = _8->pvOwner; : pxConstList = pxList; _9 = pxConstList->pxIndex; _10 = _9->pxNext; pxConstList->pxIndex = _10; _11 = pxConstList->pxIndex; _12 = &pxConstList->xListEnd; if (_11 == _12) goto ; [INV] else goto ; [INV] : _13 = pxConstList->pxIndex; _14 = _13->pxNext; pxConstList->pxIndex = _14; : _15 = pxConstList->pxIndex; pxNextTCB = _15->pvOwner; xBreakLoop = 0; x = 0; goto ; [INV] : cNextChar = pxNextTCB->pcTaskName[x]; _16 = pcNameToQuery + x; _17 = *_16; if (cNextChar != _17) goto ; [INV] else goto ; [INV] : xBreakLoop = 1; goto ; [INV] : if (cNextChar == 0) goto ; [INV] else goto ; [INV] : pxReturn = pxNextTCB; xBreakLoop = 1; : if (xBreakLoop != 0) goto ; [INV] else goto ; [INV] : goto ; [INV] : x = x + 1; : if (x <= 9) goto ; [INV] else goto ; [INV] : if (pxReturn != 0B) goto ; [INV] else goto ; [INV] : goto ; [INV] : if (pxNextTCB != pxFirstTCB) goto ; [INV] else goto ; [INV] : : D.7818 = pxReturn; : : return D.7818; } pcTaskGetName (struct tskTaskControlBlock * xTaskToQuery) { struct TCB_t * pxTCB; char * D.7799; struct TCB_t * iftmp.51; : if (xTaskToQuery == 0B) goto ; [INV] else goto ; [INV] : iftmp.51 = pxCurrentTCB; goto ; [INV] : iftmp.51 = xTaskToQuery; : pxTCB = iftmp.51; if (pxTCB == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : D.7799 = &pxTCB->pcTaskName[0]; : : return D.7799; } uxTaskGetNumberOfTasks () { UBaseType_t D.7791; : D.7791 = uxCurrentNumberOfTasks; : : return D.7791; } xTaskGetTickCountFromISR () { UBaseType_t uxSavedInterruptStatus; TickType_t xReturn; TickType_t D.7789; : vPortValidateInterruptPriority (); uxSavedInterruptStatus = 0; xReturn = xTickCount; D.7789 = xReturn; : : return D.7789; } xTaskGetTickCount () { TickType_t xTicks; TickType_t D.7787; : xTicks = xTickCount; D.7787 = xTicks; : : return D.7787; } xTaskResumeAll () { TickType_t xPendedCounts; struct ListItem_t * const pxIndex; struct List_t * const pxList; struct List_t * const pxList; BaseType_t xAlreadyYielded; struct TCB_t * pxTCB; BaseType_t D.7785; : pxTCB = 0B; xAlreadyYielded = 0; uxSchedulerSuspended.44_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.44_1 == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortEnterCritical (); uxSchedulerSuspended.45_2 = uxSchedulerSuspended; _3 = uxSchedulerSuspended.45_2 + 4294967295; uxSchedulerSuspended = _3; uxSchedulerSuspended.46_4 = uxSchedulerSuspended; if (uxSchedulerSuspended.46_4 == 0) goto ; [INV] else goto ; [INV] : uxCurrentNumberOfTasks.47_5 = uxCurrentNumberOfTasks; if (uxCurrentNumberOfTasks.47_5 != 0) goto ; [INV] else goto ; [INV] : goto ; [INV] : _6 = xPendingReadyList.xListEnd.pxNext; pxTCB = _6->pvOwner; pxList = pxTCB->xEventListItem.pvContainer; _7 = pxTCB->xEventListItem.pxNext; _8 = pxTCB->xEventListItem.pxPrevious; _7->pxPrevious = _8; _9 = pxTCB->xEventListItem.pxPrevious; _10 = pxTCB->xEventListItem.pxNext; _9->pxNext = _10; _11 = pxList->pxIndex; _12 = &pxTCB->xEventListItem; if (_11 == _12) goto ; [INV] else goto ; [INV] : _13 = pxTCB->xEventListItem.pxPrevious; pxList->pxIndex = _13; : pxTCB->xEventListItem.pvContainer = 0B; _14 = pxList->uxNumberOfItems; _15 = _14 + 4294967295; pxList->uxNumberOfItems = _15; __asm__ __volatile__("" : : : "memory"); pxList = pxTCB->xStateListItem.pvContainer; _16 = pxTCB->xStateListItem.pxNext; _17 = pxTCB->xStateListItem.pxPrevious; _16->pxPrevious = _17; _18 = pxTCB->xStateListItem.pxPrevious; _19 = pxTCB->xStateListItem.pxNext; _18->pxNext = _19; _20 = pxList->pxIndex; _21 = &pxTCB->xStateListItem; if (_20 == _21) goto ; [INV] else goto ; [INV] : _22 = pxTCB->xStateListItem.pxPrevious; pxList->pxIndex = _22; : pxTCB->xStateListItem.pvContainer = 0B; _23 = pxList->uxNumberOfItems; _24 = _23 + 4294967295; pxList->uxNumberOfItems = _24; _25 = pxTCB->uxPriority; uxTopReadyPriority.48_26 = uxTopReadyPriority; if (_25 > uxTopReadyPriority.48_26) goto ; [INV] else goto ; [INV] : _27 = pxTCB->uxPriority; uxTopReadyPriority = _27; : _28 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_28].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _29 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _29; _30 = pxIndex->pxPrevious; _31 = &pxTCB->xStateListItem; _30->pxNext = _31; _32 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _32; _33 = pxTCB->uxPriority; _34 = &pxReadyTasksLists[_33]; pxTCB->xStateListItem.pvContainer = _34; _35 = pxTCB->uxPriority; _36 = pxReadyTasksLists[_35].uxNumberOfItems; _37 = _36 + 1; pxReadyTasksLists[_35].uxNumberOfItems = _37; _38 = pxTCB->uxPriority; pxCurrentTCB.49_39 = pxCurrentTCB; _40 = pxCurrentTCB.49_39->uxPriority; if (_38 >= _40) goto ; [INV] else goto ; [INV] : xYieldPending = 1; : _41 = xPendingReadyList.uxNumberOfItems; if (_41 != 0) goto ; [INV] else goto ; [INV] : if (pxTCB != 0B) goto ; [INV] else goto ; [INV] : prvResetNextTaskUnblockTime (); : xPendedCounts = xPendedTicks; if (xPendedCounts != 0) goto ; [INV] else goto ; [INV] : _42 = xTaskIncrementTick (); if (_42 != 0) goto ; [INV] else goto ; [INV] : xYieldPending = 1; : xPendedCounts = xPendedCounts + 4294967295; if (xPendedCounts != 0) goto ; [INV] else goto ; [INV] : xPendedTicks = 0; : xYieldPending.50_43 = xYieldPending; if (xYieldPending.50_43 != 0) goto ; [INV] else goto ; [INV] : xAlreadyYielded = 1; _44 = 3758157060B; *_44 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); D.7785 = xAlreadyYielded; : : return D.7785; } vTaskSuspendAll () { : uxSchedulerSuspended.43_1 = uxSchedulerSuspended; _2 = uxSchedulerSuspended.43_1 + 1; uxSchedulerSuspended = _2; __asm__ __volatile__("" : : : "memory"); return; } vTaskEndScheduler () { : vPortRaiseBASEPRI (); xSchedulerRunning = 0; vPortEndScheduler (); return; } vTaskStartScheduler () { BaseType_t xReturn; long unsigned int vol.42; : xReturn = xTaskCreate (prvIdleTask, "IDLE", 90, 0B, 0, &xIdleTaskHandle); if (xReturn == 1) goto ; [INV] else goto ; [INV] : xReturn = xTimerCreateTimerTask (); : if (xReturn == 1) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); xNextTaskUnblockTime = 4294967295; xSchedulerRunning = 1; xTickCount = 0; _1 = xPortStartScheduler (); goto ; [INV] : if (xReturn == -1) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vol.42 = uxTopUsedPriority; return; } xTaskResumeFromISR (struct tskTaskControlBlock * xTaskToResume) { struct ListItem_t * const pxIndex; UBaseType_t uxSavedInterruptStatus; struct TCB_t * const pxTCB; BaseType_t xYieldRequired; BaseType_t D.7744; : xYieldRequired = 0; pxTCB = xTaskToResume; if (xTaskToResume == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vPortValidateInterruptPriority (); uxSavedInterruptStatus = ulPortRaiseBASEPRI (); _1 = prvTaskIsTaskSuspended (pxTCB); if (_1 != 0) goto ; [INV] else goto ; [INV] : uxSchedulerSuspended.39_2 = uxSchedulerSuspended; if (uxSchedulerSuspended.39_2 == 0) goto ; [INV] else goto ; [INV] : _3 = pxTCB->uxPriority; pxCurrentTCB.40_4 = pxCurrentTCB; _5 = pxCurrentTCB.40_4->uxPriority; if (_3 >= _5) goto ; [INV] else goto ; [INV] : xYieldRequired = 1; xYieldPending = 1; : _6 = &pxTCB->xStateListItem; uxListRemove (_6); _7 = pxTCB->uxPriority; uxTopReadyPriority.41_8 = uxTopReadyPriority; if (_7 > uxTopReadyPriority.41_8) goto ; [INV] else goto ; [INV] : _9 = pxTCB->uxPriority; uxTopReadyPriority = _9; : _10 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_10].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _11 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _11; _12 = pxIndex->pxPrevious; _13 = &pxTCB->xStateListItem; _12->pxNext = _13; _14 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _14; _15 = pxTCB->uxPriority; _16 = &pxReadyTasksLists[_15]; pxTCB->xStateListItem.pvContainer = _16; _17 = pxTCB->uxPriority; _18 = pxReadyTasksLists[_17].uxNumberOfItems; _19 = _18 + 1; pxReadyTasksLists[_17].uxNumberOfItems = _19; goto ; [INV] : _20 = &pxTCB->xEventListItem; vListInsertEnd (&xPendingReadyList, _20); : vPortSetBASEPRI (uxSavedInterruptStatus); D.7744 = xYieldRequired; : : return D.7744; } vTaskResume (struct tskTaskControlBlock * xTaskToResume) { struct ListItem_t * const pxIndex; struct TCB_t * const pxTCB; : pxTCB = xTaskToResume; if (xTaskToResume == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxCurrentTCB.36_1 = pxCurrentTCB; if (pxTCB != pxCurrentTCB.36_1) goto ; [INV] else goto ; [INV] : if (pxTCB != 0B) goto ; [INV] else goto ; [INV] : vPortEnterCritical (); _2 = prvTaskIsTaskSuspended (pxTCB); if (_2 != 0) goto ; [INV] else goto ; [INV] : _3 = &pxTCB->xStateListItem; uxListRemove (_3); _4 = pxTCB->uxPriority; uxTopReadyPriority.37_5 = uxTopReadyPriority; if (_4 > uxTopReadyPriority.37_5) goto ; [INV] else goto ; [INV] : _6 = pxTCB->uxPriority; uxTopReadyPriority = _6; : _7 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_7].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _8 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _8; _9 = pxIndex->pxPrevious; _10 = &pxTCB->xStateListItem; _9->pxNext = _10; _11 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _11; _12 = pxTCB->uxPriority; _13 = &pxReadyTasksLists[_12]; pxTCB->xStateListItem.pvContainer = _13; _14 = pxTCB->uxPriority; _15 = pxReadyTasksLists[_14].uxNumberOfItems; _16 = _15 + 1; pxReadyTasksLists[_14].uxNumberOfItems = _16; _17 = pxTCB->uxPriority; pxCurrentTCB.38_18 = pxCurrentTCB; _19 = pxCurrentTCB.38_18->uxPriority; if (_17 >= _19) goto ; [INV] else goto ; [INV] : _20 = 3758157060B; *_20 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); : return; } prvTaskIsTaskSuspended (struct tskTaskControlBlock * const xTask) { const struct TCB_t * const pxTCB; BaseType_t xReturn; BaseType_t D.7714; : xReturn = 0; pxTCB = xTask; if (xTask == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _1 = pxTCB->xStateListItem.pvContainer; if (_1 == &xSuspendedTaskList) goto ; [INV] else goto ; [INV] : _2 = pxTCB->xEventListItem.pvContainer; if (_2 != &xPendingReadyList) goto ; [INV] else goto ; [INV] : _3 = pxTCB->xEventListItem.pvContainer; if (_3 == 0B) goto ; [INV] else goto ; [INV] : xReturn = 1; : D.7714 = xReturn; : : return D.7714; } vTaskSuspend (struct tskTaskControlBlock * xTaskToSuspend) { BaseType_t x; struct TCB_t * pxTCB; struct TCB_t * iftmp.30; : vPortEnterCritical (); if (xTaskToSuspend == 0B) goto ; [INV] else goto ; [INV] : iftmp.30 = pxCurrentTCB; goto ; [INV] : iftmp.30 = xTaskToSuspend; : pxTCB = iftmp.30; _1 = &pxTCB->xStateListItem; _2 = uxListRemove (_1); : _3 = pxTCB->xEventListItem.pvContainer; if (_3 != 0B) goto ; [INV] else goto ; [INV] : _4 = &pxTCB->xEventListItem; uxListRemove (_4); : _5 = &pxTCB->xStateListItem; vListInsertEnd (&xSuspendedTaskList, _5); x = 0; goto ; [INV] : _6 = pxTCB->ucNotifyState[x]; if (_6 == 1) goto ; [INV] else goto ; [INV] : pxTCB->ucNotifyState[x] = 0; : x = x + 1; : if (x <= 0) goto ; [INV] else goto ; [INV] : vPortExitCritical (); xSchedulerRunning.31_7 = xSchedulerRunning; if (xSchedulerRunning.31_7 != 0) goto ; [INV] else goto ; [INV] : vPortEnterCritical (); prvResetNextTaskUnblockTime (); vPortExitCritical (); : pxCurrentTCB.32_8 = pxCurrentTCB; if (pxTCB == pxCurrentTCB.32_8) goto ; [INV] else goto ; [INV] : xSchedulerRunning.33_9 = xSchedulerRunning; if (xSchedulerRunning.33_9 != 0) goto ; [INV] else goto ; [INV] : uxSchedulerSuspended.34_10 = uxSchedulerSuspended; if (uxSchedulerSuspended.34_10 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _11 = 3758157060B; *_11 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); goto ; [INV] : _12 = xSuspendedTaskList.uxNumberOfItems; uxCurrentNumberOfTasks.35_13 = uxCurrentNumberOfTasks; if (_12 == uxCurrentNumberOfTasks.35_13) goto ; [INV] else goto ; [INV] : pxCurrentTCB = 0B; goto ; [INV] : vTaskSwitchContext (); : return; } vTaskPrioritySet (struct tskTaskControlBlock * xTask, UBaseType_t uxNewPriority) { struct ListItem_t * const pxIndex; BaseType_t xYieldRequired; UBaseType_t uxPriorityUsedOnEntry; UBaseType_t uxCurrentBasePriority; struct TCB_t * pxTCB; struct TCB_t * iftmp.25; : xYieldRequired = 0; if (uxNewPriority > 4) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (uxNewPriority > 4) goto ; [INV] else goto ; [INV] : uxNewPriority = 4; : vPortEnterCritical (); if (xTask == 0B) goto ; [INV] else goto ; [INV] : iftmp.25 = pxCurrentTCB; goto ; [INV] : iftmp.25 = xTask; : pxTCB = iftmp.25; uxCurrentBasePriority = pxTCB->uxBasePriority; if (uxCurrentBasePriority != uxNewPriority) goto ; [INV] else goto ; [INV] : if (uxNewPriority > uxCurrentBasePriority) goto ; [INV] else goto ; [INV] : pxCurrentTCB.26_1 = pxCurrentTCB; if (pxTCB != pxCurrentTCB.26_1) goto ; [INV] else goto ; [INV] : pxCurrentTCB.27_2 = pxCurrentTCB; _3 = pxCurrentTCB.27_2->uxPriority; if (uxNewPriority >= _3) goto ; [INV] else goto ; [INV] : xYieldRequired = 1; goto ; [INV] : pxCurrentTCB.28_4 = pxCurrentTCB; if (pxTCB == pxCurrentTCB.28_4) goto ; [INV] else goto ; [INV] : xYieldRequired = 1; : uxPriorityUsedOnEntry = pxTCB->uxPriority; _5 = pxTCB->uxBasePriority; _6 = pxTCB->uxPriority; if (_5 == _6) goto ; [INV] else goto ; [INV] : pxTCB->uxPriority = uxNewPriority; : pxTCB->uxBasePriority = uxNewPriority; _7 = pxTCB->xEventListItem.xItemValue; _8 = (signed int) _7; if (_8 >= 0) goto ; [INV] else goto ; [INV] : _9 = 5 - uxNewPriority; pxTCB->xEventListItem.xItemValue = _9; : _10 = pxTCB->xStateListItem.pvContainer; _11 = &pxReadyTasksLists[uxPriorityUsedOnEntry]; if (_10 == _11) goto ; [INV] else goto ; [INV] : _12 = &pxTCB->xStateListItem; _13 = uxListRemove (_12); : _14 = pxTCB->uxPriority; uxTopReadyPriority.29_15 = uxTopReadyPriority; if (_14 > uxTopReadyPriority.29_15) goto ; [INV] else goto ; [INV] : _16 = pxTCB->uxPriority; uxTopReadyPriority = _16; : _17 = pxTCB->uxPriority; pxIndex = pxReadyTasksLists[_17].pxIndex; pxTCB->xStateListItem.pxNext = pxIndex; _18 = pxIndex->pxPrevious; pxTCB->xStateListItem.pxPrevious = _18; _19 = pxIndex->pxPrevious; _20 = &pxTCB->xStateListItem; _19->pxNext = _20; _21 = &pxTCB->xStateListItem; pxIndex->pxPrevious = _21; _22 = pxTCB->uxPriority; _23 = &pxReadyTasksLists[_22]; pxTCB->xStateListItem.pvContainer = _23; _24 = pxTCB->uxPriority; _25 = pxReadyTasksLists[_24].uxNumberOfItems; _26 = _25 + 1; pxReadyTasksLists[_24].uxNumberOfItems = _26; : if (xYieldRequired != 0) goto ; [INV] else goto ; [INV] : _27 = 3758157060B; *_27 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : vPortExitCritical (); return; } uxTaskPriorityGetFromISR (struct tskTaskControlBlock * const xTask) { UBaseType_t uxSavedInterruptState; UBaseType_t uxReturn; const struct TCB_t * pxTCB; UBaseType_t D.7633; const struct TCB_t * iftmp.24; : vPortValidateInterruptPriority (); uxSavedInterruptState = ulPortRaiseBASEPRI (); if (xTask == 0B) goto ; [INV] else goto ; [INV] : iftmp.24 = pxCurrentTCB; goto ; [INV] : iftmp.24 = xTask; : pxTCB = iftmp.24; uxReturn = pxTCB->uxPriority; vPortSetBASEPRI (uxSavedInterruptState); D.7633 = uxReturn; : : return D.7633; } uxTaskPriorityGet (struct tskTaskControlBlock * const xTask) { UBaseType_t uxReturn; const struct TCB_t * pxTCB; UBaseType_t D.7627; const struct TCB_t * iftmp.23; : vPortEnterCritical (); if (xTask == 0B) goto ; [INV] else goto ; [INV] : iftmp.23 = pxCurrentTCB; goto ; [INV] : iftmp.23 = xTask; : pxTCB = iftmp.23; uxReturn = pxTCB->uxPriority; vPortExitCritical (); D.7627 = uxReturn; : : return D.7627; } eTaskGetState (struct tskTaskControlBlock * xTask) { BaseType_t x; const struct TCB_t * const pxTCB; const struct List_t * pxOverflowedDelayedList; const struct List_t * pxDelayedList; const struct List_t * pxStateList; eTaskState eReturn; eTaskState D.7621; : pxTCB = xTask; if (pxTCB == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxCurrentTCB.22_1 = pxCurrentTCB; if (pxTCB == pxCurrentTCB.22_1) goto ; [INV] else goto ; [INV] : eReturn = 0; goto ; [INV] : vPortEnterCritical (); pxStateList = pxTCB->xStateListItem.pvContainer; pxDelayedList = pxDelayedTaskList; pxOverflowedDelayedList = pxOverflowDelayedTaskList; vPortExitCritical (); if (pxStateList == pxDelayedList) goto ; [INV] else goto ; [INV] : if (pxStateList == pxOverflowedDelayedList) goto ; [INV] else goto ; [INV] : eReturn = 2; goto ; [INV] : if (pxStateList == &xSuspendedTaskList) goto ; [INV] else goto ; [INV] : _2 = pxTCB->xEventListItem.pvContainer; if (_2 == 0B) goto ; [INV] else goto ; [INV] : eReturn = 3; x = 0; goto ; [INV] : _3 = pxTCB->ucNotifyState[x]; if (_3 == 1) goto ; [INV] else goto ; [INV] : eReturn = 2; goto ; [INV] : x = x + 1; : if (x <= 0) goto ; [INV] else goto ; [INV] : goto ; [INV] : eReturn = 2; goto ; [INV] : if (pxStateList == &xTasksWaitingTermination) goto ; [INV] else goto ; [INV] : if (pxStateList == 0B) goto ; [INV] else goto ; [INV] : eReturn = 4; goto ; [INV] : eReturn = 1; : D.7621 = eReturn; : : return D.7621; } vTaskDelay (const TickType_t xTicksToDelay) { BaseType_t xAlreadyYielded; : xAlreadyYielded = 0; if (xTicksToDelay != 0) goto ; [INV] else goto ; [INV] : uxSchedulerSuspended.21_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.21_1 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vTaskSuspendAll (); prvAddCurrentTaskToDelayedList (xTicksToDelay, 0); xAlreadyYielded = xTaskResumeAll (); : if (xAlreadyYielded == 0) goto ; [INV] else goto ; [INV] : _2 = 3758157060B; *_2 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : return; } xTaskDelayUntil (TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement) { const TickType_t xConstTickCount; BaseType_t xShouldDelay; BaseType_t xAlreadyYielded; TickType_t xTimeToWake; BaseType_t D.7590; : xShouldDelay = 0; if (pxPreviousWakeTime == 0B) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (xTimeIncrement == 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : uxSchedulerSuspended.20_1 = uxSchedulerSuspended; if (uxSchedulerSuspended.20_1 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : vTaskSuspendAll (); xConstTickCount = xTickCount; _2 = *pxPreviousWakeTime; xTimeToWake = xTimeIncrement + _2; _3 = *pxPreviousWakeTime; if (xConstTickCount < _3) goto ; [INV] else goto ; [INV] : _4 = *pxPreviousWakeTime; if (xTimeToWake < _4) goto ; [INV] else goto ; [INV] : if (xTimeToWake > xConstTickCount) goto ; [INV] else goto ; [INV] : xShouldDelay = 1; goto ; [INV] : _5 = *pxPreviousWakeTime; if (xTimeToWake < _5) goto ; [INV] else goto ; [INV] : if (xTimeToWake > xConstTickCount) goto ; [INV] else goto ; [INV] : xShouldDelay = 1; : *pxPreviousWakeTime = xTimeToWake; if (xShouldDelay != 0) goto ; [INV] else goto ; [INV] : _6 = xTimeToWake - xConstTickCount; prvAddCurrentTaskToDelayedList (_6, 0); : xAlreadyYielded = xTaskResumeAll (); if (xAlreadyYielded == 0) goto ; [INV] else goto ; [INV] : _7 = 3758157060B; *_7 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : D.7590 = xShouldDelay; : : return D.7590; } vTaskDelete (struct tskTaskControlBlock * xTaskToDelete) { struct TCB_t * pxTCB; struct TCB_t * iftmp.12; : vPortEnterCritical (); if (xTaskToDelete == 0B) goto ; [INV] else goto ; [INV] : iftmp.12 = pxCurrentTCB; goto ; [INV] : iftmp.12 = xTaskToDelete; : pxTCB = iftmp.12; _1 = &pxTCB->xStateListItem; _2 = uxListRemove (_1); : _3 = pxTCB->xEventListItem.pvContainer; if (_3 != 0B) goto ; [INV] else goto ; [INV] : _4 = &pxTCB->xEventListItem; uxListRemove (_4); : uxTaskNumber.13_5 = uxTaskNumber; _6 = uxTaskNumber.13_5 + 1; uxTaskNumber = _6; pxCurrentTCB.14_7 = pxCurrentTCB; if (pxTCB == pxCurrentTCB.14_7) goto ; [INV] else goto ; [INV] : _8 = &pxTCB->xStateListItem; vListInsertEnd (&xTasksWaitingTermination, _8); uxDeletedTasksWaitingCleanUp.15_9 = uxDeletedTasksWaitingCleanUp; _10 = uxDeletedTasksWaitingCleanUp.15_9 + 1; uxDeletedTasksWaitingCleanUp = _10; goto ; [INV] : uxCurrentNumberOfTasks.16_11 = uxCurrentNumberOfTasks; _12 = uxCurrentNumberOfTasks.16_11 + 4294967295; uxCurrentNumberOfTasks = _12; prvDeleteTCB (pxTCB); prvResetNextTaskUnblockTime (); : vPortExitCritical (); xSchedulerRunning.17_13 = xSchedulerRunning; if (xSchedulerRunning.17_13 != 0) goto ; [INV] else goto ; [INV] : pxCurrentTCB.18_14 = pxCurrentTCB; if (pxTCB == pxCurrentTCB.18_14) goto ; [INV] else goto ; [INV] : uxSchedulerSuspended.19_15 = uxSchedulerSuspended; if (uxSchedulerSuspended.19_15 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : _16 = 3758157060B; *_16 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : return; } prvAddNewTaskToReadyList (struct TCB_t * pxNewTCB) { struct ListItem_t * const pxIndex; : vPortEnterCritical (); uxCurrentNumberOfTasks.2_1 = uxCurrentNumberOfTasks; _2 = uxCurrentNumberOfTasks.2_1 + 1; uxCurrentNumberOfTasks = _2; pxCurrentTCB.3_3 = pxCurrentTCB; if (pxCurrentTCB.3_3 == 0B) goto ; [INV] else goto ; [INV] : pxCurrentTCB = pxNewTCB; uxCurrentNumberOfTasks.4_4 = uxCurrentNumberOfTasks; if (uxCurrentNumberOfTasks.4_4 == 1) goto ; [INV] else goto ; [INV] : prvInitialiseTaskLists (); goto ; [INV] : xSchedulerRunning.5_5 = xSchedulerRunning; if (xSchedulerRunning.5_5 == 0) goto ; [INV] else goto ; [INV] : pxCurrentTCB.6_6 = pxCurrentTCB; _7 = pxCurrentTCB.6_6->uxPriority; _8 = pxNewTCB->uxPriority; if (_7 <= _8) goto ; [INV] else goto ; [INV] : pxCurrentTCB = pxNewTCB; : uxTaskNumber.7_9 = uxTaskNumber; _10 = uxTaskNumber.7_9 + 1; uxTaskNumber = _10; uxTaskNumber.8_11 = uxTaskNumber; pxNewTCB->uxTCBNumber = uxTaskNumber.8_11; _12 = pxNewTCB->uxPriority; uxTopReadyPriority.9_13 = uxTopReadyPriority; if (_12 > uxTopReadyPriority.9_13) goto ; [INV] else goto ; [INV] : _14 = pxNewTCB->uxPriority; uxTopReadyPriority = _14; : _15 = pxNewTCB->uxPriority; pxIndex = pxReadyTasksLists[_15].pxIndex; pxNewTCB->xStateListItem.pxNext = pxIndex; _16 = pxIndex->pxPrevious; pxNewTCB->xStateListItem.pxPrevious = _16; _17 = pxIndex->pxPrevious; _18 = &pxNewTCB->xStateListItem; _17->pxNext = _18; _19 = &pxNewTCB->xStateListItem; pxIndex->pxPrevious = _19; _20 = pxNewTCB->uxPriority; _21 = &pxReadyTasksLists[_20]; pxNewTCB->xStateListItem.pvContainer = _21; _22 = pxNewTCB->uxPriority; _23 = pxReadyTasksLists[_22].uxNumberOfItems; _24 = _23 + 1; pxReadyTasksLists[_22].uxNumberOfItems = _24; vPortExitCritical (); xSchedulerRunning.10_25 = xSchedulerRunning; if (xSchedulerRunning.10_25 != 0) goto ; [INV] else goto ; [INV] : pxCurrentTCB.11_26 = pxCurrentTCB; _27 = pxCurrentTCB.11_26->uxPriority; _28 = pxNewTCB->uxPriority; if (_27 < _28) goto ; [INV] else goto ; [INV] : _29 = 3758157060B; *_29 = 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : return; } prvInitialiseNewTask (void (*TaskFunction_t) (void *) pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, struct tskTaskControlBlock * * const pxCreatedTask, struct TCB_t * pxNewTCB, const struct MemoryRegion_t * const xRegions) { UBaseType_t x; StackType_t * pxTopOfStack; : _1 = pxNewTCB->pxStack; _2 = ulStackDepth * 4; memset (_1, 165, _2); _3 = pxNewTCB->pxStack; _4 = ulStackDepth + 1073741823; _5 = _4 * 4; pxTopOfStack = _3 + _5; pxTopOfStack.0_6 = (long unsigned int) pxTopOfStack; _7 = pxTopOfStack.0_6 & 4294967288; pxTopOfStack = (StackType_t *) _7; pxTopOfStack.1_8 = (long unsigned int) pxTopOfStack; _9 = pxTopOfStack.1_8 & 7; if (_9 != 0) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : pxNewTCB->pxEndOfStack = pxTopOfStack; if (pcName != 0B) goto ; [INV] else goto ; [INV] : x = 0; goto ; [INV] : _10 = pcName + x; _11 = *_10; pxNewTCB->pcTaskName[x] = _11; _12 = pcName + x; _13 = *_12; if (_13 == 0) goto ; [INV] else goto ; [INV] : goto ; [INV] : x = x + 1; : if (x <= 9) goto ; [INV] else goto ; [INV] : pxNewTCB->pcTaskName[9] = 0; goto ; [INV] : pxNewTCB->pcTaskName[0] = 0; : if (uxPriority > 4) goto ; [INV] else goto ; [INV] : vPortRaiseBASEPRI (); : goto ; [INV] : if (uxPriority > 4) goto ; [INV] else goto ; [INV] : uxPriority = 4; : pxNewTCB->uxPriority = uxPriority; pxNewTCB->uxBasePriority = uxPriority; pxNewTCB->uxMutexesHeld = 0; _14 = &pxNewTCB->xStateListItem; vListInitialiseItem (_14); _15 = &pxNewTCB->xEventListItem; vListInitialiseItem (_15); pxNewTCB->xStateListItem.pvOwner = pxNewTCB; _16 = 5 - uxPriority; pxNewTCB->xEventListItem.xItemValue = _16; pxNewTCB->xEventListItem.pvOwner = pxNewTCB; _17 = &pxNewTCB->ulNotifiedValue[0]; memset (_17, 0, 4); _18 = &pxNewTCB->ucNotifyState[0]; memset (_18, 0, 1); pxNewTCB->ucDelayAborted = 0; _19 = pxPortInitialiseStack (pxTopOfStack, pxTaskCode, pvParameters); pxNewTCB->pxTopOfStack = _19; if (pxCreatedTask != 0B) goto ; [INV] else goto ; [INV] : *pxCreatedTask = pxNewTCB; : return; } xTaskCreate (void (*TaskFunction_t) (void *) pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, struct tskTaskControlBlock * * const pxCreatedTask) { StackType_t * pxStack; BaseType_t xReturn; struct TCB_t * pxNewTCB; BaseType_t D.7510; : _1 = (unsigned int) usStackDepth; _2 = _1 * 4; pxStack = pvPortMalloc (_2); if (pxStack != 0B) goto ; [INV] else goto ; [INV] : pxNewTCB = pvPortMalloc (92); if (pxNewTCB != 0B) goto ; [INV] else goto ; [INV] : pxNewTCB->pxStack = pxStack; goto ; [INV] : vPortFree (pxStack); goto ; [INV] : pxNewTCB = 0B; : if (pxNewTCB != 0B) goto ; [INV] else goto ; [INV] : _3 = (long unsigned int) usStackDepth; prvInitialiseNewTask (pxTaskCode, pcName, _3, pvParameters, uxPriority, pxCreatedTask, pxNewTCB, 0B); prvAddNewTaskToReadyList (pxNewTCB); xReturn = 1; goto ; [INV] : xReturn = -1; : D.7510 = xReturn; : : return D.7510; } __attribute__((always_inline)) vPortSetBASEPRI (uint32_t ulNewMaskValue) { : __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue : "memory"); return; } __attribute__((always_inline)) ulPortRaiseBASEPRI () { uint32_t ulNewBASEPRI; uint32_t ulOriginalBASEPRI; uint32_t D.7635; : __asm__ __volatile__(" mrs %0, basepri mov %1, %2 msr basepri, %1 isb dsb " : "=r" ulOriginalBASEPRI, "=r" ulNewBASEPRI : "i" 16 : "memory"); D.7635 = ulOriginalBASEPRI; : : return D.7635; } __attribute__((always_inline)) vPortRaiseBASEPRI () { uint32_t ulNewBASEPRI; : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI : "i" 16 : "memory"); return; }