queue.c.016i.visibility 73 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507
  1. Marking local functions: vPortSetBASEPRI ulPortRaiseBASEPRI vPortRaiseBASEPRI
  2. Marking externally visible functions: vQueueWaitForMessageRestricted vQueueUnregisterQueue pcQueueGetName vQueueAddToRegistry xQueueIsQueueFullFromISR xQueueIsQueueEmptyFromISR ucQueueGetQueueType vQueueSetQueueNumber uxQueueGetQueueNumber vQueueDelete uxQueueMessagesWaitingFromISR uxQueueSpacesAvailable uxQueueMessagesWaiting xQueuePeekFromISR xQueueReceiveFromISR xQueuePeek xQueueSemaphoreTake xQueueReceive xQueueGiveFromISR xQueueGenericSendFromISR xQueueGenericSend xQueueCreateCountingSemaphore xQueueTakeMutexRecursive xQueueGiveMutexRecursive xQueueGetMutexHolderFromISR xQueueGetMutexHolder xQueueCreateMutex xQueueGenericCreate xQueueGenericReset
  3. Marking externally visible variables: xQueueRegistry
  4. Reclaiming functions:
  5. Reclaiming variables:
  6. Clearing address taken flags:
  7. Symbol table:
  8. vTaskPlaceOnEventListRestricted/62 (vTaskPlaceOnEventListRestricted) @060be700
  9. Type: function
  10. Visibility: external public
  11. References:
  12. Referring:
  13. Availability: not_available
  14. Function flags:
  15. Called by: vQueueWaitForMessageRestricted/41
  16. Calls:
  17. vTaskMissedYield/61 (vTaskMissedYield) @060a6ee0
  18. Type: function
  19. Visibility: external public
  20. References:
  21. Referring:
  22. Availability: not_available
  23. Function flags:
  24. Called by: prvUnlockQueue/33 prvUnlockQueue/33
  25. Calls:
  26. memcpy/60 (memcpy) @060a6c40
  27. Type: function
  28. Visibility: external public
  29. References:
  30. Referring:
  31. Availability: not_available
  32. Function flags:
  33. Called by: prvCopyDataFromQueue/32 prvCopyDataToQueue/31 prvCopyDataToQueue/31
  34. Calls:
  35. xTaskPriorityDisinherit/59 (xTaskPriorityDisinherit) @060a6b60
  36. Type: function
  37. Visibility: external public
  38. References:
  39. Referring:
  40. Availability: not_available
  41. Function flags:
  42. Called by: prvCopyDataToQueue/31
  43. Calls:
  44. vPortFree/58 (vPortFree) @060a6540
  45. Type: function
  46. Visibility: external public
  47. References:
  48. Referring:
  49. Availability: not_available
  50. Function flags:
  51. Called by: vQueueDelete/26
  52. Calls:
  53. vTaskPriorityDisinheritAfterTimeout/57 (vTaskPriorityDisinheritAfterTimeout) @0606dd20
  54. Type: function
  55. Visibility: external public
  56. References:
  57. Referring:
  58. Availability: not_available
  59. Function flags:
  60. Called by: xQueueSemaphoreTake/19
  61. Calls:
  62. xTaskPriorityInherit/56 (xTaskPriorityInherit) @0606dc40
  63. Type: function
  64. Visibility: external public
  65. References:
  66. Referring:
  67. Availability: not_available
  68. Function flags:
  69. Called by: xQueueSemaphoreTake/19
  70. Calls:
  71. pvTaskIncrementMutexHeldCount/55 (pvTaskIncrementMutexHeldCount) @0606db60
  72. Type: function
  73. Visibility: external public
  74. References:
  75. Referring:
  76. Availability: not_available
  77. Function flags:
  78. Called by: xQueueSemaphoreTake/19
  79. Calls:
  80. vPortValidateInterruptPriority/54 (vPortValidateInterruptPriority) @0606d0e0
  81. Type: function
  82. Visibility: external public
  83. References:
  84. Referring:
  85. Availability: not_available
  86. Function flags:
  87. Called by: xQueuePeekFromISR/22 xQueueReceiveFromISR/21 xQueueGiveFromISR/17 xQueueGenericSendFromISR/16
  88. Calls:
  89. xTaskResumeAll/53 (xTaskResumeAll) @06013ee0
  90. Type: function
  91. Visibility: external public
  92. References:
  93. Referring:
  94. Availability: not_available
  95. Function flags:
  96. Called by: xQueuePeek/20 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 xQueueReceive/18 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15
  97. Calls:
  98. vTaskPlaceOnEventList/52 (vTaskPlaceOnEventList) @06013e00
  99. Type: function
  100. Visibility: external public
  101. References:
  102. Referring:
  103. Availability: not_available
  104. Function flags:
  105. Called by: xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueGenericSend/15
  106. Calls:
  107. xTaskCheckForTimeOut/51 (xTaskCheckForTimeOut) @06013d20
  108. Type: function
  109. Visibility: external public
  110. References:
  111. Referring:
  112. Availability: not_available
  113. Function flags:
  114. Called by: xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueGenericSend/15
  115. Calls:
  116. vTaskSuspendAll/50 (vTaskSuspendAll) @06013c40
  117. Type: function
  118. Visibility: external public
  119. References:
  120. Referring:
  121. Availability: not_available
  122. Function flags:
  123. Called by: xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueGenericSend/15
  124. Calls:
  125. vTaskInternalSetTimeOutState/49 (vTaskInternalSetTimeOutState) @06013b60
  126. Type: function
  127. Visibility: external public
  128. References:
  129. Referring:
  130. Availability: not_available
  131. Function flags:
  132. Called by: xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueGenericSend/15
  133. Calls:
  134. xTaskGetSchedulerState/48 (xTaskGetSchedulerState) @06013a80
  135. Type: function
  136. Visibility: external public
  137. References:
  138. Referring:
  139. Availability: not_available
  140. Function flags:
  141. Called by: xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueGenericSend/15
  142. Calls:
  143. xTaskGetCurrentTaskHandle/47 (xTaskGetCurrentTaskHandle) @06013540
  144. Type: function
  145. Visibility: external public
  146. References:
  147. Referring:
  148. Availability: not_available
  149. Function flags:
  150. Called by: xQueueTakeMutexRecursive/13 xQueueGiveMutexRecursive/12
  151. Calls:
  152. pvPortMalloc/46 (pvPortMalloc) @06009460
  153. Type: function
  154. Visibility: external public
  155. References:
  156. Referring:
  157. Availability: not_available
  158. Function flags:
  159. Called by: xQueueGenericCreate/6
  160. Calls:
  161. vPortExitCritical/45 (vPortExitCritical) @06009e00
  162. Type: function
  163. Visibility: external public
  164. References:
  165. Referring:
  166. Availability: not_available
  167. Function flags:
  168. Called by: vQueueWaitForMessageRestricted/41 prvIsQueueFull/36 prvIsQueueEmpty/34 prvUnlockQueue/33 prvUnlockQueue/33 uxQueueSpacesAvailable/24 uxQueueMessagesWaiting/23 xQueuePeek/20 xQueuePeek/20 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 xQueueReceive/18 xQueueReceive/18 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGetMutexHolder/10 xQueueGenericReset/5
  169. Calls:
  170. vListInitialise/44 (vListInitialise) @06009d20
  171. Type: function
  172. Visibility: external public
  173. References:
  174. Referring:
  175. Availability: not_available
  176. Function flags:
  177. Called by: xQueueGenericReset/5 xQueueGenericReset/5
  178. Calls:
  179. xTaskRemoveFromEventList/43 (xTaskRemoveFromEventList) @06009c40
  180. Type: function
  181. Visibility: external public
  182. References:
  183. Referring:
  184. Availability: not_available
  185. Function flags:
  186. Called by: prvUnlockQueue/33 prvUnlockQueue/33 xQueueReceiveFromISR/21 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueGiveFromISR/17 xQueueGenericSendFromISR/16 xQueueGenericSend/15 xQueueGenericReset/5
  187. Calls:
  188. vPortEnterCritical/42 (vPortEnterCritical) @06009b60
  189. Type: function
  190. Visibility: external public
  191. References:
  192. Referring:
  193. Availability: not_available
  194. Function flags:
  195. Called by: vQueueWaitForMessageRestricted/41 prvIsQueueFull/36 prvIsQueueEmpty/34 prvUnlockQueue/33 prvUnlockQueue/33 uxQueueSpacesAvailable/24 uxQueueMessagesWaiting/23 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGetMutexHolder/10 xQueueGenericReset/5
  196. Calls:
  197. vQueueWaitForMessageRestricted/41 (vQueueWaitForMessageRestricted) @06009620
  198. Type: function definition analyzed
  199. Visibility: force_output externally_visible no_reorder public
  200. References:
  201. Referring:
  202. Availability: available
  203. Function flags: body
  204. Called by:
  205. Calls: prvUnlockQueue/33 vTaskPlaceOnEventListRestricted/62 vPortExitCritical/45 vPortEnterCritical/42
  206. vQueueUnregisterQueue/40 (vQueueUnregisterQueue) @06009380
  207. Type: function definition analyzed
  208. Visibility: force_output externally_visible no_reorder public
  209. References: xQueueRegistry/4 (read)xQueueRegistry/4 (write)xQueueRegistry/4 (write)
  210. Referring:
  211. Availability: available
  212. Function flags: body
  213. Called by: vQueueDelete/26
  214. Calls: vPortRaiseBASEPRI/1
  215. pcQueueGetName/39 (pcQueueGetName) @06009000
  216. Type: function definition analyzed
  217. Visibility: force_output externally_visible no_reorder public
  218. References: xQueueRegistry/4 (read)xQueueRegistry/4 (read)
  219. Referring:
  220. Availability: available
  221. Function flags: body
  222. Called by:
  223. Calls: vPortRaiseBASEPRI/1
  224. vQueueAddToRegistry/38 (vQueueAddToRegistry) @060018c0
  225. Type: function definition analyzed
  226. Visibility: force_output externally_visible no_reorder public
  227. References: xQueueRegistry/4 (read)xQueueRegistry/4 (addr)xQueueRegistry/4 (read)xQueueRegistry/4 (addr)
  228. Referring:
  229. Availability: available
  230. Function flags: body
  231. Called by:
  232. Calls: vPortRaiseBASEPRI/1
  233. xQueueIsQueueFullFromISR/37 (xQueueIsQueueFullFromISR) @06001e00
  234. Type: function definition analyzed
  235. Visibility: force_output externally_visible no_reorder public
  236. References:
  237. Referring:
  238. Availability: available
  239. Function flags: body
  240. Called by:
  241. Calls: vPortRaiseBASEPRI/1
  242. prvIsQueueFull/36 (prvIsQueueFull) @06001a80
  243. Type: function definition analyzed
  244. Visibility: force_output no_reorder prevailing_def_ironly
  245. References:
  246. Referring:
  247. Availability: available
  248. Function flags: body
  249. Called by: xQueueGenericSend/15
  250. Calls: vPortExitCritical/45 vPortEnterCritical/42
  251. xQueueIsQueueEmptyFromISR/35 (xQueueIsQueueEmptyFromISR) @060017e0
  252. Type: function definition analyzed
  253. Visibility: force_output externally_visible no_reorder public
  254. References:
  255. Referring:
  256. Availability: available
  257. Function flags: body
  258. Called by:
  259. Calls: vPortRaiseBASEPRI/1
  260. prvIsQueueEmpty/34 (prvIsQueueEmpty) @06001460
  261. Type: function definition analyzed
  262. Visibility: force_output no_reorder prevailing_def_ironly
  263. References:
  264. Referring:
  265. Availability: available
  266. Function flags: body
  267. Called by: xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18
  268. Calls: vPortExitCritical/45 vPortEnterCritical/42
  269. prvUnlockQueue/33 (prvUnlockQueue) @060011c0
  270. Type: function definition analyzed
  271. Visibility: force_output no_reorder prevailing_def_ironly
  272. References:
  273. Referring:
  274. Availability: available
  275. Function flags: body
  276. Called by: vQueueWaitForMessageRestricted/41 xQueuePeek/20 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 xQueueReceive/18 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15
  277. Calls: vPortExitCritical/45 vTaskMissedYield/61 xTaskRemoveFromEventList/43 vPortEnterCritical/42 vPortExitCritical/45 vTaskMissedYield/61 xTaskRemoveFromEventList/43 vPortEnterCritical/42
  278. prvCopyDataFromQueue/32 (prvCopyDataFromQueue) @05ffb9a0
  279. Type: function definition analyzed
  280. Visibility: force_output no_reorder prevailing_def_ironly
  281. References:
  282. Referring:
  283. Availability: available
  284. Function flags: body
  285. Called by: xQueuePeekFromISR/22 xQueueReceiveFromISR/21 xQueuePeek/20 xQueueReceive/18
  286. Calls: memcpy/60
  287. prvCopyDataToQueue/31 (prvCopyDataToQueue) @05ffb460
  288. Type: function definition analyzed
  289. Visibility: force_output no_reorder prevailing_def_ironly
  290. References:
  291. Referring:
  292. Availability: available
  293. Function flags: body
  294. Called by: xQueueGenericSendFromISR/16 xQueueGenericSend/15
  295. Calls: memcpy/60 memcpy/60 xTaskPriorityDisinherit/59
  296. prvGetDisinheritPriorityAfterTimeout/30 (prvGetDisinheritPriorityAfterTimeout) @05ffbee0
  297. Type: function definition analyzed
  298. Visibility: force_output no_reorder prevailing_def_ironly
  299. References:
  300. Referring:
  301. Availability: available
  302. Function flags: body
  303. Called by: xQueueSemaphoreTake/19
  304. Calls:
  305. ucQueueGetQueueType/29 (ucQueueGetQueueType) @05ffbb60
  306. Type: function definition analyzed
  307. Visibility: force_output externally_visible no_reorder public
  308. References:
  309. Referring:
  310. Availability: available
  311. Function flags: body
  312. Called by:
  313. Calls:
  314. vQueueSetQueueNumber/28 (vQueueSetQueueNumber) @05ffb8c0
  315. Type: function definition analyzed
  316. Visibility: force_output externally_visible no_reorder public
  317. References:
  318. Referring:
  319. Availability: available
  320. Function flags: body
  321. Called by:
  322. Calls:
  323. uxQueueGetQueueNumber/27 (uxQueueGetQueueNumber) @05ffb620
  324. Type: function definition analyzed
  325. Visibility: force_output externally_visible no_reorder public
  326. References:
  327. Referring:
  328. Availability: available
  329. Function flags: body
  330. Called by:
  331. Calls:
  332. vQueueDelete/26 (vQueueDelete) @05ffb380
  333. Type: function definition analyzed
  334. Visibility: force_output externally_visible no_reorder public
  335. References:
  336. Referring:
  337. Availability: available
  338. Function flags: body
  339. Called by:
  340. Calls: vPortFree/58 vQueueUnregisterQueue/40 vPortRaiseBASEPRI/1
  341. uxQueueMessagesWaitingFromISR/25 (uxQueueMessagesWaitingFromISR) @05ffb000
  342. Type: function definition analyzed
  343. Visibility: force_output externally_visible no_reorder public
  344. References:
  345. Referring:
  346. Availability: available
  347. Function flags: body
  348. Called by:
  349. Calls: vPortRaiseBASEPRI/1
  350. uxQueueSpacesAvailable/24 (uxQueueSpacesAvailable) @05ff2620
  351. Type: function definition analyzed
  352. Visibility: force_output externally_visible no_reorder public
  353. References:
  354. Referring:
  355. Availability: available
  356. Function flags: body
  357. Called by:
  358. Calls: vPortExitCritical/45 vPortEnterCritical/42 vPortRaiseBASEPRI/1
  359. uxQueueMessagesWaiting/23 (uxQueueMessagesWaiting) @05ff2d20
  360. Type: function definition analyzed
  361. Visibility: force_output externally_visible no_reorder public
  362. References:
  363. Referring:
  364. Availability: available
  365. Function flags: body
  366. Called by:
  367. Calls: vPortExitCritical/45 vPortEnterCritical/42 vPortRaiseBASEPRI/1
  368. xQueuePeekFromISR/22 (xQueuePeekFromISR) @05ff29a0
  369. Type: function definition analyzed
  370. Visibility: force_output externally_visible no_reorder public
  371. References:
  372. Referring:
  373. Availability: available
  374. Function flags: body
  375. Called by:
  376. Calls: vPortSetBASEPRI/3 prvCopyDataFromQueue/32 ulPortRaiseBASEPRI/2 vPortValidateInterruptPriority/54 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  377. xQueueReceiveFromISR/21 (xQueueReceiveFromISR) @05ff2540
  378. Type: function definition analyzed
  379. Visibility: force_output externally_visible no_reorder public
  380. References:
  381. Referring:
  382. Availability: available
  383. Function flags: body
  384. Called by:
  385. Calls: vPortSetBASEPRI/3 vPortRaiseBASEPRI/1 xTaskRemoveFromEventList/43 prvCopyDataFromQueue/32 ulPortRaiseBASEPRI/2 vPortValidateInterruptPriority/54 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  386. xQueuePeek/20 (xQueuePeek) @05ff20e0
  387. Type: function definition analyzed
  388. Visibility: force_output externally_visible no_reorder public
  389. References:
  390. Referring:
  391. Availability: available
  392. Function flags: body
  393. Called by:
  394. Calls: prvIsQueueEmpty/34 xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 vTaskPlaceOnEventList/52 prvIsQueueEmpty/34 xTaskCheckForTimeOut/51 vPortExitCritical/45 vPortEnterCritical/42 vTaskSuspendAll/50 vPortExitCritical/45 vTaskInternalSetTimeOutState/49 vPortExitCritical/45 vPortExitCritical/45 xTaskRemoveFromEventList/43 prvCopyDataFromQueue/32 vPortEnterCritical/42 vPortRaiseBASEPRI/1 xTaskGetSchedulerState/48 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  395. xQueueSemaphoreTake/19 (xQueueSemaphoreTake) @05fe4d20
  396. Type: function definition analyzed
  397. Visibility: force_output externally_visible no_reorder public
  398. References:
  399. Referring:
  400. Availability: available
  401. Function flags: body
  402. Called by: xQueueTakeMutexRecursive/13
  403. Calls: vPortExitCritical/45 vTaskPriorityDisinheritAfterTimeout/57 prvGetDisinheritPriorityAfterTimeout/30 vPortEnterCritical/42 prvIsQueueEmpty/34 xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 vTaskPlaceOnEventList/52 vPortExitCritical/45 xTaskPriorityInherit/56 vPortEnterCritical/42 prvIsQueueEmpty/34 xTaskCheckForTimeOut/51 vPortExitCritical/45 vPortEnterCritical/42 vTaskSuspendAll/50 vPortExitCritical/45 vTaskInternalSetTimeOutState/49 vPortExitCritical/45 vPortRaiseBASEPRI/1 vPortExitCritical/45 xTaskRemoveFromEventList/43 pvTaskIncrementMutexHeldCount/55 vPortEnterCritical/42 vPortRaiseBASEPRI/1 xTaskGetSchedulerState/48 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  404. xQueueReceive/18 (xQueueReceive) @05fe4620
  405. Type: function definition analyzed
  406. Visibility: force_output externally_visible no_reorder public
  407. References:
  408. Referring:
  409. Availability: available
  410. Function flags: body
  411. Called by:
  412. Calls: prvIsQueueEmpty/34 xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 vTaskPlaceOnEventList/52 prvIsQueueEmpty/34 xTaskCheckForTimeOut/51 vPortExitCritical/45 vPortEnterCritical/42 vTaskSuspendAll/50 vPortExitCritical/45 vTaskInternalSetTimeOutState/49 vPortExitCritical/45 vPortExitCritical/45 xTaskRemoveFromEventList/43 prvCopyDataFromQueue/32 vPortEnterCritical/42 vPortRaiseBASEPRI/1 xTaskGetSchedulerState/48 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  413. xQueueGiveFromISR/17 (xQueueGiveFromISR) @05fe4000
  414. Type: function definition analyzed
  415. Visibility: force_output externally_visible no_reorder public
  416. References:
  417. Referring:
  418. Availability: available
  419. Function flags: body
  420. Called by:
  421. Calls: vPortSetBASEPRI/3 vPortRaiseBASEPRI/1 xTaskRemoveFromEventList/43 ulPortRaiseBASEPRI/2 vPortValidateInterruptPriority/54 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  422. xQueueGenericSendFromISR/16 (xQueueGenericSendFromISR) @05f8de00
  423. Type: function definition analyzed
  424. Visibility: force_output externally_visible no_reorder public
  425. References:
  426. Referring:
  427. Availability: available
  428. Function flags: body
  429. Called by:
  430. Calls: vPortSetBASEPRI/3 vPortRaiseBASEPRI/1 xTaskRemoveFromEventList/43 prvCopyDataToQueue/31 ulPortRaiseBASEPRI/2 vPortValidateInterruptPriority/54 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  431. xQueueGenericSend/15 (xQueueGenericSend) @05f8d9a0
  432. Type: function definition analyzed
  433. Visibility: force_output externally_visible no_reorder public
  434. References:
  435. Referring:
  436. Availability: available
  437. Function flags: body
  438. Called by: xQueueGiveMutexRecursive/12 prvInitialiseMutex/8
  439. Calls: xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 xTaskResumeAll/53 prvUnlockQueue/33 vTaskPlaceOnEventList/52 prvIsQueueFull/36 xTaskCheckForTimeOut/51 vPortExitCritical/45 vPortEnterCritical/42 vTaskSuspendAll/50 vPortExitCritical/45 vTaskInternalSetTimeOutState/49 vPortExitCritical/45 vPortExitCritical/45 xTaskRemoveFromEventList/43 prvCopyDataToQueue/31 vPortEnterCritical/42 vPortRaiseBASEPRI/1 xTaskGetSchedulerState/48 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1 vPortRaiseBASEPRI/1
  440. xQueueCreateCountingSemaphore/14 (xQueueCreateCountingSemaphore) @05f8d2a0
  441. Type: function definition analyzed
  442. Visibility: force_output externally_visible no_reorder public
  443. References:
  444. Referring:
  445. Availability: available
  446. Function flags: body
  447. Called by:
  448. Calls: vPortRaiseBASEPRI/1 xQueueGenericCreate/6
  449. xQueueTakeMutexRecursive/13 (xQueueTakeMutexRecursive) @05f85ee0
  450. Type: function definition analyzed
  451. Visibility: force_output externally_visible no_reorder public
  452. References:
  453. Referring:
  454. Availability: available
  455. Function flags: body
  456. Called by:
  457. Calls: xQueueSemaphoreTake/19 xTaskGetCurrentTaskHandle/47 vPortRaiseBASEPRI/1
  458. xQueueGiveMutexRecursive/12 (xQueueGiveMutexRecursive) @05f85540
  459. Type: function definition analyzed
  460. Visibility: force_output externally_visible no_reorder public
  461. References:
  462. Referring:
  463. Availability: available
  464. Function flags: body
  465. Called by:
  466. Calls: xQueueGenericSend/15 xTaskGetCurrentTaskHandle/47 vPortRaiseBASEPRI/1
  467. xQueueGetMutexHolderFromISR/11 (xQueueGetMutexHolderFromISR) @05f85e00
  468. Type: function definition analyzed
  469. Visibility: force_output externally_visible no_reorder public
  470. References:
  471. Referring:
  472. Availability: available
  473. Function flags: body
  474. Called by:
  475. Calls: vPortRaiseBASEPRI/1
  476. xQueueGetMutexHolder/10 (xQueueGetMutexHolder) @05f85a80
  477. Type: function definition analyzed
  478. Visibility: force_output externally_visible no_reorder public
  479. References:
  480. Referring:
  481. Availability: available
  482. Function flags: body
  483. Called by:
  484. Calls: vPortExitCritical/45 vPortEnterCritical/42 vPortRaiseBASEPRI/1
  485. xQueueCreateMutex/9 (xQueueCreateMutex) @05f85700
  486. Type: function definition analyzed
  487. Visibility: force_output externally_visible no_reorder public
  488. References:
  489. Referring:
  490. Availability: available
  491. Function flags: body
  492. Called by:
  493. Calls: prvInitialiseMutex/8 xQueueGenericCreate/6
  494. prvInitialiseMutex/8 (prvInitialiseMutex) @05f85460
  495. Type: function definition analyzed
  496. Visibility: force_output no_reorder prevailing_def_ironly
  497. References:
  498. Referring:
  499. Availability: available
  500. Function flags: body
  501. Called by: xQueueCreateMutex/9
  502. Calls: xQueueGenericSend/15
  503. prvInitialiseNewQueue/7 (prvInitialiseNewQueue) @05f851c0
  504. Type: function definition analyzed
  505. Visibility: force_output no_reorder prevailing_def_ironly
  506. References:
  507. Referring:
  508. Availability: available
  509. Function flags: body
  510. Called by: xQueueGenericCreate/6
  511. Calls: xQueueGenericReset/5
  512. xQueueGenericCreate/6 (xQueueGenericCreate) @05f9ce00
  513. Type: function definition analyzed
  514. Visibility: force_output externally_visible no_reorder public
  515. References:
  516. Referring:
  517. Availability: available
  518. Function flags: body
  519. Called by: xQueueCreateCountingSemaphore/14 xQueueCreateMutex/9
  520. Calls: vPortRaiseBASEPRI/1 prvInitialiseNewQueue/7 pvPortMalloc/46
  521. xQueueGenericReset/5 (xQueueGenericReset) @05f9cd20
  522. Type: function definition analyzed
  523. Visibility: force_output externally_visible no_reorder public
  524. References:
  525. Referring:
  526. Availability: available
  527. Function flags: body
  528. Called by: prvInitialiseNewQueue/7
  529. Calls: vPortRaiseBASEPRI/1 vPortExitCritical/45 vListInitialise/44 vListInitialise/44 xTaskRemoveFromEventList/43 vPortEnterCritical/42 vPortRaiseBASEPRI/1
  530. xQueueRegistry/4 (xQueueRegistry) @05f98630
  531. Type: variable definition analyzed
  532. Visibility: force_output externally_visible no_reorder public
  533. References:
  534. Referring: vQueueAddToRegistry/38 (read)vQueueAddToRegistry/38 (addr)vQueueAddToRegistry/38 (read)vQueueAddToRegistry/38 (addr)pcQueueGetName/39 (read)pcQueueGetName/39 (read)vQueueUnregisterQueue/40 (read)vQueueUnregisterQueue/40 (write)vQueueUnregisterQueue/40 (write)
  535. Availability: available
  536. Varpool flags:
  537. vPortSetBASEPRI/3 (vPortSetBASEPRI) @05f1bb60
  538. Type: function definition analyzed
  539. Visibility: no_reorder prevailing_def_ironly
  540. References:
  541. Referring:
  542. Availability: local
  543. Function flags: body local
  544. Called by: xQueuePeekFromISR/22 xQueueReceiveFromISR/21 xQueueGiveFromISR/17 xQueueGenericSendFromISR/16
  545. Calls:
  546. ulPortRaiseBASEPRI/2 (ulPortRaiseBASEPRI) @05f1b8c0
  547. Type: function definition analyzed
  548. Visibility: no_reorder prevailing_def_ironly
  549. References:
  550. Referring:
  551. Availability: local
  552. Function flags: body local
  553. Called by: xQueuePeekFromISR/22 xQueueReceiveFromISR/21 xQueueGiveFromISR/17 xQueueGenericSendFromISR/16
  554. Calls:
  555. vPortRaiseBASEPRI/1 (vPortRaiseBASEPRI) @05f1b540
  556. Type: function definition analyzed
  557. Visibility: no_reorder prevailing_def_ironly
  558. References:
  559. Referring:
  560. Availability: local
  561. Function flags: body local
  562. Called by: vQueueUnregisterQueue/40 pcQueueGetName/39 vQueueAddToRegistry/38 xQueueIsQueueFullFromISR/37 xQueueIsQueueEmptyFromISR/35 vQueueDelete/26 uxQueueMessagesWaitingFromISR/25 uxQueueSpacesAvailable/24 uxQueueMessagesWaiting/23 xQueuePeekFromISR/22 xQueuePeekFromISR/22 xQueuePeekFromISR/22 xQueueReceiveFromISR/21 xQueueReceiveFromISR/21 xQueueReceiveFromISR/21 xQueuePeek/20 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 xQueueReceive/18 xQueueGiveFromISR/17 xQueueGiveFromISR/17 xQueueGiveFromISR/17 xQueueGiveFromISR/17 xQueueGenericSendFromISR/16 xQueueGenericSendFromISR/16 xQueueGenericSendFromISR/16 xQueueGenericSendFromISR/16 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 xQueueCreateCountingSemaphore/14 xQueueTakeMutexRecursive/13 xQueueGiveMutexRecursive/12 xQueueGetMutexHolderFromISR/11 xQueueGetMutexHolder/10 xQueueGenericCreate/6 xQueueGenericReset/5 xQueueGenericReset/5
  563. Calls:
  564. vQueueWaitForMessageRestricted (struct QueueDefinition * xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely)
  565. {
  566. struct Queue_t * const pxQueue;
  567. <bb 2> :
  568. pxQueue = xQueue;
  569. vPortEnterCritical ();
  570. _1 = pxQueue->cRxLock;
  571. if (_1 == -1)
  572. goto <bb 3>; [INV]
  573. else
  574. goto <bb 4>; [INV]
  575. <bb 3> :
  576. pxQueue->cRxLock = 0;
  577. <bb 4> :
  578. _2 = pxQueue->cTxLock;
  579. if (_2 == -1)
  580. goto <bb 5>; [INV]
  581. else
  582. goto <bb 6>; [INV]
  583. <bb 5> :
  584. pxQueue->cTxLock = 0;
  585. <bb 6> :
  586. vPortExitCritical ();
  587. _3 = pxQueue->uxMessagesWaiting;
  588. if (_3 == 0)
  589. goto <bb 7>; [INV]
  590. else
  591. goto <bb 8>; [INV]
  592. <bb 7> :
  593. _4 = &pxQueue->xTasksWaitingToReceive;
  594. vTaskPlaceOnEventListRestricted (_4, xTicksToWait, xWaitIndefinitely);
  595. <bb 8> :
  596. prvUnlockQueue (pxQueue);
  597. return;
  598. }
  599. vQueueUnregisterQueue (struct QueueDefinition * xQueue)
  600. {
  601. UBaseType_t ux;
  602. <bb 2> :
  603. if (xQueue == 0B)
  604. goto <bb 3>; [INV]
  605. else
  606. goto <bb 5>; [INV]
  607. <bb 3> :
  608. vPortRaiseBASEPRI ();
  609. <bb 4> :
  610. goto <bb 4>; [INV]
  611. <bb 5> :
  612. ux = 0;
  613. goto <bb 9>; [INV]
  614. <bb 6> :
  615. _1 = xQueueRegistry[ux].xHandle;
  616. if (xQueue == _1)
  617. goto <bb 7>; [INV]
  618. else
  619. goto <bb 8>; [INV]
  620. <bb 7> :
  621. xQueueRegistry[ux].pcQueueName = 0B;
  622. xQueueRegistry[ux].xHandle = 0B;
  623. goto <bb 10>; [INV]
  624. <bb 8> :
  625. ux = ux + 1;
  626. <bb 9> :
  627. if (ux <= 1)
  628. goto <bb 6>; [INV]
  629. else
  630. goto <bb 10>; [INV]
  631. <bb 10> :
  632. return;
  633. }
  634. pcQueueGetName (struct QueueDefinition * xQueue)
  635. {
  636. const char * pcReturn;
  637. UBaseType_t ux;
  638. const char * D.7264;
  639. <bb 2> :
  640. pcReturn = 0B;
  641. if (xQueue == 0B)
  642. goto <bb 3>; [INV]
  643. else
  644. goto <bb 5>; [INV]
  645. <bb 3> :
  646. vPortRaiseBASEPRI ();
  647. <bb 4> :
  648. goto <bb 4>; [INV]
  649. <bb 5> :
  650. ux = 0;
  651. goto <bb 9>; [INV]
  652. <bb 6> :
  653. _1 = xQueueRegistry[ux].xHandle;
  654. if (xQueue == _1)
  655. goto <bb 7>; [INV]
  656. else
  657. goto <bb 8>; [INV]
  658. <bb 7> :
  659. pcReturn = xQueueRegistry[ux].pcQueueName;
  660. goto <bb 10>; [INV]
  661. <bb 8> :
  662. ux = ux + 1;
  663. <bb 9> :
  664. if (ux <= 1)
  665. goto <bb 6>; [INV]
  666. else
  667. goto <bb 10>; [INV]
  668. <bb 10> :
  669. D.7264 = pcReturn;
  670. <bb 11> :
  671. <L8>:
  672. return D.7264;
  673. }
  674. vQueueAddToRegistry (struct QueueDefinition * xQueue, const char * pcQueueName)
  675. {
  676. struct QueueRegistryItem_t * pxEntryToWrite;
  677. UBaseType_t ux;
  678. <bb 2> :
  679. if (xQueue == 0B)
  680. goto <bb 3>; [INV]
  681. else
  682. goto <bb 5>; [INV]
  683. <bb 3> :
  684. vPortRaiseBASEPRI ();
  685. <bb 4> :
  686. goto <bb 4>; [INV]
  687. <bb 5> :
  688. pxEntryToWrite = 0B;
  689. if (pcQueueName != 0B)
  690. goto <bb 6>; [INV]
  691. else
  692. goto <bb 14>; [INV]
  693. <bb 6> :
  694. ux = 0;
  695. goto <bb 13>; [INV]
  696. <bb 7> :
  697. _1 = xQueueRegistry[ux].xHandle;
  698. if (xQueue == _1)
  699. goto <bb 8>; [INV]
  700. else
  701. goto <bb 9>; [INV]
  702. <bb 8> :
  703. pxEntryToWrite = &xQueueRegistry[ux];
  704. goto <bb 14>; [INV]
  705. <bb 9> :
  706. if (pxEntryToWrite == 0B)
  707. goto <bb 10>; [INV]
  708. else
  709. goto <bb 12>; [INV]
  710. <bb 10> :
  711. _2 = xQueueRegistry[ux].pcQueueName;
  712. if (_2 == 0B)
  713. goto <bb 11>; [INV]
  714. else
  715. goto <bb 12>; [INV]
  716. <bb 11> :
  717. pxEntryToWrite = &xQueueRegistry[ux];
  718. <bb 12> :
  719. ux = ux + 1;
  720. <bb 13> :
  721. if (ux <= 1)
  722. goto <bb 7>; [INV]
  723. else
  724. goto <bb 14>; [INV]
  725. <bb 14> :
  726. if (pxEntryToWrite != 0B)
  727. goto <bb 15>; [INV]
  728. else
  729. goto <bb 16>; [INV]
  730. <bb 15> :
  731. pxEntryToWrite->pcQueueName = pcQueueName;
  732. pxEntryToWrite->xHandle = xQueue;
  733. <bb 16> :
  734. return;
  735. }
  736. xQueueIsQueueFullFromISR (struct QueueDefinition * const xQueue)
  737. {
  738. struct Queue_t * const pxQueue;
  739. BaseType_t xReturn;
  740. BaseType_t D.7245;
  741. <bb 2> :
  742. pxQueue = xQueue;
  743. if (pxQueue == 0B)
  744. goto <bb 3>; [INV]
  745. else
  746. goto <bb 5>; [INV]
  747. <bb 3> :
  748. vPortRaiseBASEPRI ();
  749. <bb 4> :
  750. goto <bb 4>; [INV]
  751. <bb 5> :
  752. _1 = pxQueue->uxMessagesWaiting;
  753. _2 = pxQueue->uxLength;
  754. if (_1 == _2)
  755. goto <bb 6>; [INV]
  756. else
  757. goto <bb 7>; [INV]
  758. <bb 6> :
  759. xReturn = 1;
  760. goto <bb 8>; [INV]
  761. <bb 7> :
  762. xReturn = 0;
  763. <bb 8> :
  764. D.7245 = xReturn;
  765. <bb 9> :
  766. <L6>:
  767. return D.7245;
  768. }
  769. prvIsQueueFull (const struct Queue_t * pxQueue)
  770. {
  771. BaseType_t xReturn;
  772. BaseType_t D.7238;
  773. <bb 2> :
  774. vPortEnterCritical ();
  775. _1 = pxQueue->uxMessagesWaiting;
  776. _2 = pxQueue->uxLength;
  777. if (_1 == _2)
  778. goto <bb 3>; [INV]
  779. else
  780. goto <bb 4>; [INV]
  781. <bb 3> :
  782. xReturn = 1;
  783. goto <bb 5>; [INV]
  784. <bb 4> :
  785. xReturn = 0;
  786. <bb 5> :
  787. vPortExitCritical ();
  788. D.7238 = xReturn;
  789. <bb 6> :
  790. <L3>:
  791. return D.7238;
  792. }
  793. xQueueIsQueueEmptyFromISR (struct QueueDefinition * const xQueue)
  794. {
  795. struct Queue_t * const pxQueue;
  796. BaseType_t xReturn;
  797. BaseType_t D.7233;
  798. <bb 2> :
  799. pxQueue = xQueue;
  800. if (pxQueue == 0B)
  801. goto <bb 3>; [INV]
  802. else
  803. goto <bb 5>; [INV]
  804. <bb 3> :
  805. vPortRaiseBASEPRI ();
  806. <bb 4> :
  807. goto <bb 4>; [INV]
  808. <bb 5> :
  809. _1 = pxQueue->uxMessagesWaiting;
  810. if (_1 == 0)
  811. goto <bb 6>; [INV]
  812. else
  813. goto <bb 7>; [INV]
  814. <bb 6> :
  815. xReturn = 1;
  816. goto <bb 8>; [INV]
  817. <bb 7> :
  818. xReturn = 0;
  819. <bb 8> :
  820. D.7233 = xReturn;
  821. <bb 9> :
  822. <L6>:
  823. return D.7233;
  824. }
  825. prvIsQueueEmpty (const struct Queue_t * pxQueue)
  826. {
  827. BaseType_t xReturn;
  828. BaseType_t D.7226;
  829. <bb 2> :
  830. vPortEnterCritical ();
  831. _1 = pxQueue->uxMessagesWaiting;
  832. if (_1 == 0)
  833. goto <bb 3>; [INV]
  834. else
  835. goto <bb 4>; [INV]
  836. <bb 3> :
  837. xReturn = 1;
  838. goto <bb 5>; [INV]
  839. <bb 4> :
  840. xReturn = 0;
  841. <bb 5> :
  842. vPortExitCritical ();
  843. D.7226 = xReturn;
  844. <bb 6> :
  845. <L3>:
  846. return D.7226;
  847. }
  848. prvUnlockQueue (struct Queue_t * const pxQueue)
  849. {
  850. int8_t cRxLock;
  851. int8_t cTxLock;
  852. <bb 2> :
  853. vPortEnterCritical ();
  854. cTxLock = pxQueue->cTxLock;
  855. goto <bb 8>; [INV]
  856. <bb 3> :
  857. _1 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  858. if (_1 != 0)
  859. goto <bb 4>; [INV]
  860. else
  861. goto <bb 6>; [INV]
  862. <bb 4> :
  863. _2 = &pxQueue->xTasksWaitingToReceive;
  864. _3 = xTaskRemoveFromEventList (_2);
  865. if (_3 != 0)
  866. goto <bb 5>; [INV]
  867. else
  868. goto <bb 7>; [INV]
  869. <bb 5> :
  870. vTaskMissedYield ();
  871. goto <bb 7>; [INV]
  872. <bb 6> :
  873. goto <bb 9>; [INV]
  874. <bb 7> :
  875. cTxLock.28_4 = (unsigned char) cTxLock;
  876. _5 = cTxLock.28_4 + 255;
  877. cTxLock = (int8_t) _5;
  878. <bb 8> :
  879. if (cTxLock > 0)
  880. goto <bb 3>; [INV]
  881. else
  882. goto <bb 9>; [INV]
  883. <bb 9> :
  884. pxQueue->cTxLock = -1;
  885. vPortExitCritical ();
  886. vPortEnterCritical ();
  887. cRxLock = pxQueue->cRxLock;
  888. goto <bb 15>; [INV]
  889. <bb 10> :
  890. _6 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  891. if (_6 != 0)
  892. goto <bb 11>; [INV]
  893. else
  894. goto <bb 14>; [INV]
  895. <bb 11> :
  896. _7 = &pxQueue->xTasksWaitingToSend;
  897. _8 = xTaskRemoveFromEventList (_7);
  898. if (_8 != 0)
  899. goto <bb 12>; [INV]
  900. else
  901. goto <bb 13>; [INV]
  902. <bb 12> :
  903. vTaskMissedYield ();
  904. <bb 13> :
  905. cRxLock.29_9 = (unsigned char) cRxLock;
  906. _10 = cRxLock.29_9 + 255;
  907. cRxLock = (int8_t) _10;
  908. goto <bb 15>; [INV]
  909. <bb 14> :
  910. goto <bb 16>; [INV]
  911. <bb 15> :
  912. if (cRxLock > 0)
  913. goto <bb 10>; [INV]
  914. else
  915. goto <bb 16>; [INV]
  916. <bb 16> :
  917. pxQueue->cRxLock = -1;
  918. vPortExitCritical ();
  919. return;
  920. }
  921. prvCopyDataFromQueue (struct Queue_t * const pxQueue, void * const pvBuffer)
  922. {
  923. <bb 2> :
  924. _1 = pxQueue->uxItemSize;
  925. if (_1 != 0)
  926. goto <bb 3>; [INV]
  927. else
  928. goto <bb 6>; [INV]
  929. <bb 3> :
  930. _2 = pxQueue->u.xQueue.pcReadFrom;
  931. _3 = pxQueue->uxItemSize;
  932. _4 = _2 + _3;
  933. pxQueue->u.xQueue.pcReadFrom = _4;
  934. _5 = pxQueue->u.xQueue.pcReadFrom;
  935. _6 = pxQueue->u.xQueue.pcTail;
  936. if (_5 >= _6)
  937. goto <bb 4>; [INV]
  938. else
  939. goto <bb 5>; [INV]
  940. <bb 4> :
  941. _7 = pxQueue->pcHead;
  942. pxQueue->u.xQueue.pcReadFrom = _7;
  943. <bb 5> :
  944. _8 = pxQueue->u.xQueue.pcReadFrom;
  945. _9 = pxQueue->uxItemSize;
  946. memcpy (pvBuffer, _8, _9);
  947. <bb 6> :
  948. return;
  949. }
  950. prvCopyDataToQueue (struct Queue_t * const pxQueue, const void * pvItemToQueue, const BaseType_t xPosition)
  951. {
  952. UBaseType_t uxMessagesWaiting;
  953. BaseType_t xReturn;
  954. BaseType_t D.7204;
  955. <bb 2> :
  956. xReturn = 0;
  957. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  958. _1 = pxQueue->uxItemSize;
  959. if (_1 == 0)
  960. goto <bb 3>; [INV]
  961. else
  962. goto <bb 5>; [INV]
  963. <bb 3> :
  964. _2 = pxQueue->pcHead;
  965. if (_2 == 0B)
  966. goto <bb 4>; [INV]
  967. else
  968. goto <bb 13>; [INV]
  969. <bb 4> :
  970. _3 = pxQueue->u.xSemaphore.xMutexHolder;
  971. xReturn = xTaskPriorityDisinherit (_3);
  972. pxQueue->u.xSemaphore.xMutexHolder = 0B;
  973. goto <bb 13>; [INV]
  974. <bb 5> :
  975. if (xPosition == 0)
  976. goto <bb 6>; [INV]
  977. else
  978. goto <bb 8>; [INV]
  979. <bb 6> :
  980. _4 = pxQueue->pcWriteTo;
  981. _5 = pxQueue->uxItemSize;
  982. memcpy (_4, pvItemToQueue, _5);
  983. _6 = pxQueue->pcWriteTo;
  984. _7 = pxQueue->uxItemSize;
  985. _8 = _6 + _7;
  986. pxQueue->pcWriteTo = _8;
  987. _9 = pxQueue->pcWriteTo;
  988. _10 = pxQueue->u.xQueue.pcTail;
  989. if (_9 >= _10)
  990. goto <bb 7>; [INV]
  991. else
  992. goto <bb 13>; [INV]
  993. <bb 7> :
  994. _11 = pxQueue->pcHead;
  995. pxQueue->pcWriteTo = _11;
  996. goto <bb 13>; [INV]
  997. <bb 8> :
  998. _12 = pxQueue->u.xQueue.pcReadFrom;
  999. _13 = pxQueue->uxItemSize;
  1000. memcpy (_12, pvItemToQueue, _13);
  1001. _14 = pxQueue->u.xQueue.pcReadFrom;
  1002. _15 = pxQueue->uxItemSize;
  1003. _16 = -_15;
  1004. _17 = _14 + _16;
  1005. pxQueue->u.xQueue.pcReadFrom = _17;
  1006. _18 = pxQueue->u.xQueue.pcReadFrom;
  1007. _19 = pxQueue->pcHead;
  1008. if (_18 < _19)
  1009. goto <bb 9>; [INV]
  1010. else
  1011. goto <bb 10>; [INV]
  1012. <bb 9> :
  1013. _20 = pxQueue->u.xQueue.pcTail;
  1014. _21 = pxQueue->uxItemSize;
  1015. _22 = -_21;
  1016. _23 = _20 + _22;
  1017. pxQueue->u.xQueue.pcReadFrom = _23;
  1018. <bb 10> :
  1019. if (xPosition == 2)
  1020. goto <bb 11>; [INV]
  1021. else
  1022. goto <bb 13>; [INV]
  1023. <bb 11> :
  1024. if (uxMessagesWaiting != 0)
  1025. goto <bb 12>; [INV]
  1026. else
  1027. goto <bb 13>; [INV]
  1028. <bb 12> :
  1029. uxMessagesWaiting = uxMessagesWaiting + 4294967295;
  1030. <bb 13> :
  1031. _24 = uxMessagesWaiting + 1;
  1032. pxQueue->uxMessagesWaiting = _24;
  1033. D.7204 = xReturn;
  1034. <bb 14> :
  1035. <L21>:
  1036. return D.7204;
  1037. }
  1038. prvGetDisinheritPriorityAfterTimeout (const struct Queue_t * const pxQueue)
  1039. {
  1040. UBaseType_t uxHighestPriorityOfWaitingTasks;
  1041. UBaseType_t D.7181;
  1042. <bb 2> :
  1043. _1 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  1044. if (_1 != 0)
  1045. goto <bb 3>; [INV]
  1046. else
  1047. goto <bb 4>; [INV]
  1048. <bb 3> :
  1049. _2 = pxQueue->xTasksWaitingToReceive.xListEnd.pxNext;
  1050. _3 = _2->xItemValue;
  1051. uxHighestPriorityOfWaitingTasks = 5 - _3;
  1052. goto <bb 5>; [INV]
  1053. <bb 4> :
  1054. uxHighestPriorityOfWaitingTasks = 0;
  1055. <bb 5> :
  1056. D.7181 = uxHighestPriorityOfWaitingTasks;
  1057. <bb 6> :
  1058. <L3>:
  1059. return D.7181;
  1060. }
  1061. ucQueueGetQueueType (struct QueueDefinition * xQueue)
  1062. {
  1063. uint8_t D.7176;
  1064. <bb 2> :
  1065. D.7176 = MEM[(struct Queue_t *)xQueue].ucQueueType;
  1066. <bb 3> :
  1067. <L0>:
  1068. return D.7176;
  1069. }
  1070. vQueueSetQueueNumber (struct QueueDefinition * xQueue, UBaseType_t uxQueueNumber)
  1071. {
  1072. <bb 2> :
  1073. MEM[(struct Queue_t *)xQueue].uxQueueNumber = uxQueueNumber;
  1074. return;
  1075. }
  1076. uxQueueGetQueueNumber (struct QueueDefinition * xQueue)
  1077. {
  1078. UBaseType_t D.7174;
  1079. <bb 2> :
  1080. D.7174 = MEM[(struct Queue_t *)xQueue].uxQueueNumber;
  1081. <bb 3> :
  1082. <L0>:
  1083. return D.7174;
  1084. }
  1085. vQueueDelete (struct QueueDefinition * xQueue)
  1086. {
  1087. struct Queue_t * const pxQueue;
  1088. <bb 2> :
  1089. pxQueue = xQueue;
  1090. if (pxQueue == 0B)
  1091. goto <bb 3>; [INV]
  1092. else
  1093. goto <bb 5>; [INV]
  1094. <bb 3> :
  1095. vPortRaiseBASEPRI ();
  1096. <bb 4> :
  1097. goto <bb 4>; [INV]
  1098. <bb 5> :
  1099. vQueueUnregisterQueue (pxQueue);
  1100. vPortFree (pxQueue);
  1101. return;
  1102. }
  1103. uxQueueMessagesWaitingFromISR (struct QueueDefinition * const xQueue)
  1104. {
  1105. struct Queue_t * const pxQueue;
  1106. UBaseType_t uxReturn;
  1107. UBaseType_t D.7170;
  1108. <bb 2> :
  1109. pxQueue = xQueue;
  1110. if (pxQueue == 0B)
  1111. goto <bb 3>; [INV]
  1112. else
  1113. goto <bb 5>; [INV]
  1114. <bb 3> :
  1115. vPortRaiseBASEPRI ();
  1116. <bb 4> :
  1117. goto <bb 4>; [INV]
  1118. <bb 5> :
  1119. uxReturn = pxQueue->uxMessagesWaiting;
  1120. D.7170 = uxReturn;
  1121. <bb 6> :
  1122. <L3>:
  1123. return D.7170;
  1124. }
  1125. uxQueueSpacesAvailable (struct QueueDefinition * const xQueue)
  1126. {
  1127. struct Queue_t * const pxQueue;
  1128. UBaseType_t uxReturn;
  1129. UBaseType_t D.7166;
  1130. <bb 2> :
  1131. pxQueue = xQueue;
  1132. if (pxQueue == 0B)
  1133. goto <bb 3>; [INV]
  1134. else
  1135. goto <bb 5>; [INV]
  1136. <bb 3> :
  1137. vPortRaiseBASEPRI ();
  1138. <bb 4> :
  1139. goto <bb 4>; [INV]
  1140. <bb 5> :
  1141. vPortEnterCritical ();
  1142. _1 = pxQueue->uxLength;
  1143. _2 = pxQueue->uxMessagesWaiting;
  1144. uxReturn = _1 - _2;
  1145. vPortExitCritical ();
  1146. D.7166 = uxReturn;
  1147. <bb 6> :
  1148. <L3>:
  1149. return D.7166;
  1150. }
  1151. uxQueueMessagesWaiting (struct QueueDefinition * const xQueue)
  1152. {
  1153. UBaseType_t uxReturn;
  1154. UBaseType_t D.7162;
  1155. <bb 2> :
  1156. if (xQueue == 0B)
  1157. goto <bb 3>; [INV]
  1158. else
  1159. goto <bb 5>; [INV]
  1160. <bb 3> :
  1161. vPortRaiseBASEPRI ();
  1162. <bb 4> :
  1163. goto <bb 4>; [INV]
  1164. <bb 5> :
  1165. vPortEnterCritical ();
  1166. uxReturn = MEM[(struct Queue_t *)xQueue].uxMessagesWaiting;
  1167. vPortExitCritical ();
  1168. D.7162 = uxReturn;
  1169. <bb 6> :
  1170. <L3>:
  1171. return D.7162;
  1172. }
  1173. xQueuePeekFromISR (struct QueueDefinition * xQueue, void * const pvBuffer)
  1174. {
  1175. struct Queue_t * const pxQueue;
  1176. int8_t * pcOriginalReadPosition;
  1177. UBaseType_t uxSavedInterruptStatus;
  1178. BaseType_t xReturn;
  1179. BaseType_t D.7158;
  1180. int iftmp.27;
  1181. <bb 2> :
  1182. pxQueue = xQueue;
  1183. if (pxQueue == 0B)
  1184. goto <bb 3>; [INV]
  1185. else
  1186. goto <bb 5>; [INV]
  1187. <bb 3> :
  1188. vPortRaiseBASEPRI ();
  1189. <bb 4> :
  1190. goto <bb 4>; [INV]
  1191. <bb 5> :
  1192. if (pvBuffer != 0B)
  1193. goto <bb 7>; [INV]
  1194. else
  1195. goto <bb 6>; [INV]
  1196. <bb 6> :
  1197. _1 = pxQueue->uxItemSize;
  1198. if (_1 == 0)
  1199. goto <bb 7>; [INV]
  1200. else
  1201. goto <bb 8>; [INV]
  1202. <bb 7> :
  1203. iftmp.27 = 1;
  1204. goto <bb 9>; [INV]
  1205. <bb 8> :
  1206. iftmp.27 = 0;
  1207. <bb 9> :
  1208. if (iftmp.27 == 0)
  1209. goto <bb 10>; [INV]
  1210. else
  1211. goto <bb 12>; [INV]
  1212. <bb 10> :
  1213. vPortRaiseBASEPRI ();
  1214. <bb 11> :
  1215. goto <bb 11>; [INV]
  1216. <bb 12> :
  1217. _2 = pxQueue->uxItemSize;
  1218. if (_2 == 0)
  1219. goto <bb 13>; [INV]
  1220. else
  1221. goto <bb 15>; [INV]
  1222. <bb 13> :
  1223. vPortRaiseBASEPRI ();
  1224. <bb 14> :
  1225. goto <bb 14>; [INV]
  1226. <bb 15> :
  1227. vPortValidateInterruptPriority ();
  1228. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  1229. _3 = pxQueue->uxMessagesWaiting;
  1230. if (_3 != 0)
  1231. goto <bb 16>; [INV]
  1232. else
  1233. goto <bb 17>; [INV]
  1234. <bb 16> :
  1235. pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom;
  1236. prvCopyDataFromQueue (pxQueue, pvBuffer);
  1237. pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition;
  1238. xReturn = 1;
  1239. goto <bb 18>; [INV]
  1240. <bb 17> :
  1241. xReturn = 0;
  1242. <bb 18> :
  1243. vPortSetBASEPRI (uxSavedInterruptStatus);
  1244. D.7158 = xReturn;
  1245. <bb 19> :
  1246. <L16>:
  1247. return D.7158;
  1248. }
  1249. xQueueReceiveFromISR (struct QueueDefinition * xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken)
  1250. {
  1251. const int8_t cRxLock;
  1252. const UBaseType_t uxMessagesWaiting;
  1253. struct Queue_t * const pxQueue;
  1254. UBaseType_t uxSavedInterruptStatus;
  1255. BaseType_t xReturn;
  1256. BaseType_t D.7142;
  1257. int iftmp.25;
  1258. <bb 2> :
  1259. pxQueue = xQueue;
  1260. if (pxQueue == 0B)
  1261. goto <bb 3>; [INV]
  1262. else
  1263. goto <bb 5>; [INV]
  1264. <bb 3> :
  1265. vPortRaiseBASEPRI ();
  1266. <bb 4> :
  1267. goto <bb 4>; [INV]
  1268. <bb 5> :
  1269. if (pvBuffer != 0B)
  1270. goto <bb 7>; [INV]
  1271. else
  1272. goto <bb 6>; [INV]
  1273. <bb 6> :
  1274. _1 = pxQueue->uxItemSize;
  1275. if (_1 == 0)
  1276. goto <bb 7>; [INV]
  1277. else
  1278. goto <bb 8>; [INV]
  1279. <bb 7> :
  1280. iftmp.25 = 1;
  1281. goto <bb 9>; [INV]
  1282. <bb 8> :
  1283. iftmp.25 = 0;
  1284. <bb 9> :
  1285. if (iftmp.25 == 0)
  1286. goto <bb 10>; [INV]
  1287. else
  1288. goto <bb 12>; [INV]
  1289. <bb 10> :
  1290. vPortRaiseBASEPRI ();
  1291. <bb 11> :
  1292. goto <bb 11>; [INV]
  1293. <bb 12> :
  1294. vPortValidateInterruptPriority ();
  1295. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  1296. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  1297. if (uxMessagesWaiting != 0)
  1298. goto <bb 13>; [INV]
  1299. else
  1300. goto <bb 23>; [INV]
  1301. <bb 13> :
  1302. cRxLock = pxQueue->cRxLock;
  1303. prvCopyDataFromQueue (pxQueue, pvBuffer);
  1304. _2 = uxMessagesWaiting + 4294967295;
  1305. pxQueue->uxMessagesWaiting = _2;
  1306. if (cRxLock == -1)
  1307. goto <bb 14>; [INV]
  1308. else
  1309. goto <bb 18>; [INV]
  1310. <bb 14> :
  1311. _3 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  1312. if (_3 != 0)
  1313. goto <bb 15>; [INV]
  1314. else
  1315. goto <bb 22>; [INV]
  1316. <bb 15> :
  1317. _4 = &pxQueue->xTasksWaitingToSend;
  1318. _5 = xTaskRemoveFromEventList (_4);
  1319. if (_5 != 0)
  1320. goto <bb 16>; [INV]
  1321. else
  1322. goto <bb 22>; [INV]
  1323. <bb 16> :
  1324. if (pxHigherPriorityTaskWoken != 0B)
  1325. goto <bb 17>; [INV]
  1326. else
  1327. goto <bb 22>; [INV]
  1328. <bb 17> :
  1329. *pxHigherPriorityTaskWoken = 1;
  1330. goto <bb 22>; [INV]
  1331. <bb 18> :
  1332. if (cRxLock == 127)
  1333. goto <bb 19>; [INV]
  1334. else
  1335. goto <bb 21>; [INV]
  1336. <bb 19> :
  1337. vPortRaiseBASEPRI ();
  1338. <bb 20> :
  1339. goto <bb 20>; [INV]
  1340. <bb 21> :
  1341. cRxLock.26_6 = (unsigned char) cRxLock;
  1342. _7 = cRxLock.26_6 + 1;
  1343. _8 = (signed char) _7;
  1344. pxQueue->cRxLock = _8;
  1345. <bb 22> :
  1346. xReturn = 1;
  1347. goto <bb 24>; [INV]
  1348. <bb 23> :
  1349. xReturn = 0;
  1350. <bb 24> :
  1351. vPortSetBASEPRI (uxSavedInterruptStatus);
  1352. D.7142 = xReturn;
  1353. <bb 25> :
  1354. <L28>:
  1355. return D.7142;
  1356. }
  1357. xQueuePeek (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait)
  1358. {
  1359. const UBaseType_t uxMessagesWaiting;
  1360. struct Queue_t * const pxQueue;
  1361. int8_t * pcOriginalReadPosition;
  1362. struct TimeOut_t xTimeOut;
  1363. BaseType_t xEntryTimeSet;
  1364. BaseType_t D.7093;
  1365. int iftmp.21;
  1366. int iftmp.20;
  1367. <bb 2> :
  1368. xEntryTimeSet = 0;
  1369. pxQueue = xQueue;
  1370. if (pxQueue == 0B)
  1371. goto <bb 3>; [INV]
  1372. else
  1373. goto <bb 5>; [INV]
  1374. <bb 3> :
  1375. vPortRaiseBASEPRI ();
  1376. <bb 4> :
  1377. goto <bb 4>; [INV]
  1378. <bb 5> :
  1379. if (pvBuffer != 0B)
  1380. goto <bb 7>; [INV]
  1381. else
  1382. goto <bb 6>; [INV]
  1383. <bb 6> :
  1384. _1 = pxQueue->uxItemSize;
  1385. if (_1 == 0)
  1386. goto <bb 7>; [INV]
  1387. else
  1388. goto <bb 8>; [INV]
  1389. <bb 7> :
  1390. iftmp.20 = 1;
  1391. goto <bb 9>; [INV]
  1392. <bb 8> :
  1393. iftmp.20 = 0;
  1394. <bb 9> :
  1395. if (iftmp.20 == 0)
  1396. goto <bb 10>; [INV]
  1397. else
  1398. goto <bb 12>; [INV]
  1399. <bb 10> :
  1400. vPortRaiseBASEPRI ();
  1401. <bb 11> :
  1402. goto <bb 11>; [INV]
  1403. <bb 12> :
  1404. _2 = xTaskGetSchedulerState ();
  1405. if (_2 != 0)
  1406. goto <bb 14>; [INV]
  1407. else
  1408. goto <bb 13>; [INV]
  1409. <bb 13> :
  1410. xTicksToWait.22_3 = xTicksToWait;
  1411. if (xTicksToWait.22_3 == 0)
  1412. goto <bb 14>; [INV]
  1413. else
  1414. goto <bb 15>; [INV]
  1415. <bb 14> :
  1416. iftmp.21 = 1;
  1417. goto <bb 16>; [INV]
  1418. <bb 15> :
  1419. iftmp.21 = 0;
  1420. <bb 16> :
  1421. if (iftmp.21 == 0)
  1422. goto <bb 17>; [INV]
  1423. else
  1424. goto <bb 19>; [INV]
  1425. <bb 17> :
  1426. vPortRaiseBASEPRI ();
  1427. <bb 18> :
  1428. goto <bb 18>; [INV]
  1429. <bb 19> :
  1430. vPortEnterCritical ();
  1431. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  1432. if (uxMessagesWaiting != 0)
  1433. goto <bb 20>; [INV]
  1434. else
  1435. goto <bb 24>; [INV]
  1436. <bb 20> :
  1437. pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom;
  1438. prvCopyDataFromQueue (pxQueue, pvBuffer);
  1439. pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition;
  1440. _4 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  1441. if (_4 != 0)
  1442. goto <bb 21>; [INV]
  1443. else
  1444. goto <bb 23>; [INV]
  1445. <bb 21> :
  1446. _5 = &pxQueue->xTasksWaitingToReceive;
  1447. _6 = xTaskRemoveFromEventList (_5);
  1448. if (_6 != 0)
  1449. goto <bb 22>; [INV]
  1450. else
  1451. goto <bb 23>; [INV]
  1452. <bb 22> :
  1453. _7 = 3758157060B;
  1454. *_7 = 268435456;
  1455. __asm__ __volatile__("dsb" : : : "memory");
  1456. __asm__ __volatile__("isb");
  1457. <bb 23> :
  1458. vPortExitCritical ();
  1459. D.7093 = 1;
  1460. // predicted unlikely by early return (on trees) predictor.
  1461. goto <bb 40>; [INV]
  1462. <bb 24> :
  1463. xTicksToWait.23_8 = xTicksToWait;
  1464. if (xTicksToWait.23_8 == 0)
  1465. goto <bb 25>; [INV]
  1466. else
  1467. goto <bb 26>; [INV]
  1468. <bb 25> :
  1469. vPortExitCritical ();
  1470. D.7093 = 0;
  1471. // predicted unlikely by early return (on trees) predictor.
  1472. goto <bb 40>; [INV]
  1473. <bb 26> :
  1474. if (xEntryTimeSet == 0)
  1475. goto <bb 27>; [INV]
  1476. else
  1477. goto <bb 28>; [INV]
  1478. <bb 27> :
  1479. vTaskInternalSetTimeOutState (&xTimeOut);
  1480. xEntryTimeSet = 1;
  1481. <bb 28> :
  1482. vPortExitCritical ();
  1483. vTaskSuspendAll ();
  1484. vPortEnterCritical ();
  1485. _9 = pxQueue->cRxLock;
  1486. if (_9 == -1)
  1487. goto <bb 29>; [INV]
  1488. else
  1489. goto <bb 30>; [INV]
  1490. <bb 29> :
  1491. pxQueue->cRxLock = 0;
  1492. <bb 30> :
  1493. _10 = pxQueue->cTxLock;
  1494. if (_10 == -1)
  1495. goto <bb 31>; [INV]
  1496. else
  1497. goto <bb 32>; [INV]
  1498. <bb 31> :
  1499. pxQueue->cTxLock = 0;
  1500. <bb 32> :
  1501. vPortExitCritical ();
  1502. _11 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  1503. if (_11 == 0)
  1504. goto <bb 33>; [INV]
  1505. else
  1506. goto <bb 37>; [INV]
  1507. <bb 33> :
  1508. _12 = prvIsQueueEmpty (pxQueue);
  1509. if (_12 != 0)
  1510. goto <bb 34>; [INV]
  1511. else
  1512. goto <bb 36>; [INV]
  1513. <bb 34> :
  1514. _13 = &pxQueue->xTasksWaitingToReceive;
  1515. xTicksToWait.24_14 = xTicksToWait;
  1516. vTaskPlaceOnEventList (_13, xTicksToWait.24_14);
  1517. prvUnlockQueue (pxQueue);
  1518. _15 = xTaskResumeAll ();
  1519. if (_15 == 0)
  1520. goto <bb 35>; [INV]
  1521. else
  1522. goto <bb 39>; [INV]
  1523. <bb 35> :
  1524. _16 = 3758157060B;
  1525. *_16 = 268435456;
  1526. __asm__ __volatile__("dsb" : : : "memory");
  1527. __asm__ __volatile__("isb");
  1528. goto <bb 39>; [INV]
  1529. <bb 36> :
  1530. prvUnlockQueue (pxQueue);
  1531. xTaskResumeAll ();
  1532. goto <bb 39>; [INV]
  1533. <bb 37> :
  1534. prvUnlockQueue (pxQueue);
  1535. xTaskResumeAll ();
  1536. _17 = prvIsQueueEmpty (pxQueue);
  1537. if (_17 != 0)
  1538. goto <bb 38>; [INV]
  1539. else
  1540. goto <bb 39>; [INV]
  1541. <bb 38> :
  1542. D.7093 = 0;
  1543. // predicted unlikely by early return (on trees) predictor.
  1544. goto <bb 40>; [INV]
  1545. <bb 39> :
  1546. goto <bb 19>; [INV]
  1547. <bb 40> :
  1548. xTimeOut = {CLOBBER};
  1549. <bb 41> :
  1550. <L47>:
  1551. return D.7093;
  1552. }
  1553. xQueueSemaphoreTake (struct QueueDefinition * xQueue, TickType_t xTicksToWait)
  1554. {
  1555. UBaseType_t uxHighestWaitingPriority;
  1556. const UBaseType_t uxSemaphoreCount;
  1557. BaseType_t xInheritanceOccurred;
  1558. struct Queue_t * const pxQueue;
  1559. struct TimeOut_t xTimeOut;
  1560. BaseType_t xEntryTimeSet;
  1561. BaseType_t D.7039;
  1562. int iftmp.16;
  1563. <bb 2> :
  1564. xEntryTimeSet = 0;
  1565. pxQueue = xQueue;
  1566. xInheritanceOccurred = 0;
  1567. if (pxQueue == 0B)
  1568. goto <bb 3>; [INV]
  1569. else
  1570. goto <bb 5>; [INV]
  1571. <bb 3> :
  1572. vPortRaiseBASEPRI ();
  1573. <bb 4> :
  1574. goto <bb 4>; [INV]
  1575. <bb 5> :
  1576. _1 = pxQueue->uxItemSize;
  1577. if (_1 != 0)
  1578. goto <bb 6>; [INV]
  1579. else
  1580. goto <bb 8>; [INV]
  1581. <bb 6> :
  1582. vPortRaiseBASEPRI ();
  1583. <bb 7> :
  1584. goto <bb 7>; [INV]
  1585. <bb 8> :
  1586. _2 = xTaskGetSchedulerState ();
  1587. if (_2 != 0)
  1588. goto <bb 10>; [INV]
  1589. else
  1590. goto <bb 9>; [INV]
  1591. <bb 9> :
  1592. xTicksToWait.17_3 = xTicksToWait;
  1593. if (xTicksToWait.17_3 == 0)
  1594. goto <bb 10>; [INV]
  1595. else
  1596. goto <bb 11>; [INV]
  1597. <bb 10> :
  1598. iftmp.16 = 1;
  1599. goto <bb 12>; [INV]
  1600. <bb 11> :
  1601. iftmp.16 = 0;
  1602. <bb 12> :
  1603. if (iftmp.16 == 0)
  1604. goto <bb 13>; [INV]
  1605. else
  1606. goto <bb 15>; [INV]
  1607. <bb 13> :
  1608. vPortRaiseBASEPRI ();
  1609. <bb 14> :
  1610. goto <bb 14>; [INV]
  1611. <bb 15> :
  1612. vPortEnterCritical ();
  1613. uxSemaphoreCount = pxQueue->uxMessagesWaiting;
  1614. if (uxSemaphoreCount != 0)
  1615. goto <bb 16>; [INV]
  1616. else
  1617. goto <bb 22>; [INV]
  1618. <bb 16> :
  1619. _4 = uxSemaphoreCount + 4294967295;
  1620. pxQueue->uxMessagesWaiting = _4;
  1621. _5 = pxQueue->pcHead;
  1622. if (_5 == 0B)
  1623. goto <bb 17>; [INV]
  1624. else
  1625. goto <bb 18>; [INV]
  1626. <bb 17> :
  1627. _6 = pvTaskIncrementMutexHeldCount ();
  1628. pxQueue->u.xSemaphore.xMutexHolder = _6;
  1629. <bb 18> :
  1630. _7 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  1631. if (_7 != 0)
  1632. goto <bb 19>; [INV]
  1633. else
  1634. goto <bb 21>; [INV]
  1635. <bb 19> :
  1636. _8 = &pxQueue->xTasksWaitingToSend;
  1637. _9 = xTaskRemoveFromEventList (_8);
  1638. if (_9 != 0)
  1639. goto <bb 20>; [INV]
  1640. else
  1641. goto <bb 21>; [INV]
  1642. <bb 20> :
  1643. _10 = 3758157060B;
  1644. *_10 = 268435456;
  1645. __asm__ __volatile__("dsb" : : : "memory");
  1646. __asm__ __volatile__("isb");
  1647. <bb 21> :
  1648. vPortExitCritical ();
  1649. D.7039 = 1;
  1650. // predicted unlikely by early return (on trees) predictor.
  1651. goto <bb 45>; [INV]
  1652. <bb 22> :
  1653. xTicksToWait.18_11 = xTicksToWait;
  1654. if (xTicksToWait.18_11 == 0)
  1655. goto <bb 23>; [INV]
  1656. else
  1657. goto <bb 27>; [INV]
  1658. <bb 23> :
  1659. if (xInheritanceOccurred != 0)
  1660. goto <bb 24>; [INV]
  1661. else
  1662. goto <bb 26>; [INV]
  1663. <bb 24> :
  1664. vPortRaiseBASEPRI ();
  1665. <bb 25> :
  1666. goto <bb 25>; [INV]
  1667. <bb 26> :
  1668. vPortExitCritical ();
  1669. D.7039 = 0;
  1670. // predicted unlikely by early return (on trees) predictor.
  1671. goto <bb 45>; [INV]
  1672. <bb 27> :
  1673. if (xEntryTimeSet == 0)
  1674. goto <bb 28>; [INV]
  1675. else
  1676. goto <bb 29>; [INV]
  1677. <bb 28> :
  1678. vTaskInternalSetTimeOutState (&xTimeOut);
  1679. xEntryTimeSet = 1;
  1680. <bb 29> :
  1681. vPortExitCritical ();
  1682. vTaskSuspendAll ();
  1683. vPortEnterCritical ();
  1684. _12 = pxQueue->cRxLock;
  1685. if (_12 == -1)
  1686. goto <bb 30>; [INV]
  1687. else
  1688. goto <bb 31>; [INV]
  1689. <bb 30> :
  1690. pxQueue->cRxLock = 0;
  1691. <bb 31> :
  1692. _13 = pxQueue->cTxLock;
  1693. if (_13 == -1)
  1694. goto <bb 32>; [INV]
  1695. else
  1696. goto <bb 33>; [INV]
  1697. <bb 32> :
  1698. pxQueue->cTxLock = 0;
  1699. <bb 33> :
  1700. vPortExitCritical ();
  1701. _14 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  1702. if (_14 == 0)
  1703. goto <bb 34>; [INV]
  1704. else
  1705. goto <bb 40>; [INV]
  1706. <bb 34> :
  1707. _15 = prvIsQueueEmpty (pxQueue);
  1708. if (_15 != 0)
  1709. goto <bb 35>; [INV]
  1710. else
  1711. goto <bb 39>; [INV]
  1712. <bb 35> :
  1713. _16 = pxQueue->pcHead;
  1714. if (_16 == 0B)
  1715. goto <bb 36>; [INV]
  1716. else
  1717. goto <bb 37>; [INV]
  1718. <bb 36> :
  1719. vPortEnterCritical ();
  1720. _17 = pxQueue->u.xSemaphore.xMutexHolder;
  1721. xInheritanceOccurred = xTaskPriorityInherit (_17);
  1722. vPortExitCritical ();
  1723. <bb 37> :
  1724. _18 = &pxQueue->xTasksWaitingToReceive;
  1725. xTicksToWait.19_19 = xTicksToWait;
  1726. vTaskPlaceOnEventList (_18, xTicksToWait.19_19);
  1727. prvUnlockQueue (pxQueue);
  1728. _20 = xTaskResumeAll ();
  1729. if (_20 == 0)
  1730. goto <bb 38>; [INV]
  1731. else
  1732. goto <bb 44>; [INV]
  1733. <bb 38> :
  1734. _21 = 3758157060B;
  1735. *_21 = 268435456;
  1736. __asm__ __volatile__("dsb" : : : "memory");
  1737. __asm__ __volatile__("isb");
  1738. goto <bb 44>; [INV]
  1739. <bb 39> :
  1740. prvUnlockQueue (pxQueue);
  1741. xTaskResumeAll ();
  1742. goto <bb 44>; [INV]
  1743. <bb 40> :
  1744. prvUnlockQueue (pxQueue);
  1745. xTaskResumeAll ();
  1746. _22 = prvIsQueueEmpty (pxQueue);
  1747. if (_22 != 0)
  1748. goto <bb 41>; [INV]
  1749. else
  1750. goto <bb 44>; [INV]
  1751. <bb 41> :
  1752. if (xInheritanceOccurred != 0)
  1753. goto <bb 42>; [INV]
  1754. else
  1755. goto <bb 43>; [INV]
  1756. <bb 42> :
  1757. vPortEnterCritical ();
  1758. uxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout (pxQueue);
  1759. _23 = pxQueue->u.xSemaphore.xMutexHolder;
  1760. vTaskPriorityDisinheritAfterTimeout (_23, uxHighestWaitingPriority);
  1761. vPortExitCritical ();
  1762. <bb 43> :
  1763. D.7039 = 0;
  1764. // predicted unlikely by early return (on trees) predictor.
  1765. goto <bb 45>; [INV]
  1766. <bb 44> :
  1767. goto <bb 15>; [INV]
  1768. <bb 45> :
  1769. xTimeOut = {CLOBBER};
  1770. <bb 46> :
  1771. <L54>:
  1772. return D.7039;
  1773. }
  1774. xQueueReceive (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait)
  1775. {
  1776. const UBaseType_t uxMessagesWaiting;
  1777. struct Queue_t * const pxQueue;
  1778. struct TimeOut_t xTimeOut;
  1779. BaseType_t xEntryTimeSet;
  1780. BaseType_t D.6994;
  1781. int iftmp.12;
  1782. int iftmp.11;
  1783. <bb 2> :
  1784. xEntryTimeSet = 0;
  1785. pxQueue = xQueue;
  1786. if (pxQueue == 0B)
  1787. goto <bb 3>; [INV]
  1788. else
  1789. goto <bb 5>; [INV]
  1790. <bb 3> :
  1791. vPortRaiseBASEPRI ();
  1792. <bb 4> :
  1793. goto <bb 4>; [INV]
  1794. <bb 5> :
  1795. if (pvBuffer != 0B)
  1796. goto <bb 7>; [INV]
  1797. else
  1798. goto <bb 6>; [INV]
  1799. <bb 6> :
  1800. _1 = pxQueue->uxItemSize;
  1801. if (_1 == 0)
  1802. goto <bb 7>; [INV]
  1803. else
  1804. goto <bb 8>; [INV]
  1805. <bb 7> :
  1806. iftmp.11 = 1;
  1807. goto <bb 9>; [INV]
  1808. <bb 8> :
  1809. iftmp.11 = 0;
  1810. <bb 9> :
  1811. if (iftmp.11 == 0)
  1812. goto <bb 10>; [INV]
  1813. else
  1814. goto <bb 12>; [INV]
  1815. <bb 10> :
  1816. vPortRaiseBASEPRI ();
  1817. <bb 11> :
  1818. goto <bb 11>; [INV]
  1819. <bb 12> :
  1820. _2 = xTaskGetSchedulerState ();
  1821. if (_2 != 0)
  1822. goto <bb 14>; [INV]
  1823. else
  1824. goto <bb 13>; [INV]
  1825. <bb 13> :
  1826. xTicksToWait.13_3 = xTicksToWait;
  1827. if (xTicksToWait.13_3 == 0)
  1828. goto <bb 14>; [INV]
  1829. else
  1830. goto <bb 15>; [INV]
  1831. <bb 14> :
  1832. iftmp.12 = 1;
  1833. goto <bb 16>; [INV]
  1834. <bb 15> :
  1835. iftmp.12 = 0;
  1836. <bb 16> :
  1837. if (iftmp.12 == 0)
  1838. goto <bb 17>; [INV]
  1839. else
  1840. goto <bb 19>; [INV]
  1841. <bb 17> :
  1842. vPortRaiseBASEPRI ();
  1843. <bb 18> :
  1844. goto <bb 18>; [INV]
  1845. <bb 19> :
  1846. vPortEnterCritical ();
  1847. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  1848. if (uxMessagesWaiting != 0)
  1849. goto <bb 20>; [INV]
  1850. else
  1851. goto <bb 24>; [INV]
  1852. <bb 20> :
  1853. prvCopyDataFromQueue (pxQueue, pvBuffer);
  1854. _4 = uxMessagesWaiting + 4294967295;
  1855. pxQueue->uxMessagesWaiting = _4;
  1856. _5 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  1857. if (_5 != 0)
  1858. goto <bb 21>; [INV]
  1859. else
  1860. goto <bb 23>; [INV]
  1861. <bb 21> :
  1862. _6 = &pxQueue->xTasksWaitingToSend;
  1863. _7 = xTaskRemoveFromEventList (_6);
  1864. if (_7 != 0)
  1865. goto <bb 22>; [INV]
  1866. else
  1867. goto <bb 23>; [INV]
  1868. <bb 22> :
  1869. _8 = 3758157060B;
  1870. *_8 = 268435456;
  1871. __asm__ __volatile__("dsb" : : : "memory");
  1872. __asm__ __volatile__("isb");
  1873. <bb 23> :
  1874. vPortExitCritical ();
  1875. D.6994 = 1;
  1876. // predicted unlikely by early return (on trees) predictor.
  1877. goto <bb 40>; [INV]
  1878. <bb 24> :
  1879. xTicksToWait.14_9 = xTicksToWait;
  1880. if (xTicksToWait.14_9 == 0)
  1881. goto <bb 25>; [INV]
  1882. else
  1883. goto <bb 26>; [INV]
  1884. <bb 25> :
  1885. vPortExitCritical ();
  1886. D.6994 = 0;
  1887. // predicted unlikely by early return (on trees) predictor.
  1888. goto <bb 40>; [INV]
  1889. <bb 26> :
  1890. if (xEntryTimeSet == 0)
  1891. goto <bb 27>; [INV]
  1892. else
  1893. goto <bb 28>; [INV]
  1894. <bb 27> :
  1895. vTaskInternalSetTimeOutState (&xTimeOut);
  1896. xEntryTimeSet = 1;
  1897. <bb 28> :
  1898. vPortExitCritical ();
  1899. vTaskSuspendAll ();
  1900. vPortEnterCritical ();
  1901. _10 = pxQueue->cRxLock;
  1902. if (_10 == -1)
  1903. goto <bb 29>; [INV]
  1904. else
  1905. goto <bb 30>; [INV]
  1906. <bb 29> :
  1907. pxQueue->cRxLock = 0;
  1908. <bb 30> :
  1909. _11 = pxQueue->cTxLock;
  1910. if (_11 == -1)
  1911. goto <bb 31>; [INV]
  1912. else
  1913. goto <bb 32>; [INV]
  1914. <bb 31> :
  1915. pxQueue->cTxLock = 0;
  1916. <bb 32> :
  1917. vPortExitCritical ();
  1918. _12 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  1919. if (_12 == 0)
  1920. goto <bb 33>; [INV]
  1921. else
  1922. goto <bb 37>; [INV]
  1923. <bb 33> :
  1924. _13 = prvIsQueueEmpty (pxQueue);
  1925. if (_13 != 0)
  1926. goto <bb 34>; [INV]
  1927. else
  1928. goto <bb 36>; [INV]
  1929. <bb 34> :
  1930. _14 = &pxQueue->xTasksWaitingToReceive;
  1931. xTicksToWait.15_15 = xTicksToWait;
  1932. vTaskPlaceOnEventList (_14, xTicksToWait.15_15);
  1933. prvUnlockQueue (pxQueue);
  1934. _16 = xTaskResumeAll ();
  1935. if (_16 == 0)
  1936. goto <bb 35>; [INV]
  1937. else
  1938. goto <bb 39>; [INV]
  1939. <bb 35> :
  1940. _17 = 3758157060B;
  1941. *_17 = 268435456;
  1942. __asm__ __volatile__("dsb" : : : "memory");
  1943. __asm__ __volatile__("isb");
  1944. goto <bb 39>; [INV]
  1945. <bb 36> :
  1946. prvUnlockQueue (pxQueue);
  1947. xTaskResumeAll ();
  1948. goto <bb 39>; [INV]
  1949. <bb 37> :
  1950. prvUnlockQueue (pxQueue);
  1951. xTaskResumeAll ();
  1952. _18 = prvIsQueueEmpty (pxQueue);
  1953. if (_18 != 0)
  1954. goto <bb 38>; [INV]
  1955. else
  1956. goto <bb 39>; [INV]
  1957. <bb 38> :
  1958. D.6994 = 0;
  1959. // predicted unlikely by early return (on trees) predictor.
  1960. goto <bb 40>; [INV]
  1961. <bb 39> :
  1962. goto <bb 19>; [INV]
  1963. <bb 40> :
  1964. xTimeOut = {CLOBBER};
  1965. <bb 41> :
  1966. <L47>:
  1967. return D.6994;
  1968. }
  1969. xQueueGiveFromISR (struct QueueDefinition * xQueue, BaseType_t * const pxHigherPriorityTaskWoken)
  1970. {
  1971. const int8_t cTxLock;
  1972. const UBaseType_t uxMessagesWaiting;
  1973. struct Queue_t * const pxQueue;
  1974. UBaseType_t uxSavedInterruptStatus;
  1975. BaseType_t xReturn;
  1976. BaseType_t D.6968;
  1977. int iftmp.9;
  1978. <bb 2> :
  1979. pxQueue = xQueue;
  1980. if (pxQueue == 0B)
  1981. goto <bb 3>; [INV]
  1982. else
  1983. goto <bb 5>; [INV]
  1984. <bb 3> :
  1985. vPortRaiseBASEPRI ();
  1986. <bb 4> :
  1987. goto <bb 4>; [INV]
  1988. <bb 5> :
  1989. _1 = pxQueue->uxItemSize;
  1990. if (_1 != 0)
  1991. goto <bb 6>; [INV]
  1992. else
  1993. goto <bb 8>; [INV]
  1994. <bb 6> :
  1995. vPortRaiseBASEPRI ();
  1996. <bb 7> :
  1997. goto <bb 7>; [INV]
  1998. <bb 8> :
  1999. _2 = pxQueue->pcHead;
  2000. if (_2 != 0B)
  2001. goto <bb 10>; [INV]
  2002. else
  2003. goto <bb 9>; [INV]
  2004. <bb 9> :
  2005. _3 = pxQueue->u.xSemaphore.xMutexHolder;
  2006. if (_3 == 0B)
  2007. goto <bb 10>; [INV]
  2008. else
  2009. goto <bb 11>; [INV]
  2010. <bb 10> :
  2011. iftmp.9 = 1;
  2012. goto <bb 12>; [INV]
  2013. <bb 11> :
  2014. iftmp.9 = 0;
  2015. <bb 12> :
  2016. if (iftmp.9 == 0)
  2017. goto <bb 13>; [INV]
  2018. else
  2019. goto <bb 15>; [INV]
  2020. <bb 13> :
  2021. vPortRaiseBASEPRI ();
  2022. <bb 14> :
  2023. goto <bb 14>; [INV]
  2024. <bb 15> :
  2025. vPortValidateInterruptPriority ();
  2026. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  2027. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  2028. _4 = pxQueue->uxLength;
  2029. if (uxMessagesWaiting < _4)
  2030. goto <bb 16>; [INV]
  2031. else
  2032. goto <bb 26>; [INV]
  2033. <bb 16> :
  2034. cTxLock = pxQueue->cTxLock;
  2035. _5 = uxMessagesWaiting + 1;
  2036. pxQueue->uxMessagesWaiting = _5;
  2037. if (cTxLock == -1)
  2038. goto <bb 17>; [INV]
  2039. else
  2040. goto <bb 21>; [INV]
  2041. <bb 17> :
  2042. _6 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  2043. if (_6 != 0)
  2044. goto <bb 18>; [INV]
  2045. else
  2046. goto <bb 25>; [INV]
  2047. <bb 18> :
  2048. _7 = &pxQueue->xTasksWaitingToReceive;
  2049. _8 = xTaskRemoveFromEventList (_7);
  2050. if (_8 != 0)
  2051. goto <bb 19>; [INV]
  2052. else
  2053. goto <bb 25>; [INV]
  2054. <bb 19> :
  2055. if (pxHigherPriorityTaskWoken != 0B)
  2056. goto <bb 20>; [INV]
  2057. else
  2058. goto <bb 25>; [INV]
  2059. <bb 20> :
  2060. *pxHigherPriorityTaskWoken = 1;
  2061. goto <bb 25>; [INV]
  2062. <bb 21> :
  2063. if (cTxLock == 127)
  2064. goto <bb 22>; [INV]
  2065. else
  2066. goto <bb 24>; [INV]
  2067. <bb 22> :
  2068. vPortRaiseBASEPRI ();
  2069. <bb 23> :
  2070. goto <bb 23>; [INV]
  2071. <bb 24> :
  2072. cTxLock.10_9 = (unsigned char) cTxLock;
  2073. _10 = cTxLock.10_9 + 1;
  2074. _11 = (signed char) _10;
  2075. pxQueue->cTxLock = _11;
  2076. <bb 25> :
  2077. xReturn = 1;
  2078. goto <bb 27>; [INV]
  2079. <bb 26> :
  2080. xReturn = 0;
  2081. <bb 27> :
  2082. vPortSetBASEPRI (uxSavedInterruptStatus);
  2083. D.6968 = xReturn;
  2084. <bb 28> :
  2085. <L31>:
  2086. return D.6968;
  2087. }
  2088. xQueueGenericSendFromISR (struct QueueDefinition * xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)
  2089. {
  2090. const UBaseType_t uxPreviousMessagesWaiting;
  2091. const int8_t cTxLock;
  2092. struct Queue_t * const pxQueue;
  2093. UBaseType_t uxSavedInterruptStatus;
  2094. BaseType_t xReturn;
  2095. BaseType_t D.6936;
  2096. int iftmp.7;
  2097. int iftmp.6;
  2098. <bb 2> :
  2099. pxQueue = xQueue;
  2100. if (pxQueue == 0B)
  2101. goto <bb 3>; [INV]
  2102. else
  2103. goto <bb 5>; [INV]
  2104. <bb 3> :
  2105. vPortRaiseBASEPRI ();
  2106. <bb 4> :
  2107. goto <bb 4>; [INV]
  2108. <bb 5> :
  2109. if (pvItemToQueue != 0B)
  2110. goto <bb 7>; [INV]
  2111. else
  2112. goto <bb 6>; [INV]
  2113. <bb 6> :
  2114. _1 = pxQueue->uxItemSize;
  2115. if (_1 == 0)
  2116. goto <bb 7>; [INV]
  2117. else
  2118. goto <bb 8>; [INV]
  2119. <bb 7> :
  2120. iftmp.6 = 1;
  2121. goto <bb 9>; [INV]
  2122. <bb 8> :
  2123. iftmp.6 = 0;
  2124. <bb 9> :
  2125. if (iftmp.6 == 0)
  2126. goto <bb 10>; [INV]
  2127. else
  2128. goto <bb 12>; [INV]
  2129. <bb 10> :
  2130. vPortRaiseBASEPRI ();
  2131. <bb 11> :
  2132. goto <bb 11>; [INV]
  2133. <bb 12> :
  2134. if (xCopyPosition != 2)
  2135. goto <bb 14>; [INV]
  2136. else
  2137. goto <bb 13>; [INV]
  2138. <bb 13> :
  2139. _2 = pxQueue->uxLength;
  2140. if (_2 == 1)
  2141. goto <bb 14>; [INV]
  2142. else
  2143. goto <bb 15>; [INV]
  2144. <bb 14> :
  2145. iftmp.7 = 1;
  2146. goto <bb 16>; [INV]
  2147. <bb 15> :
  2148. iftmp.7 = 0;
  2149. <bb 16> :
  2150. if (iftmp.7 == 0)
  2151. goto <bb 17>; [INV]
  2152. else
  2153. goto <bb 19>; [INV]
  2154. <bb 17> :
  2155. vPortRaiseBASEPRI ();
  2156. <bb 18> :
  2157. goto <bb 18>; [INV]
  2158. <bb 19> :
  2159. vPortValidateInterruptPriority ();
  2160. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  2161. _3 = pxQueue->uxMessagesWaiting;
  2162. _4 = pxQueue->uxLength;
  2163. if (_3 < _4)
  2164. goto <bb 21>; [INV]
  2165. else
  2166. goto <bb 20>; [INV]
  2167. <bb 20> :
  2168. if (xCopyPosition == 2)
  2169. goto <bb 21>; [INV]
  2170. else
  2171. goto <bb 31>; [INV]
  2172. <bb 21> :
  2173. cTxLock = pxQueue->cTxLock;
  2174. uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting;
  2175. prvCopyDataToQueue (pxQueue, pvItemToQueue, xCopyPosition);
  2176. if (cTxLock == -1)
  2177. goto <bb 22>; [INV]
  2178. else
  2179. goto <bb 26>; [INV]
  2180. <bb 22> :
  2181. _5 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  2182. if (_5 != 0)
  2183. goto <bb 23>; [INV]
  2184. else
  2185. goto <bb 30>; [INV]
  2186. <bb 23> :
  2187. _6 = &pxQueue->xTasksWaitingToReceive;
  2188. _7 = xTaskRemoveFromEventList (_6);
  2189. if (_7 != 0)
  2190. goto <bb 24>; [INV]
  2191. else
  2192. goto <bb 30>; [INV]
  2193. <bb 24> :
  2194. if (pxHigherPriorityTaskWoken != 0B)
  2195. goto <bb 25>; [INV]
  2196. else
  2197. goto <bb 30>; [INV]
  2198. <bb 25> :
  2199. *pxHigherPriorityTaskWoken = 1;
  2200. goto <bb 30>; [INV]
  2201. <bb 26> :
  2202. if (cTxLock == 127)
  2203. goto <bb 27>; [INV]
  2204. else
  2205. goto <bb 29>; [INV]
  2206. <bb 27> :
  2207. vPortRaiseBASEPRI ();
  2208. <bb 28> :
  2209. goto <bb 28>; [INV]
  2210. <bb 29> :
  2211. cTxLock.8_8 = (unsigned char) cTxLock;
  2212. _9 = cTxLock.8_8 + 1;
  2213. _10 = (signed char) _9;
  2214. pxQueue->cTxLock = _10;
  2215. <bb 30> :
  2216. xReturn = 1;
  2217. goto <bb 32>; [INV]
  2218. <bb 31> :
  2219. xReturn = 0;
  2220. <bb 32> :
  2221. vPortSetBASEPRI (uxSavedInterruptStatus);
  2222. D.6936 = xReturn;
  2223. <bb 33> :
  2224. <L36>:
  2225. return D.6936;
  2226. }
  2227. xQueueGenericSend (struct QueueDefinition * xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)
  2228. {
  2229. struct Queue_t * const pxQueue;
  2230. struct TimeOut_t xTimeOut;
  2231. BaseType_t xYieldRequired;
  2232. BaseType_t xEntryTimeSet;
  2233. BaseType_t D.6882;
  2234. int iftmp.2;
  2235. int iftmp.1;
  2236. int iftmp.0;
  2237. <bb 2> :
  2238. xEntryTimeSet = 0;
  2239. pxQueue = xQueue;
  2240. if (pxQueue == 0B)
  2241. goto <bb 3>; [INV]
  2242. else
  2243. goto <bb 5>; [INV]
  2244. <bb 3> :
  2245. vPortRaiseBASEPRI ();
  2246. <bb 4> :
  2247. goto <bb 4>; [INV]
  2248. <bb 5> :
  2249. if (pvItemToQueue != 0B)
  2250. goto <bb 7>; [INV]
  2251. else
  2252. goto <bb 6>; [INV]
  2253. <bb 6> :
  2254. _1 = pxQueue->uxItemSize;
  2255. if (_1 == 0)
  2256. goto <bb 7>; [INV]
  2257. else
  2258. goto <bb 8>; [INV]
  2259. <bb 7> :
  2260. iftmp.0 = 1;
  2261. goto <bb 9>; [INV]
  2262. <bb 8> :
  2263. iftmp.0 = 0;
  2264. <bb 9> :
  2265. if (iftmp.0 == 0)
  2266. goto <bb 10>; [INV]
  2267. else
  2268. goto <bb 12>; [INV]
  2269. <bb 10> :
  2270. vPortRaiseBASEPRI ();
  2271. <bb 11> :
  2272. goto <bb 11>; [INV]
  2273. <bb 12> :
  2274. if (xCopyPosition != 2)
  2275. goto <bb 14>; [INV]
  2276. else
  2277. goto <bb 13>; [INV]
  2278. <bb 13> :
  2279. _2 = pxQueue->uxLength;
  2280. if (_2 == 1)
  2281. goto <bb 14>; [INV]
  2282. else
  2283. goto <bb 15>; [INV]
  2284. <bb 14> :
  2285. iftmp.1 = 1;
  2286. goto <bb 16>; [INV]
  2287. <bb 15> :
  2288. iftmp.1 = 0;
  2289. <bb 16> :
  2290. if (iftmp.1 == 0)
  2291. goto <bb 17>; [INV]
  2292. else
  2293. goto <bb 19>; [INV]
  2294. <bb 17> :
  2295. vPortRaiseBASEPRI ();
  2296. <bb 18> :
  2297. goto <bb 18>; [INV]
  2298. <bb 19> :
  2299. _3 = xTaskGetSchedulerState ();
  2300. if (_3 != 0)
  2301. goto <bb 21>; [INV]
  2302. else
  2303. goto <bb 20>; [INV]
  2304. <bb 20> :
  2305. xTicksToWait.3_4 = xTicksToWait;
  2306. if (xTicksToWait.3_4 == 0)
  2307. goto <bb 21>; [INV]
  2308. else
  2309. goto <bb 22>; [INV]
  2310. <bb 21> :
  2311. iftmp.2 = 1;
  2312. goto <bb 23>; [INV]
  2313. <bb 22> :
  2314. iftmp.2 = 0;
  2315. <bb 23> :
  2316. if (iftmp.2 == 0)
  2317. goto <bb 24>; [INV]
  2318. else
  2319. goto <bb 26>; [INV]
  2320. <bb 24> :
  2321. vPortRaiseBASEPRI ();
  2322. <bb 25> :
  2323. goto <bb 25>; [INV]
  2324. <bb 26> :
  2325. vPortEnterCritical ();
  2326. _5 = pxQueue->uxMessagesWaiting;
  2327. _6 = pxQueue->uxLength;
  2328. if (_5 < _6)
  2329. goto <bb 28>; [INV]
  2330. else
  2331. goto <bb 27>; [INV]
  2332. <bb 27> :
  2333. if (xCopyPosition == 2)
  2334. goto <bb 28>; [INV]
  2335. else
  2336. goto <bb 34>; [INV]
  2337. <bb 28> :
  2338. xYieldRequired = prvCopyDataToQueue (pxQueue, pvItemToQueue, xCopyPosition);
  2339. _7 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  2340. if (_7 != 0)
  2341. goto <bb 29>; [INV]
  2342. else
  2343. goto <bb 31>; [INV]
  2344. <bb 29> :
  2345. _8 = &pxQueue->xTasksWaitingToReceive;
  2346. _9 = xTaskRemoveFromEventList (_8);
  2347. if (_9 != 0)
  2348. goto <bb 30>; [INV]
  2349. else
  2350. goto <bb 33>; [INV]
  2351. <bb 30> :
  2352. _10 = 3758157060B;
  2353. *_10 = 268435456;
  2354. __asm__ __volatile__("dsb" : : : "memory");
  2355. __asm__ __volatile__("isb");
  2356. goto <bb 33>; [INV]
  2357. <bb 31> :
  2358. if (xYieldRequired != 0)
  2359. goto <bb 32>; [INV]
  2360. else
  2361. goto <bb 33>; [INV]
  2362. <bb 32> :
  2363. _11 = 3758157060B;
  2364. *_11 = 268435456;
  2365. __asm__ __volatile__("dsb" : : : "memory");
  2366. __asm__ __volatile__("isb");
  2367. <bb 33> :
  2368. vPortExitCritical ();
  2369. D.6882 = 1;
  2370. // predicted unlikely by early return (on trees) predictor.
  2371. goto <bb 49>; [INV]
  2372. <bb 34> :
  2373. xTicksToWait.4_12 = xTicksToWait;
  2374. if (xTicksToWait.4_12 == 0)
  2375. goto <bb 35>; [INV]
  2376. else
  2377. goto <bb 36>; [INV]
  2378. <bb 35> :
  2379. vPortExitCritical ();
  2380. D.6882 = 0;
  2381. // predicted unlikely by early return (on trees) predictor.
  2382. goto <bb 49>; [INV]
  2383. <bb 36> :
  2384. if (xEntryTimeSet == 0)
  2385. goto <bb 37>; [INV]
  2386. else
  2387. goto <bb 38>; [INV]
  2388. <bb 37> :
  2389. vTaskInternalSetTimeOutState (&xTimeOut);
  2390. xEntryTimeSet = 1;
  2391. <bb 38> :
  2392. vPortExitCritical ();
  2393. vTaskSuspendAll ();
  2394. vPortEnterCritical ();
  2395. _13 = pxQueue->cRxLock;
  2396. if (_13 == -1)
  2397. goto <bb 39>; [INV]
  2398. else
  2399. goto <bb 40>; [INV]
  2400. <bb 39> :
  2401. pxQueue->cRxLock = 0;
  2402. <bb 40> :
  2403. _14 = pxQueue->cTxLock;
  2404. if (_14 == -1)
  2405. goto <bb 41>; [INV]
  2406. else
  2407. goto <bb 42>; [INV]
  2408. <bb 41> :
  2409. pxQueue->cTxLock = 0;
  2410. <bb 42> :
  2411. vPortExitCritical ();
  2412. _15 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  2413. if (_15 == 0)
  2414. goto <bb 43>; [INV]
  2415. else
  2416. goto <bb 47>; [INV]
  2417. <bb 43> :
  2418. _16 = prvIsQueueFull (pxQueue);
  2419. if (_16 != 0)
  2420. goto <bb 44>; [INV]
  2421. else
  2422. goto <bb 46>; [INV]
  2423. <bb 44> :
  2424. _17 = &pxQueue->xTasksWaitingToSend;
  2425. xTicksToWait.5_18 = xTicksToWait;
  2426. vTaskPlaceOnEventList (_17, xTicksToWait.5_18);
  2427. prvUnlockQueue (pxQueue);
  2428. _19 = xTaskResumeAll ();
  2429. if (_19 == 0)
  2430. goto <bb 45>; [INV]
  2431. else
  2432. goto <bb 48>; [INV]
  2433. <bb 45> :
  2434. _20 = 3758157060B;
  2435. *_20 = 268435456;
  2436. __asm__ __volatile__("dsb" : : : "memory");
  2437. __asm__ __volatile__("isb");
  2438. goto <bb 48>; [INV]
  2439. <bb 46> :
  2440. prvUnlockQueue (pxQueue);
  2441. xTaskResumeAll ();
  2442. goto <bb 48>; [INV]
  2443. <bb 47> :
  2444. prvUnlockQueue (pxQueue);
  2445. xTaskResumeAll ();
  2446. D.6882 = 0;
  2447. // predicted unlikely by early return (on trees) predictor.
  2448. goto <bb 49>; [INV]
  2449. <bb 48> :
  2450. goto <bb 26>; [INV]
  2451. <bb 49> :
  2452. xTimeOut = {CLOBBER};
  2453. <bb 50> :
  2454. <L55>:
  2455. return D.6882;
  2456. }
  2457. xQueueCreateCountingSemaphore (const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount)
  2458. {
  2459. struct QueueDefinition * xHandle;
  2460. struct QueueDefinition * D.6845;
  2461. <bb 2> :
  2462. xHandle = 0B;
  2463. if (uxMaxCount != 0)
  2464. goto <bb 3>; [INV]
  2465. else
  2466. goto <bb 7>; [INV]
  2467. <bb 3> :
  2468. if (uxInitialCount <= uxMaxCount)
  2469. goto <bb 4>; [INV]
  2470. else
  2471. goto <bb 7>; [INV]
  2472. <bb 4> :
  2473. xHandle = xQueueGenericCreate (uxMaxCount, 0, 2);
  2474. if (xHandle != 0B)
  2475. goto <bb 5>; [INV]
  2476. else
  2477. goto <bb 6>; [INV]
  2478. <bb 5> :
  2479. MEM[(struct Queue_t *)xHandle].uxMessagesWaiting = uxInitialCount;
  2480. <bb 6> :
  2481. goto <bb 10>; [INV]
  2482. <bb 7> :
  2483. if (xHandle == 0B)
  2484. goto <bb 8>; [INV]
  2485. else
  2486. goto <bb 10>; [INV]
  2487. <bb 8> :
  2488. vPortRaiseBASEPRI ();
  2489. <bb 9> :
  2490. goto <bb 9>; [INV]
  2491. <bb 10> :
  2492. D.6845 = xHandle;
  2493. <bb 11> :
  2494. <L10>:
  2495. return D.6845;
  2496. }
  2497. xQueueTakeMutexRecursive (struct QueueDefinition * xMutex, TickType_t xTicksToWait)
  2498. {
  2499. struct Queue_t * const pxMutex;
  2500. BaseType_t xReturn;
  2501. BaseType_t D.6834;
  2502. <bb 2> :
  2503. pxMutex = xMutex;
  2504. if (pxMutex == 0B)
  2505. goto <bb 3>; [INV]
  2506. else
  2507. goto <bb 5>; [INV]
  2508. <bb 3> :
  2509. vPortRaiseBASEPRI ();
  2510. <bb 4> :
  2511. goto <bb 4>; [INV]
  2512. <bb 5> :
  2513. _1 = pxMutex->u.xSemaphore.xMutexHolder;
  2514. _2 = xTaskGetCurrentTaskHandle ();
  2515. if (_1 == _2)
  2516. goto <bb 6>; [INV]
  2517. else
  2518. goto <bb 7>; [INV]
  2519. <bb 6> :
  2520. _3 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  2521. _4 = _3 + 1;
  2522. pxMutex->u.xSemaphore.uxRecursiveCallCount = _4;
  2523. xReturn = 1;
  2524. goto <bb 9>; [INV]
  2525. <bb 7> :
  2526. xReturn = xQueueSemaphoreTake (pxMutex, xTicksToWait);
  2527. if (xReturn != 0)
  2528. goto <bb 8>; [INV]
  2529. else
  2530. goto <bb 9>; [INV]
  2531. <bb 8> :
  2532. _5 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  2533. _6 = _5 + 1;
  2534. pxMutex->u.xSemaphore.uxRecursiveCallCount = _6;
  2535. <bb 9> :
  2536. D.6834 = xReturn;
  2537. <bb 10> :
  2538. <L9>:
  2539. return D.6834;
  2540. }
  2541. xQueueGiveMutexRecursive (struct QueueDefinition * xMutex)
  2542. {
  2543. struct Queue_t * const pxMutex;
  2544. BaseType_t xReturn;
  2545. BaseType_t D.6824;
  2546. <bb 2> :
  2547. pxMutex = xMutex;
  2548. if (pxMutex == 0B)
  2549. goto <bb 3>; [INV]
  2550. else
  2551. goto <bb 5>; [INV]
  2552. <bb 3> :
  2553. vPortRaiseBASEPRI ();
  2554. <bb 4> :
  2555. goto <bb 4>; [INV]
  2556. <bb 5> :
  2557. _1 = pxMutex->u.xSemaphore.xMutexHolder;
  2558. _2 = xTaskGetCurrentTaskHandle ();
  2559. if (_1 == _2)
  2560. goto <bb 6>; [INV]
  2561. else
  2562. goto <bb 9>; [INV]
  2563. <bb 6> :
  2564. _3 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  2565. _4 = _3 + 4294967295;
  2566. pxMutex->u.xSemaphore.uxRecursiveCallCount = _4;
  2567. _5 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  2568. if (_5 == 0)
  2569. goto <bb 7>; [INV]
  2570. else
  2571. goto <bb 8>; [INV]
  2572. <bb 7> :
  2573. xQueueGenericSend (pxMutex, 0B, 0, 0);
  2574. <bb 8> :
  2575. xReturn = 1;
  2576. goto <bb 10>; [INV]
  2577. <bb 9> :
  2578. xReturn = 0;
  2579. <bb 10> :
  2580. D.6824 = xReturn;
  2581. <bb 11> :
  2582. <L9>:
  2583. return D.6824;
  2584. }
  2585. xQueueGetMutexHolderFromISR (struct QueueDefinition * xSemaphore)
  2586. {
  2587. struct tskTaskControlBlock * pxReturn;
  2588. struct tskTaskControlBlock * D.6814;
  2589. <bb 2> :
  2590. if (xSemaphore == 0B)
  2591. goto <bb 3>; [INV]
  2592. else
  2593. goto <bb 5>; [INV]
  2594. <bb 3> :
  2595. vPortRaiseBASEPRI ();
  2596. <bb 4> :
  2597. goto <bb 4>; [INV]
  2598. <bb 5> :
  2599. _1 = MEM[(struct Queue_t *)xSemaphore].pcHead;
  2600. if (_1 == 0B)
  2601. goto <bb 6>; [INV]
  2602. else
  2603. goto <bb 7>; [INV]
  2604. <bb 6> :
  2605. pxReturn = MEM[(struct Queue_t *)xSemaphore].u.xSemaphore.xMutexHolder;
  2606. goto <bb 8>; [INV]
  2607. <bb 7> :
  2608. pxReturn = 0B;
  2609. <bb 8> :
  2610. D.6814 = pxReturn;
  2611. <bb 9> :
  2612. <L6>:
  2613. return D.6814;
  2614. }
  2615. xQueueGetMutexHolder (struct QueueDefinition * xSemaphore)
  2616. {
  2617. struct Queue_t * const pxSemaphore;
  2618. struct tskTaskControlBlock * pxReturn;
  2619. struct tskTaskControlBlock * D.6807;
  2620. <bb 2> :
  2621. pxSemaphore = xSemaphore;
  2622. if (xSemaphore == 0B)
  2623. goto <bb 3>; [INV]
  2624. else
  2625. goto <bb 5>; [INV]
  2626. <bb 3> :
  2627. vPortRaiseBASEPRI ();
  2628. <bb 4> :
  2629. goto <bb 4>; [INV]
  2630. <bb 5> :
  2631. vPortEnterCritical ();
  2632. _1 = pxSemaphore->pcHead;
  2633. if (_1 == 0B)
  2634. goto <bb 6>; [INV]
  2635. else
  2636. goto <bb 7>; [INV]
  2637. <bb 6> :
  2638. pxReturn = pxSemaphore->u.xSemaphore.xMutexHolder;
  2639. goto <bb 8>; [INV]
  2640. <bb 7> :
  2641. pxReturn = 0B;
  2642. <bb 8> :
  2643. vPortExitCritical ();
  2644. D.6807 = pxReturn;
  2645. <bb 9> :
  2646. <L6>:
  2647. return D.6807;
  2648. }
  2649. xQueueCreateMutex (const uint8_t ucQueueType)
  2650. {
  2651. const UBaseType_t uxMutexSize;
  2652. const UBaseType_t uxMutexLength;
  2653. struct QueueDefinition * xNewQueue;
  2654. struct QueueDefinition * D.6800;
  2655. <bb 2> :
  2656. uxMutexLength = 1;
  2657. uxMutexSize = 0;
  2658. xNewQueue = xQueueGenericCreate (uxMutexLength, uxMutexSize, ucQueueType);
  2659. prvInitialiseMutex (xNewQueue);
  2660. D.6800 = xNewQueue;
  2661. <bb 3> :
  2662. <L0>:
  2663. return D.6800;
  2664. }
  2665. prvInitialiseMutex (struct Queue_t * pxNewQueue)
  2666. {
  2667. <bb 2> :
  2668. if (pxNewQueue != 0B)
  2669. goto <bb 3>; [INV]
  2670. else
  2671. goto <bb 4>; [INV]
  2672. <bb 3> :
  2673. pxNewQueue->u.xSemaphore.xMutexHolder = 0B;
  2674. pxNewQueue->pcHead = 0B;
  2675. pxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0;
  2676. xQueueGenericSend (pxNewQueue, 0B, 0, 0);
  2677. <bb 4> :
  2678. return;
  2679. }
  2680. prvInitialiseNewQueue (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t * pucQueueStorage, const uint8_t ucQueueType, struct Queue_t * pxNewQueue)
  2681. {
  2682. <bb 2> :
  2683. if (uxItemSize == 0)
  2684. goto <bb 3>; [INV]
  2685. else
  2686. goto <bb 4>; [INV]
  2687. <bb 3> :
  2688. pxNewQueue->pcHead = pxNewQueue;
  2689. goto <bb 5>; [INV]
  2690. <bb 4> :
  2691. pxNewQueue->pcHead = pucQueueStorage;
  2692. <bb 5> :
  2693. pxNewQueue->uxLength = uxQueueLength;
  2694. pxNewQueue->uxItemSize = uxItemSize;
  2695. xQueueGenericReset (pxNewQueue, 1);
  2696. pxNewQueue->ucQueueType = ucQueueType;
  2697. return;
  2698. }
  2699. xQueueGenericCreate (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType)
  2700. {
  2701. uint8_t * pucQueueStorage;
  2702. size_t xQueueSizeInBytes;
  2703. struct Queue_t * pxNewQueue;
  2704. struct QueueDefinition * D.6792;
  2705. <bb 2> :
  2706. pxNewQueue = 0B;
  2707. if (uxQueueLength != 0)
  2708. goto <bb 3>; [INV]
  2709. else
  2710. goto <bb 8>; [INV]
  2711. <bb 3> :
  2712. _1 = .MUL_OVERFLOW (uxItemSize, uxQueueLength);
  2713. _2 = IMAGPART_EXPR <_1>;
  2714. if (_2 == 0)
  2715. goto <bb 4>; [INV]
  2716. else
  2717. goto <bb 8>; [INV]
  2718. <bb 4> :
  2719. _3 = uxQueueLength * uxItemSize;
  2720. if (_3 <= 4294967215)
  2721. goto <bb 5>; [INV]
  2722. else
  2723. goto <bb 8>; [INV]
  2724. <bb 5> :
  2725. xQueueSizeInBytes = uxQueueLength * uxItemSize;
  2726. _4 = xQueueSizeInBytes + 80;
  2727. pxNewQueue = pvPortMalloc (_4);
  2728. if (pxNewQueue != 0B)
  2729. goto <bb 6>; [INV]
  2730. else
  2731. goto <bb 7>; [INV]
  2732. <bb 6> :
  2733. pucQueueStorage = pxNewQueue;
  2734. pucQueueStorage = pucQueueStorage + 80;
  2735. prvInitialiseNewQueue (uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue);
  2736. <bb 7> :
  2737. goto <bb 11>; [INV]
  2738. <bb 8> :
  2739. if (pxNewQueue == 0B)
  2740. goto <bb 9>; [INV]
  2741. else
  2742. goto <bb 11>; [INV]
  2743. <bb 9> :
  2744. vPortRaiseBASEPRI ();
  2745. <bb 10> :
  2746. goto <bb 10>; [INV]
  2747. <bb 11> :
  2748. D.6792 = pxNewQueue;
  2749. <bb 12> :
  2750. <L11>:
  2751. return D.6792;
  2752. }
  2753. xQueueGenericReset (struct QueueDefinition * xQueue, BaseType_t xNewQueue)
  2754. {
  2755. struct Queue_t * const pxQueue;
  2756. BaseType_t xReturn;
  2757. BaseType_t D.6780;
  2758. <bb 2> :
  2759. xReturn = 1;
  2760. pxQueue = xQueue;
  2761. if (pxQueue == 0B)
  2762. goto <bb 3>; [INV]
  2763. else
  2764. goto <bb 5>; [INV]
  2765. <bb 3> :
  2766. vPortRaiseBASEPRI ();
  2767. <bb 4> :
  2768. goto <bb 4>; [INV]
  2769. <bb 5> :
  2770. if (pxQueue != 0B)
  2771. goto <bb 6>; [INV]
  2772. else
  2773. goto <bb 14>; [INV]
  2774. <bb 6> :
  2775. _1 = pxQueue->uxLength;
  2776. if (_1 != 0)
  2777. goto <bb 7>; [INV]
  2778. else
  2779. goto <bb 14>; [INV]
  2780. <bb 7> :
  2781. _3 = pxQueue->uxItemSize;
  2782. _4 = pxQueue->uxLength;
  2783. _2 = .MUL_OVERFLOW (_3, _4);
  2784. _5 = IMAGPART_EXPR <_2>;
  2785. if (_5 == 0)
  2786. goto <bb 8>; [INV]
  2787. else
  2788. goto <bb 14>; [INV]
  2789. <bb 8> :
  2790. vPortEnterCritical ();
  2791. _6 = pxQueue->pcHead;
  2792. _7 = pxQueue->uxLength;
  2793. _8 = pxQueue->uxItemSize;
  2794. _9 = _7 * _8;
  2795. _10 = _6 + _9;
  2796. pxQueue->u.xQueue.pcTail = _10;
  2797. pxQueue->uxMessagesWaiting = 0;
  2798. _11 = pxQueue->pcHead;
  2799. pxQueue->pcWriteTo = _11;
  2800. _12 = pxQueue->pcHead;
  2801. _13 = pxQueue->uxLength;
  2802. _14 = _13 + 4294967295;
  2803. _15 = pxQueue->uxItemSize;
  2804. _16 = _14 * _15;
  2805. _17 = _12 + _16;
  2806. pxQueue->u.xQueue.pcReadFrom = _17;
  2807. pxQueue->cRxLock = -1;
  2808. pxQueue->cTxLock = -1;
  2809. if (xNewQueue == 0)
  2810. goto <bb 9>; [INV]
  2811. else
  2812. goto <bb 12>; [INV]
  2813. <bb 9> :
  2814. _18 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  2815. if (_18 != 0)
  2816. goto <bb 10>; [INV]
  2817. else
  2818. goto <bb 13>; [INV]
  2819. <bb 10> :
  2820. _19 = &pxQueue->xTasksWaitingToSend;
  2821. _20 = xTaskRemoveFromEventList (_19);
  2822. if (_20 != 0)
  2823. goto <bb 11>; [INV]
  2824. else
  2825. goto <bb 13>; [INV]
  2826. <bb 11> :
  2827. _21 = 3758157060B;
  2828. *_21 = 268435456;
  2829. __asm__ __volatile__("dsb" : : : "memory");
  2830. __asm__ __volatile__("isb");
  2831. goto <bb 13>; [INV]
  2832. <bb 12> :
  2833. _22 = &pxQueue->xTasksWaitingToSend;
  2834. vListInitialise (_22);
  2835. _23 = &pxQueue->xTasksWaitingToReceive;
  2836. vListInitialise (_23);
  2837. <bb 13> :
  2838. vPortExitCritical ();
  2839. goto <bb 15>; [INV]
  2840. <bb 14> :
  2841. xReturn = 0;
  2842. <bb 15> :
  2843. if (xReturn == 0)
  2844. goto <bb 16>; [INV]
  2845. else
  2846. goto <bb 18>; [INV]
  2847. <bb 16> :
  2848. vPortRaiseBASEPRI ();
  2849. <bb 17> :
  2850. goto <bb 17>; [INV]
  2851. <bb 18> :
  2852. D.6780 = xReturn;
  2853. <bb 19> :
  2854. <L20>:
  2855. return D.6780;
  2856. }
  2857. __attribute__((always_inline))
  2858. vPortSetBASEPRI (uint32_t ulNewMaskValue)
  2859. {
  2860. <bb 2> :
  2861. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue : "memory");
  2862. return;
  2863. }
  2864. __attribute__((always_inline))
  2865. ulPortRaiseBASEPRI ()
  2866. {
  2867. uint32_t ulNewBASEPRI;
  2868. uint32_t ulOriginalBASEPRI;
  2869. uint32_t D.6938;
  2870. <bb 2> :
  2871. __asm__ __volatile__(" mrs %0, basepri
  2872. mov %1, %2
  2873. msr basepri, %1
  2874. isb
  2875. dsb
  2876. " : "=r" ulOriginalBASEPRI, "=r" ulNewBASEPRI : "i" 16 : "memory");
  2877. D.6938 = ulOriginalBASEPRI;
  2878. <bb 3> :
  2879. <L0>:
  2880. return D.6938;
  2881. }
  2882. __attribute__((always_inline))
  2883. vPortRaiseBASEPRI ()
  2884. {
  2885. uint32_t ulNewBASEPRI;
  2886. <bb 2> :
  2887. __asm__ __volatile__(" mov %0, %1
  2888. msr basepri, %0
  2889. isb
  2890. dsb
  2891. " : "=r" ulNewBASEPRI : "i" 16 : "memory");
  2892. return;
  2893. }