queue.c.068i.whole-program 91 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181
  1. Marking local functions:
  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 xQueueGenericSendFromISR/16 xQueueGiveFromISR/17
  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: xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 xQueuePeek/20 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 xQueueReceive/18
  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: xQueueGenericSend/15 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18
  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: xQueueGenericSend/15 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18
  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: xQueueGenericSend/15 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18
  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: xQueueGenericSend/15 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18
  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: xQueueGenericSend/15 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18
  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: xQueueGiveMutexRecursive/12 xQueueTakeMutexRecursive/13
  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 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 prvIsQueueFull/36 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 prvIsQueueEmpty/34 prvUnlockQueue/33 prvUnlockQueue/33 uxQueueSpacesAvailable/24 uxQueueMessagesWaiting/23 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: xQueueGenericSend/15 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueReceive/18 prvUnlockQueue/33 prvUnlockQueue/33 xQueueReceiveFromISR/21 xQueueGenericSendFromISR/16 xQueueGiveFromISR/17 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 xQueueGenericSend/15 xQueueGenericSend/15 prvIsQueueFull/36 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 prvIsQueueEmpty/34 prvUnlockQueue/33 prvUnlockQueue/33 uxQueueSpacesAvailable/24 uxQueueMessagesWaiting/23 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:
  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:
  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:
  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:
  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:
  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 xQueueGenericSend/15 xQueueGenericSend/15 xQueueGenericSend/15 xQueuePeek/20 xQueuePeek/20 xQueuePeek/20 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueSemaphoreTake/19 xQueueReceive/18 xQueueReceive/18 xQueueReceive/18
  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: xQueuePeek/20 xQueueReceive/18 xQueuePeekFromISR/22 xQueueReceiveFromISR/21
  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: xQueueGenericSend/15 xQueueGenericSendFromISR/16
  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
  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:
  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
  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
  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: prvCopyDataFromQueue/32 vPortValidateInterruptPriority/54
  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: xTaskRemoveFromEventList/43 prvCopyDataFromQueue/32 vPortValidateInterruptPriority/54
  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 xTaskGetSchedulerState/48
  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 vPortExitCritical/45 xTaskRemoveFromEventList/43 pvTaskIncrementMutexHeldCount/55 vPortEnterCritical/42 xTaskGetSchedulerState/48
  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 xTaskGetSchedulerState/48
  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: xTaskRemoveFromEventList/43 vPortValidateInterruptPriority/54
  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: xTaskRemoveFromEventList/43 prvCopyDataToQueue/31 vPortValidateInterruptPriority/54
  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 xTaskGetSchedulerState/48
  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: 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
  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
  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:
  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
  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: xQueueCreateMutex/9 xQueueCreateCountingSemaphore/14
  520. Calls: 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: vPortExitCritical/45 vListInitialise/44 vListInitialise/44 xTaskRemoveFromEventList/43 vPortEnterCritical/42
  530. xQueueRegistry/4 (xQueueRegistry) @05f98630
  531. Type: variable definition analyzed
  532. Visibility: force_output externally_visible no_reorder public
  533. References:
  534. Referring: pcQueueGetName/39 (read)vQueueAddToRegistry/38 (addr)vQueueAddToRegistry/38 (read)vQueueAddToRegistry/38 (addr)pcQueueGetName/39 (read)vQueueAddToRegistry/38 (read)vQueueUnregisterQueue/40 (read)vQueueUnregisterQueue/40 (write)vQueueUnregisterQueue/40 (write)
  535. Availability: available
  536. Varpool flags:
  537. vQueueWaitForMessageRestricted (struct QueueDefinition * xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely)
  538. {
  539. struct Queue_t * const pxQueue;
  540. signed char _1;
  541. signed char _2;
  542. long unsigned int _3;
  543. struct List_t * _4;
  544. <bb 2> :
  545. pxQueue_9 = xQueue_8(D);
  546. vPortEnterCritical ();
  547. _1 ={v} pxQueue_9->cRxLock;
  548. if (_1 == -1)
  549. goto <bb 3>; [INV]
  550. else
  551. goto <bb 4>; [INV]
  552. <bb 3> :
  553. pxQueue_9->cRxLock ={v} 0;
  554. <bb 4> :
  555. _2 ={v} pxQueue_9->cTxLock;
  556. if (_2 == -1)
  557. goto <bb 5>; [INV]
  558. else
  559. goto <bb 6>; [INV]
  560. <bb 5> :
  561. pxQueue_9->cTxLock ={v} 0;
  562. <bb 6> :
  563. vPortExitCritical ();
  564. _3 ={v} pxQueue_9->uxMessagesWaiting;
  565. if (_3 == 0)
  566. goto <bb 7>; [INV]
  567. else
  568. goto <bb 8>; [INV]
  569. <bb 7> :
  570. _4 = &pxQueue_9->xTasksWaitingToReceive;
  571. vTaskPlaceOnEventListRestricted (_4, xTicksToWait_15(D), xWaitIndefinitely_16(D));
  572. <bb 8> :
  573. prvUnlockQueue (pxQueue_9);
  574. return;
  575. }
  576. vQueueUnregisterQueue (struct QueueDefinition * xQueue)
  577. {
  578. uint32_t ulNewBASEPRI;
  579. UBaseType_t ux;
  580. struct QueueDefinition * _1;
  581. <bb 2> :
  582. if (xQueue_4(D) == 0B)
  583. goto <bb 3>; [INV]
  584. else
  585. goto <bb 6>; [INV]
  586. <bb 3> :
  587. __asm__ __volatile__(" mov %0, %1
  588. msr basepri, %0
  589. isb
  590. dsb
  591. " : "=r" ulNewBASEPRI_10 : "i" 16 : "memory");
  592. <bb 4> :
  593. <bb 5> :
  594. goto <bb 5>; [INV]
  595. <bb 6> :
  596. ux_5 = 0;
  597. goto <bb 10>; [INV]
  598. <bb 7> :
  599. _1 = xQueueRegistry[ux_2].xHandle;
  600. if (xQueue_4(D) == _1)
  601. goto <bb 8>; [INV]
  602. else
  603. goto <bb 9>; [INV]
  604. <bb 8> :
  605. xQueueRegistry[ux_2].pcQueueName = 0B;
  606. xQueueRegistry[ux_2].xHandle = 0B;
  607. goto <bb 11>; [INV]
  608. <bb 9> :
  609. ux_7 = ux_2 + 1;
  610. <bb 10> :
  611. # ux_2 = PHI <ux_5(6), ux_7(9)>
  612. if (ux_2 <= 1)
  613. goto <bb 7>; [INV]
  614. else
  615. goto <bb 11>; [INV]
  616. <bb 11> :
  617. return;
  618. }
  619. pcQueueGetName (struct QueueDefinition * xQueue)
  620. {
  621. uint32_t ulNewBASEPRI;
  622. const char * pcReturn;
  623. UBaseType_t ux;
  624. const char * D.7264;
  625. struct QueueDefinition * _1;
  626. const char * _10;
  627. <bb 2> :
  628. pcReturn_4 = 0B;
  629. if (xQueue_5(D) == 0B)
  630. goto <bb 3>; [INV]
  631. else
  632. goto <bb 6>; [INV]
  633. <bb 3> :
  634. __asm__ __volatile__(" mov %0, %1
  635. msr basepri, %0
  636. isb
  637. dsb
  638. " : "=r" ulNewBASEPRI_11 : "i" 16 : "memory");
  639. <bb 4> :
  640. <bb 5> :
  641. goto <bb 5>; [INV]
  642. <bb 6> :
  643. ux_6 = 0;
  644. goto <bb 10>; [INV]
  645. <bb 7> :
  646. _1 = xQueueRegistry[ux_2].xHandle;
  647. if (xQueue_5(D) == _1)
  648. goto <bb 8>; [INV]
  649. else
  650. goto <bb 9>; [INV]
  651. <bb 8> :
  652. pcReturn_9 = xQueueRegistry[ux_2].pcQueueName;
  653. goto <bb 11>; [INV]
  654. <bb 9> :
  655. ux_8 = ux_2 + 1;
  656. <bb 10> :
  657. # ux_2 = PHI <ux_6(6), ux_8(9)>
  658. if (ux_2 <= 1)
  659. goto <bb 7>; [INV]
  660. else
  661. goto <bb 11>; [INV]
  662. <bb 11> :
  663. # pcReturn_3 = PHI <pcReturn_9(8), pcReturn_4(10)>
  664. _10 = pcReturn_3;
  665. <bb 12> :
  666. <L8>:
  667. return _10;
  668. }
  669. vQueueAddToRegistry (struct QueueDefinition * xQueue, const char * pcQueueName)
  670. {
  671. uint32_t ulNewBASEPRI;
  672. struct QueueRegistryItem_t * pxEntryToWrite;
  673. UBaseType_t ux;
  674. struct QueueDefinition * _1;
  675. const char * _2;
  676. <bb 2> :
  677. if (xQueue_8(D) == 0B)
  678. goto <bb 3>; [INV]
  679. else
  680. goto <bb 6>; [INV]
  681. <bb 3> :
  682. __asm__ __volatile__(" mov %0, %1
  683. msr basepri, %0
  684. isb
  685. dsb
  686. " : "=r" ulNewBASEPRI_18 : "i" 16 : "memory");
  687. <bb 4> :
  688. <bb 5> :
  689. goto <bb 5>; [INV]
  690. <bb 6> :
  691. pxEntryToWrite_9 = 0B;
  692. if (pcQueueName_10(D) != 0B)
  693. goto <bb 7>; [INV]
  694. else
  695. goto <bb 15>; [INV]
  696. <bb 7> :
  697. ux_11 = 0;
  698. goto <bb 14>; [INV]
  699. <bb 8> :
  700. _1 = xQueueRegistry[ux_3].xHandle;
  701. if (xQueue_8(D) == _1)
  702. goto <bb 9>; [INV]
  703. else
  704. goto <bb 10>; [INV]
  705. <bb 9> :
  706. pxEntryToWrite_15 = &xQueueRegistry[ux_3];
  707. goto <bb 15>; [INV]
  708. <bb 10> :
  709. if (pxEntryToWrite_5 == 0B)
  710. goto <bb 11>; [INV]
  711. else
  712. goto <bb 13>; [INV]
  713. <bb 11> :
  714. _2 = xQueueRegistry[ux_3].pcQueueName;
  715. if (_2 == 0B)
  716. goto <bb 12>; [INV]
  717. else
  718. goto <bb 13>; [INV]
  719. <bb 12> :
  720. pxEntryToWrite_13 = &xQueueRegistry[ux_3];
  721. <bb 13> :
  722. # pxEntryToWrite_4 = PHI <pxEntryToWrite_5(10), pxEntryToWrite_5(11), pxEntryToWrite_13(12)>
  723. ux_14 = ux_3 + 1;
  724. <bb 14> :
  725. # ux_3 = PHI <ux_11(7), ux_14(13)>
  726. # pxEntryToWrite_5 = PHI <pxEntryToWrite_9(7), pxEntryToWrite_4(13)>
  727. if (ux_3 <= 1)
  728. goto <bb 8>; [INV]
  729. else
  730. goto <bb 15>; [INV]
  731. <bb 15> :
  732. # pxEntryToWrite_6 = PHI <pxEntryToWrite_9(6), pxEntryToWrite_15(9), pxEntryToWrite_5(14)>
  733. if (pxEntryToWrite_6 != 0B)
  734. goto <bb 16>; [INV]
  735. else
  736. goto <bb 17>; [INV]
  737. <bb 16> :
  738. pxEntryToWrite_6->pcQueueName = pcQueueName_10(D);
  739. pxEntryToWrite_6->xHandle = xQueue_8(D);
  740. <bb 17> :
  741. return;
  742. }
  743. xQueueIsQueueFullFromISR (struct QueueDefinition * const xQueue)
  744. {
  745. uint32_t ulNewBASEPRI;
  746. struct Queue_t * const pxQueue;
  747. BaseType_t xReturn;
  748. BaseType_t D.7245;
  749. long unsigned int _1;
  750. long unsigned int _2;
  751. BaseType_t _9;
  752. <bb 2> :
  753. pxQueue_5 = xQueue_4(D);
  754. if (pxQueue_5 == 0B)
  755. goto <bb 3>; [INV]
  756. else
  757. goto <bb 6>; [INV]
  758. <bb 3> :
  759. __asm__ __volatile__(" mov %0, %1
  760. msr basepri, %0
  761. isb
  762. dsb
  763. " : "=r" ulNewBASEPRI_10 : "i" 16 : "memory");
  764. <bb 4> :
  765. <bb 5> :
  766. goto <bb 5>; [INV]
  767. <bb 6> :
  768. _1 ={v} pxQueue_5->uxMessagesWaiting;
  769. _2 = pxQueue_5->uxLength;
  770. if (_1 == _2)
  771. goto <bb 7>; [INV]
  772. else
  773. goto <bb 8>; [INV]
  774. <bb 7> :
  775. xReturn_8 = 1;
  776. goto <bb 9>; [INV]
  777. <bb 8> :
  778. xReturn_7 = 0;
  779. <bb 9> :
  780. # xReturn_3 = PHI <xReturn_8(7), xReturn_7(8)>
  781. _9 = xReturn_3;
  782. <bb 10> :
  783. <L6>:
  784. return _9;
  785. }
  786. prvIsQueueFull (const struct Queue_t * pxQueue)
  787. {
  788. BaseType_t xReturn;
  789. BaseType_t D.7238;
  790. long unsigned int _1;
  791. long unsigned int _2;
  792. BaseType_t _10;
  793. <bb 2> :
  794. vPortEnterCritical ();
  795. _1 ={v} pxQueue_6(D)->uxMessagesWaiting;
  796. _2 = pxQueue_6(D)->uxLength;
  797. if (_1 == _2)
  798. goto <bb 3>; [INV]
  799. else
  800. goto <bb 4>; [INV]
  801. <bb 3> :
  802. xReturn_8 = 1;
  803. goto <bb 5>; [INV]
  804. <bb 4> :
  805. xReturn_7 = 0;
  806. <bb 5> :
  807. # xReturn_3 = PHI <xReturn_8(3), xReturn_7(4)>
  808. vPortExitCritical ();
  809. _10 = xReturn_3;
  810. <bb 6> :
  811. <L3>:
  812. return _10;
  813. }
  814. xQueueIsQueueEmptyFromISR (struct QueueDefinition * const xQueue)
  815. {
  816. uint32_t ulNewBASEPRI;
  817. struct Queue_t * const pxQueue;
  818. BaseType_t xReturn;
  819. BaseType_t D.7233;
  820. long unsigned int _1;
  821. BaseType_t _8;
  822. <bb 2> :
  823. pxQueue_4 = xQueue_3(D);
  824. if (pxQueue_4 == 0B)
  825. goto <bb 3>; [INV]
  826. else
  827. goto <bb 6>; [INV]
  828. <bb 3> :
  829. __asm__ __volatile__(" mov %0, %1
  830. msr basepri, %0
  831. isb
  832. dsb
  833. " : "=r" ulNewBASEPRI_9 : "i" 16 : "memory");
  834. <bb 4> :
  835. <bb 5> :
  836. goto <bb 5>; [INV]
  837. <bb 6> :
  838. _1 ={v} pxQueue_4->uxMessagesWaiting;
  839. if (_1 == 0)
  840. goto <bb 7>; [INV]
  841. else
  842. goto <bb 8>; [INV]
  843. <bb 7> :
  844. xReturn_7 = 1;
  845. goto <bb 9>; [INV]
  846. <bb 8> :
  847. xReturn_6 = 0;
  848. <bb 9> :
  849. # xReturn_2 = PHI <xReturn_7(7), xReturn_6(8)>
  850. _8 = xReturn_2;
  851. <bb 10> :
  852. <L6>:
  853. return _8;
  854. }
  855. prvIsQueueEmpty (const struct Queue_t * pxQueue)
  856. {
  857. BaseType_t xReturn;
  858. BaseType_t D.7226;
  859. long unsigned int _1;
  860. BaseType_t _9;
  861. <bb 2> :
  862. vPortEnterCritical ();
  863. _1 ={v} pxQueue_5(D)->uxMessagesWaiting;
  864. if (_1 == 0)
  865. goto <bb 3>; [INV]
  866. else
  867. goto <bb 4>; [INV]
  868. <bb 3> :
  869. xReturn_7 = 1;
  870. goto <bb 5>; [INV]
  871. <bb 4> :
  872. xReturn_6 = 0;
  873. <bb 5> :
  874. # xReturn_2 = PHI <xReturn_7(3), xReturn_6(4)>
  875. vPortExitCritical ();
  876. _9 = xReturn_2;
  877. <bb 6> :
  878. <L3>:
  879. return _9;
  880. }
  881. prvUnlockQueue (struct Queue_t * const pxQueue)
  882. {
  883. int8_t cRxLock;
  884. int8_t cTxLock;
  885. long unsigned int _1;
  886. struct List_t * _2;
  887. long int _3;
  888. unsigned char cTxLock.28_4;
  889. unsigned char _5;
  890. long unsigned int _6;
  891. struct List_t * _7;
  892. long int _8;
  893. unsigned char cRxLock.29_9;
  894. unsigned char _10;
  895. <bb 2> :
  896. vPortEnterCritical ();
  897. cTxLock_20 ={v} pxQueue_19(D)->cTxLock;
  898. goto <bb 8>; [INV]
  899. <bb 3> :
  900. _1 ={v} pxQueue_19(D)->xTasksWaitingToReceive.uxNumberOfItems;
  901. if (_1 != 0)
  902. goto <bb 4>; [INV]
  903. else
  904. goto <bb 6>; [INV]
  905. <bb 4> :
  906. _2 = &pxQueue_19(D)->xTasksWaitingToReceive;
  907. _3 = xTaskRemoveFromEventList (_2);
  908. if (_3 != 0)
  909. goto <bb 5>; [INV]
  910. else
  911. goto <bb 7>; [INV]
  912. <bb 5> :
  913. vTaskMissedYield ();
  914. goto <bb 7>; [INV]
  915. <bb 6> :
  916. goto <bb 9>; [INV]
  917. <bb 7> :
  918. cTxLock.28_4 = (unsigned char) cTxLock_11;
  919. _5 = cTxLock.28_4 + 255;
  920. cTxLock_23 = (int8_t) _5;
  921. <bb 8> :
  922. # cTxLock_11 = PHI <cTxLock_20(2), cTxLock_23(7)>
  923. if (cTxLock_11 > 0)
  924. goto <bb 3>; [INV]
  925. else
  926. goto <bb 9>; [INV]
  927. <bb 9> :
  928. pxQueue_19(D)->cTxLock ={v} -1;
  929. vPortExitCritical ();
  930. vPortEnterCritical ();
  931. cRxLock_27 ={v} pxQueue_19(D)->cRxLock;
  932. goto <bb 15>; [INV]
  933. <bb 10> :
  934. _6 ={v} pxQueue_19(D)->xTasksWaitingToSend.uxNumberOfItems;
  935. if (_6 != 0)
  936. goto <bb 11>; [INV]
  937. else
  938. goto <bb 14>; [INV]
  939. <bb 11> :
  940. _7 = &pxQueue_19(D)->xTasksWaitingToSend;
  941. _8 = xTaskRemoveFromEventList (_7);
  942. if (_8 != 0)
  943. goto <bb 12>; [INV]
  944. else
  945. goto <bb 13>; [INV]
  946. <bb 12> :
  947. vTaskMissedYield ();
  948. <bb 13> :
  949. cRxLock.29_9 = (unsigned char) cRxLock_12;
  950. _10 = cRxLock.29_9 + 255;
  951. cRxLock_30 = (int8_t) _10;
  952. goto <bb 15>; [INV]
  953. <bb 14> :
  954. goto <bb 16>; [INV]
  955. <bb 15> :
  956. # cRxLock_12 = PHI <cRxLock_27(9), cRxLock_30(13)>
  957. if (cRxLock_12 > 0)
  958. goto <bb 10>; [INV]
  959. else
  960. goto <bb 16>; [INV]
  961. <bb 16> :
  962. pxQueue_19(D)->cRxLock ={v} -1;
  963. vPortExitCritical ();
  964. return;
  965. }
  966. prvCopyDataFromQueue (struct Queue_t * const pxQueue, void * const pvBuffer)
  967. {
  968. long unsigned int _1;
  969. int8_t * _2;
  970. long unsigned int _3;
  971. int8_t * _4;
  972. int8_t * _5;
  973. int8_t * _6;
  974. int8_t * _7;
  975. int8_t * _8;
  976. long unsigned int _9;
  977. <bb 2> :
  978. _1 = pxQueue_13(D)->uxItemSize;
  979. if (_1 != 0)
  980. goto <bb 3>; [INV]
  981. else
  982. goto <bb 6>; [INV]
  983. <bb 3> :
  984. _2 = pxQueue_13(D)->u.xQueue.pcReadFrom;
  985. _3 = pxQueue_13(D)->uxItemSize;
  986. _4 = _2 + _3;
  987. pxQueue_13(D)->u.xQueue.pcReadFrom = _4;
  988. _5 = pxQueue_13(D)->u.xQueue.pcReadFrom;
  989. _6 = pxQueue_13(D)->u.xQueue.pcTail;
  990. if (_5 >= _6)
  991. goto <bb 4>; [INV]
  992. else
  993. goto <bb 5>; [INV]
  994. <bb 4> :
  995. _7 = pxQueue_13(D)->pcHead;
  996. pxQueue_13(D)->u.xQueue.pcReadFrom = _7;
  997. <bb 5> :
  998. _8 = pxQueue_13(D)->u.xQueue.pcReadFrom;
  999. _9 = pxQueue_13(D)->uxItemSize;
  1000. memcpy (pvBuffer_16(D), _8, _9);
  1001. <bb 6> :
  1002. return;
  1003. }
  1004. prvCopyDataToQueue (struct Queue_t * const pxQueue, const void * pvItemToQueue, const BaseType_t xPosition)
  1005. {
  1006. UBaseType_t uxMessagesWaiting;
  1007. BaseType_t xReturn;
  1008. BaseType_t D.7204;
  1009. long unsigned int _1;
  1010. int8_t * _2;
  1011. struct tskTaskControlBlock * _3;
  1012. int8_t * _4;
  1013. long unsigned int _5;
  1014. int8_t * _6;
  1015. long unsigned int _7;
  1016. int8_t * _8;
  1017. int8_t * _9;
  1018. int8_t * _10;
  1019. int8_t * _11;
  1020. int8_t * _12;
  1021. long unsigned int _13;
  1022. int8_t * _14;
  1023. long unsigned int _15;
  1024. sizetype _16;
  1025. int8_t * _17;
  1026. int8_t * _18;
  1027. int8_t * _19;
  1028. int8_t * _20;
  1029. long unsigned int _21;
  1030. sizetype _22;
  1031. int8_t * _23;
  1032. long unsigned int _24;
  1033. BaseType_t _46;
  1034. <bb 2> :
  1035. xReturn_29 = 0;
  1036. uxMessagesWaiting_32 ={v} pxQueue_31(D)->uxMessagesWaiting;
  1037. _1 = pxQueue_31(D)->uxItemSize;
  1038. if (_1 == 0)
  1039. goto <bb 3>; [INV]
  1040. else
  1041. goto <bb 5>; [INV]
  1042. <bb 3> :
  1043. _2 = pxQueue_31(D)->pcHead;
  1044. if (_2 == 0B)
  1045. goto <bb 4>; [INV]
  1046. else
  1047. goto <bb 13>; [INV]
  1048. <bb 4> :
  1049. _3 = pxQueue_31(D)->u.xSemaphore.xMutexHolder;
  1050. xReturn_43 = xTaskPriorityDisinherit (_3);
  1051. pxQueue_31(D)->u.xSemaphore.xMutexHolder = 0B;
  1052. goto <bb 13>; [INV]
  1053. <bb 5> :
  1054. if (xPosition_33(D) == 0)
  1055. goto <bb 6>; [INV]
  1056. else
  1057. goto <bb 8>; [INV]
  1058. <bb 6> :
  1059. _4 = pxQueue_31(D)->pcWriteTo;
  1060. _5 = pxQueue_31(D)->uxItemSize;
  1061. memcpy (_4, pvItemToQueue_34(D), _5);
  1062. _6 = pxQueue_31(D)->pcWriteTo;
  1063. _7 = pxQueue_31(D)->uxItemSize;
  1064. _8 = _6 + _7;
  1065. pxQueue_31(D)->pcWriteTo = _8;
  1066. _9 = pxQueue_31(D)->pcWriteTo;
  1067. _10 = pxQueue_31(D)->u.xQueue.pcTail;
  1068. if (_9 >= _10)
  1069. goto <bb 7>; [INV]
  1070. else
  1071. goto <bb 13>; [INV]
  1072. <bb 7> :
  1073. _11 = pxQueue_31(D)->pcHead;
  1074. pxQueue_31(D)->pcWriteTo = _11;
  1075. goto <bb 13>; [INV]
  1076. <bb 8> :
  1077. _12 = pxQueue_31(D)->u.xQueue.pcReadFrom;
  1078. _13 = pxQueue_31(D)->uxItemSize;
  1079. memcpy (_12, pvItemToQueue_34(D), _13);
  1080. _14 = pxQueue_31(D)->u.xQueue.pcReadFrom;
  1081. _15 = pxQueue_31(D)->uxItemSize;
  1082. _16 = -_15;
  1083. _17 = _14 + _16;
  1084. pxQueue_31(D)->u.xQueue.pcReadFrom = _17;
  1085. _18 = pxQueue_31(D)->u.xQueue.pcReadFrom;
  1086. _19 = pxQueue_31(D)->pcHead;
  1087. if (_18 < _19)
  1088. goto <bb 9>; [INV]
  1089. else
  1090. goto <bb 10>; [INV]
  1091. <bb 9> :
  1092. _20 = pxQueue_31(D)->u.xQueue.pcTail;
  1093. _21 = pxQueue_31(D)->uxItemSize;
  1094. _22 = -_21;
  1095. _23 = _20 + _22;
  1096. pxQueue_31(D)->u.xQueue.pcReadFrom = _23;
  1097. <bb 10> :
  1098. if (xPosition_33(D) == 2)
  1099. goto <bb 11>; [INV]
  1100. else
  1101. goto <bb 13>; [INV]
  1102. <bb 11> :
  1103. if (uxMessagesWaiting_32 != 0)
  1104. goto <bb 12>; [INV]
  1105. else
  1106. goto <bb 13>; [INV]
  1107. <bb 12> :
  1108. uxMessagesWaiting_38 = uxMessagesWaiting_32 + 4294967295;
  1109. <bb 13> :
  1110. # xReturn_25 = PHI <xReturn_43(4), xReturn_29(7), xReturn_29(10), xReturn_29(12), xReturn_29(3), xReturn_29(6), xReturn_29(11)>
  1111. # uxMessagesWaiting_26 = PHI <uxMessagesWaiting_32(4), uxMessagesWaiting_32(7), uxMessagesWaiting_32(10), uxMessagesWaiting_38(12), uxMessagesWaiting_32(3), uxMessagesWaiting_32(6), uxMessagesWaiting_32(11)>
  1112. _24 = uxMessagesWaiting_26 + 1;
  1113. pxQueue_31(D)->uxMessagesWaiting ={v} _24;
  1114. _46 = xReturn_25;
  1115. <bb 14> :
  1116. <L21>:
  1117. return _46;
  1118. }
  1119. prvGetDisinheritPriorityAfterTimeout (const struct Queue_t * const pxQueue)
  1120. {
  1121. UBaseType_t uxHighestPriorityOfWaitingTasks;
  1122. UBaseType_t D.7181;
  1123. long unsigned int _1;
  1124. struct xLIST_ITEM * _2;
  1125. long unsigned int _3;
  1126. UBaseType_t _9;
  1127. <bb 2> :
  1128. _1 ={v} pxQueue_6(D)->xTasksWaitingToReceive.uxNumberOfItems;
  1129. if (_1 != 0)
  1130. goto <bb 3>; [INV]
  1131. else
  1132. goto <bb 4>; [INV]
  1133. <bb 3> :
  1134. _2 = pxQueue_6(D)->xTasksWaitingToReceive.xListEnd.pxNext;
  1135. _3 = _2->xItemValue;
  1136. uxHighestPriorityOfWaitingTasks_8 = 5 - _3;
  1137. goto <bb 5>; [INV]
  1138. <bb 4> :
  1139. uxHighestPriorityOfWaitingTasks_7 = 0;
  1140. <bb 5> :
  1141. # uxHighestPriorityOfWaitingTasks_4 = PHI <uxHighestPriorityOfWaitingTasks_8(3), uxHighestPriorityOfWaitingTasks_7(4)>
  1142. _9 = uxHighestPriorityOfWaitingTasks_4;
  1143. <bb 6> :
  1144. <L3>:
  1145. return _9;
  1146. }
  1147. ucQueueGetQueueType (struct QueueDefinition * xQueue)
  1148. {
  1149. uint8_t D.7176;
  1150. uint8_t _3;
  1151. <bb 2> :
  1152. _3 = MEM[(struct Queue_t *)xQueue_2(D)].ucQueueType;
  1153. <bb 3> :
  1154. <L0>:
  1155. return _3;
  1156. }
  1157. vQueueSetQueueNumber (struct QueueDefinition * xQueue, UBaseType_t uxQueueNumber)
  1158. {
  1159. <bb 2> :
  1160. MEM[(struct Queue_t *)xQueue_2(D)].uxQueueNumber = uxQueueNumber_3(D);
  1161. return;
  1162. }
  1163. uxQueueGetQueueNumber (struct QueueDefinition * xQueue)
  1164. {
  1165. UBaseType_t D.7174;
  1166. UBaseType_t _3;
  1167. <bb 2> :
  1168. _3 = MEM[(struct Queue_t *)xQueue_2(D)].uxQueueNumber;
  1169. <bb 3> :
  1170. <L0>:
  1171. return _3;
  1172. }
  1173. vQueueDelete (struct QueueDefinition * xQueue)
  1174. {
  1175. uint32_t ulNewBASEPRI;
  1176. struct Queue_t * const pxQueue;
  1177. <bb 2> :
  1178. pxQueue_2 = xQueue_1(D);
  1179. if (pxQueue_2 == 0B)
  1180. goto <bb 3>; [INV]
  1181. else
  1182. goto <bb 6>; [INV]
  1183. <bb 3> :
  1184. __asm__ __volatile__(" mov %0, %1
  1185. msr basepri, %0
  1186. isb
  1187. dsb
  1188. " : "=r" ulNewBASEPRI_6 : "i" 16 : "memory");
  1189. <bb 4> :
  1190. <bb 5> :
  1191. goto <bb 5>; [INV]
  1192. <bb 6> :
  1193. vQueueUnregisterQueue (pxQueue_2);
  1194. vPortFree (pxQueue_2);
  1195. return;
  1196. }
  1197. uxQueueMessagesWaitingFromISR (struct QueueDefinition * const xQueue)
  1198. {
  1199. uint32_t ulNewBASEPRI;
  1200. struct Queue_t * const pxQueue;
  1201. UBaseType_t uxReturn;
  1202. UBaseType_t D.7170;
  1203. UBaseType_t _5;
  1204. <bb 2> :
  1205. pxQueue_2 = xQueue_1(D);
  1206. if (pxQueue_2 == 0B)
  1207. goto <bb 3>; [INV]
  1208. else
  1209. goto <bb 6>; [INV]
  1210. <bb 3> :
  1211. __asm__ __volatile__(" mov %0, %1
  1212. msr basepri, %0
  1213. isb
  1214. dsb
  1215. " : "=r" ulNewBASEPRI_6 : "i" 16 : "memory");
  1216. <bb 4> :
  1217. <bb 5> :
  1218. goto <bb 5>; [INV]
  1219. <bb 6> :
  1220. uxReturn_4 ={v} pxQueue_2->uxMessagesWaiting;
  1221. _5 = uxReturn_4;
  1222. <bb 7> :
  1223. <L3>:
  1224. return _5;
  1225. }
  1226. uxQueueSpacesAvailable (struct QueueDefinition * const xQueue)
  1227. {
  1228. uint32_t ulNewBASEPRI;
  1229. struct Queue_t * const pxQueue;
  1230. UBaseType_t uxReturn;
  1231. UBaseType_t D.7166;
  1232. long unsigned int _1;
  1233. long unsigned int _2;
  1234. UBaseType_t _9;
  1235. <bb 2> :
  1236. pxQueue_4 = xQueue_3(D);
  1237. if (pxQueue_4 == 0B)
  1238. goto <bb 3>; [INV]
  1239. else
  1240. goto <bb 6>; [INV]
  1241. <bb 3> :
  1242. __asm__ __volatile__(" mov %0, %1
  1243. msr basepri, %0
  1244. isb
  1245. dsb
  1246. " : "=r" ulNewBASEPRI_10 : "i" 16 : "memory");
  1247. <bb 4> :
  1248. <bb 5> :
  1249. goto <bb 5>; [INV]
  1250. <bb 6> :
  1251. vPortEnterCritical ();
  1252. _1 = pxQueue_4->uxLength;
  1253. _2 ={v} pxQueue_4->uxMessagesWaiting;
  1254. uxReturn_7 = _1 - _2;
  1255. vPortExitCritical ();
  1256. _9 = uxReturn_7;
  1257. <bb 7> :
  1258. <L3>:
  1259. return _9;
  1260. }
  1261. uxQueueMessagesWaiting (struct QueueDefinition * const xQueue)
  1262. {
  1263. uint32_t ulNewBASEPRI;
  1264. UBaseType_t uxReturn;
  1265. UBaseType_t D.7162;
  1266. UBaseType_t _6;
  1267. <bb 2> :
  1268. if (xQueue_1(D) == 0B)
  1269. goto <bb 3>; [INV]
  1270. else
  1271. goto <bb 6>; [INV]
  1272. <bb 3> :
  1273. __asm__ __volatile__(" mov %0, %1
  1274. msr basepri, %0
  1275. isb
  1276. dsb
  1277. " : "=r" ulNewBASEPRI_7 : "i" 16 : "memory");
  1278. <bb 4> :
  1279. <bb 5> :
  1280. goto <bb 5>; [INV]
  1281. <bb 6> :
  1282. vPortEnterCritical ();
  1283. uxReturn_4 ={v} MEM[(struct Queue_t *)xQueue_1(D)].uxMessagesWaiting;
  1284. vPortExitCritical ();
  1285. _6 = uxReturn_4;
  1286. <bb 7> :
  1287. <L3>:
  1288. return _6;
  1289. }
  1290. xQueuePeekFromISR (struct QueueDefinition * xQueue, void * const pvBuffer)
  1291. {
  1292. uint32_t ulNewMaskValue;
  1293. uint32_t D.7361;
  1294. uint32_t ulOriginalBASEPRI;
  1295. uint32_t ulNewBASEPRI;
  1296. uint32_t D.7360;
  1297. uint32_t ulNewBASEPRI;
  1298. uint32_t ulNewBASEPRI;
  1299. uint32_t ulNewBASEPRI;
  1300. struct Queue_t * const pxQueue;
  1301. int8_t * pcOriginalReadPosition;
  1302. UBaseType_t uxSavedInterruptStatus;
  1303. BaseType_t xReturn;
  1304. BaseType_t D.7158;
  1305. int iftmp.27;
  1306. long unsigned int _1;
  1307. long unsigned int _2;
  1308. long unsigned int _3;
  1309. int iftmp.27_5;
  1310. int iftmp.27_11;
  1311. int iftmp.27_12;
  1312. BaseType_t _20;
  1313. long unsigned int _26;
  1314. <bb 2> :
  1315. pxQueue_8 = xQueue_7(D);
  1316. if (pxQueue_8 == 0B)
  1317. goto <bb 3>; [INV]
  1318. else
  1319. goto <bb 6>; [INV]
  1320. <bb 3> :
  1321. __asm__ __volatile__(" mov %0, %1
  1322. msr basepri, %0
  1323. isb
  1324. dsb
  1325. " : "=r" ulNewBASEPRI_21 : "i" 16 : "memory");
  1326. <bb 4> :
  1327. <bb 5> :
  1328. goto <bb 5>; [INV]
  1329. <bb 6> :
  1330. if (pvBuffer_9(D) != 0B)
  1331. goto <bb 8>; [INV]
  1332. else
  1333. goto <bb 7>; [INV]
  1334. <bb 7> :
  1335. _1 = pxQueue_8->uxItemSize;
  1336. if (_1 == 0)
  1337. goto <bb 8>; [INV]
  1338. else
  1339. goto <bb 9>; [INV]
  1340. <bb 8> :
  1341. iftmp.27_12 = 1;
  1342. goto <bb 10>; [INV]
  1343. <bb 9> :
  1344. iftmp.27_11 = 0;
  1345. <bb 10> :
  1346. # iftmp.27_5 = PHI <iftmp.27_12(8), iftmp.27_11(9)>
  1347. if (iftmp.27_5 == 0)
  1348. goto <bb 11>; [INV]
  1349. else
  1350. goto <bb 14>; [INV]
  1351. <bb 11> :
  1352. __asm__ __volatile__(" mov %0, %1
  1353. msr basepri, %0
  1354. isb
  1355. dsb
  1356. " : "=r" ulNewBASEPRI_22 : "i" 16 : "memory");
  1357. <bb 12> :
  1358. <bb 13> :
  1359. goto <bb 13>; [INV]
  1360. <bb 14> :
  1361. _2 = pxQueue_8->uxItemSize;
  1362. if (_2 == 0)
  1363. goto <bb 15>; [INV]
  1364. else
  1365. goto <bb 18>; [INV]
  1366. <bb 15> :
  1367. __asm__ __volatile__(" mov %0, %1
  1368. msr basepri, %0
  1369. isb
  1370. dsb
  1371. " : "=r" ulNewBASEPRI_23 : "i" 16 : "memory");
  1372. <bb 16> :
  1373. <bb 17> :
  1374. goto <bb 17>; [INV]
  1375. <bb 18> :
  1376. vPortValidateInterruptPriority ();
  1377. __asm__ __volatile__(" mrs %0, basepri
  1378. mov %1, %2
  1379. msr basepri, %1
  1380. isb
  1381. dsb
  1382. " : "=r" ulOriginalBASEPRI_24, "=r" ulNewBASEPRI_25 : "i" 16 : "memory");
  1383. _26 = ulOriginalBASEPRI_24;
  1384. <bb 19> :
  1385. <L17>:
  1386. _29 = _26;
  1387. <bb 20> :
  1388. uxSavedInterruptStatus_14 = _29;
  1389. _3 ={v} pxQueue_8->uxMessagesWaiting;
  1390. if (_3 != 0)
  1391. goto <bb 21>; [INV]
  1392. else
  1393. goto <bb 22>; [INV]
  1394. <bb 21> :
  1395. pcOriginalReadPosition_16 = pxQueue_8->u.xQueue.pcReadFrom;
  1396. prvCopyDataFromQueue (pxQueue_8, pvBuffer_9(D));
  1397. pxQueue_8->u.xQueue.pcReadFrom = pcOriginalReadPosition_16;
  1398. xReturn_19 = 1;
  1399. goto <bb 23>; [INV]
  1400. <bb 22> :
  1401. xReturn_15 = 0;
  1402. <bb 23> :
  1403. # xReturn_4 = PHI <xReturn_19(21), xReturn_15(22)>
  1404. ulNewMaskValue_27 = uxSavedInterruptStatus_14;
  1405. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue_27 : "memory");
  1406. <bb 24> :
  1407. _20 = xReturn_4;
  1408. <bb 25> :
  1409. <L16>:
  1410. return _20;
  1411. }
  1412. xQueueReceiveFromISR (struct QueueDefinition * xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken)
  1413. {
  1414. uint32_t ulNewMaskValue;
  1415. uint32_t ulNewBASEPRI;
  1416. uint32_t D.7351;
  1417. uint32_t ulOriginalBASEPRI;
  1418. uint32_t ulNewBASEPRI;
  1419. uint32_t D.7350;
  1420. uint32_t ulNewBASEPRI;
  1421. uint32_t ulNewBASEPRI;
  1422. const int8_t cRxLock;
  1423. const UBaseType_t uxMessagesWaiting;
  1424. struct Queue_t * const pxQueue;
  1425. UBaseType_t uxSavedInterruptStatus;
  1426. BaseType_t xReturn;
  1427. BaseType_t D.7142;
  1428. int iftmp.25;
  1429. long unsigned int _1;
  1430. long unsigned int _2;
  1431. long unsigned int _3;
  1432. struct List_t * _4;
  1433. long int _5;
  1434. unsigned char cRxLock.26_6;
  1435. unsigned char _7;
  1436. signed char _8;
  1437. int iftmp.25_10;
  1438. int iftmp.25_17;
  1439. int iftmp.25_18;
  1440. BaseType_t _31;
  1441. long unsigned int _36;
  1442. <bb 2> :
  1443. pxQueue_14 = xQueue_13(D);
  1444. if (pxQueue_14 == 0B)
  1445. goto <bb 3>; [INV]
  1446. else
  1447. goto <bb 6>; [INV]
  1448. <bb 3> :
  1449. __asm__ __volatile__(" mov %0, %1
  1450. msr basepri, %0
  1451. isb
  1452. dsb
  1453. " : "=r" ulNewBASEPRI_32 : "i" 16 : "memory");
  1454. <bb 4> :
  1455. <bb 5> :
  1456. goto <bb 5>; [INV]
  1457. <bb 6> :
  1458. if (pvBuffer_15(D) != 0B)
  1459. goto <bb 8>; [INV]
  1460. else
  1461. goto <bb 7>; [INV]
  1462. <bb 7> :
  1463. _1 = pxQueue_14->uxItemSize;
  1464. if (_1 == 0)
  1465. goto <bb 8>; [INV]
  1466. else
  1467. goto <bb 9>; [INV]
  1468. <bb 8> :
  1469. iftmp.25_18 = 1;
  1470. goto <bb 10>; [INV]
  1471. <bb 9> :
  1472. iftmp.25_17 = 0;
  1473. <bb 10> :
  1474. # iftmp.25_10 = PHI <iftmp.25_18(8), iftmp.25_17(9)>
  1475. if (iftmp.25_10 == 0)
  1476. goto <bb 11>; [INV]
  1477. else
  1478. goto <bb 14>; [INV]
  1479. <bb 11> :
  1480. __asm__ __volatile__(" mov %0, %1
  1481. msr basepri, %0
  1482. isb
  1483. dsb
  1484. " : "=r" ulNewBASEPRI_33 : "i" 16 : "memory");
  1485. <bb 12> :
  1486. <bb 13> :
  1487. goto <bb 13>; [INV]
  1488. <bb 14> :
  1489. vPortValidateInterruptPriority ();
  1490. __asm__ __volatile__(" mrs %0, basepri
  1491. mov %1, %2
  1492. msr basepri, %1
  1493. isb
  1494. dsb
  1495. " : "=r" ulOriginalBASEPRI_34, "=r" ulNewBASEPRI_35 : "i" 16 : "memory");
  1496. _36 = ulOriginalBASEPRI_34;
  1497. <bb 15> :
  1498. <L29>:
  1499. _40 = _36;
  1500. <bb 16> :
  1501. uxSavedInterruptStatus_20 = _40;
  1502. uxMessagesWaiting_21 ={v} pxQueue_14->uxMessagesWaiting;
  1503. if (uxMessagesWaiting_21 != 0)
  1504. goto <bb 17>; [INV]
  1505. else
  1506. goto <bb 28>; [INV]
  1507. <bb 17> :
  1508. cRxLock_23 ={v} pxQueue_14->cRxLock;
  1509. prvCopyDataFromQueue (pxQueue_14, pvBuffer_15(D));
  1510. _2 = uxMessagesWaiting_21 + 4294967295;
  1511. pxQueue_14->uxMessagesWaiting ={v} _2;
  1512. if (cRxLock_23 == -1)
  1513. goto <bb 18>; [INV]
  1514. else
  1515. goto <bb 22>; [INV]
  1516. <bb 18> :
  1517. _3 ={v} pxQueue_14->xTasksWaitingToSend.uxNumberOfItems;
  1518. if (_3 != 0)
  1519. goto <bb 19>; [INV]
  1520. else
  1521. goto <bb 27>; [INV]
  1522. <bb 19> :
  1523. _4 = &pxQueue_14->xTasksWaitingToSend;
  1524. _5 = xTaskRemoveFromEventList (_4);
  1525. if (_5 != 0)
  1526. goto <bb 20>; [INV]
  1527. else
  1528. goto <bb 27>; [INV]
  1529. <bb 20> :
  1530. if (pxHigherPriorityTaskWoken_28(D) != 0B)
  1531. goto <bb 21>; [INV]
  1532. else
  1533. goto <bb 27>; [INV]
  1534. <bb 21> :
  1535. *pxHigherPriorityTaskWoken_28(D) = 1;
  1536. goto <bb 27>; [INV]
  1537. <bb 22> :
  1538. if (cRxLock_23 == 127)
  1539. goto <bb 23>; [INV]
  1540. else
  1541. goto <bb 26>; [INV]
  1542. <bb 23> :
  1543. __asm__ __volatile__(" mov %0, %1
  1544. msr basepri, %0
  1545. isb
  1546. dsb
  1547. " : "=r" ulNewBASEPRI_37 : "i" 16 : "memory");
  1548. <bb 24> :
  1549. <bb 25> :
  1550. goto <bb 25>; [INV]
  1551. <bb 26> :
  1552. cRxLock.26_6 = (unsigned char) cRxLock_23;
  1553. _7 = cRxLock.26_6 + 1;
  1554. _8 = (signed char) _7;
  1555. pxQueue_14->cRxLock ={v} _8;
  1556. <bb 27> :
  1557. xReturn_30 = 1;
  1558. goto <bb 29>; [INV]
  1559. <bb 28> :
  1560. xReturn_22 = 0;
  1561. <bb 29> :
  1562. # xReturn_9 = PHI <xReturn_30(27), xReturn_22(28)>
  1563. ulNewMaskValue_38 = uxSavedInterruptStatus_20;
  1564. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue_38 : "memory");
  1565. <bb 30> :
  1566. _31 = xReturn_9;
  1567. <bb 31> :
  1568. <L28>:
  1569. return _31;
  1570. }
  1571. xQueuePeek (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait)
  1572. {
  1573. uint32_t ulNewBASEPRI;
  1574. uint32_t ulNewBASEPRI;
  1575. uint32_t ulNewBASEPRI;
  1576. const UBaseType_t uxMessagesWaiting;
  1577. struct Queue_t * const pxQueue;
  1578. int8_t * pcOriginalReadPosition;
  1579. struct TimeOut_t xTimeOut;
  1580. BaseType_t xEntryTimeSet;
  1581. BaseType_t D.7093;
  1582. int iftmp.21;
  1583. int iftmp.20;
  1584. long unsigned int _1;
  1585. long int _2;
  1586. long unsigned int xTicksToWait.22_3;
  1587. long unsigned int _4;
  1588. struct List_t * _5;
  1589. long int _6;
  1590. volatile uint32_t * _7;
  1591. long unsigned int xTicksToWait.23_8;
  1592. signed char _9;
  1593. signed char _10;
  1594. long int _11;
  1595. long int _12;
  1596. struct List_t * _13;
  1597. long unsigned int xTicksToWait.24_14;
  1598. long int _15;
  1599. volatile uint32_t * _16;
  1600. long int _17;
  1601. int iftmp.20_20;
  1602. int iftmp.21_21;
  1603. BaseType_t _22;
  1604. int iftmp.20_35;
  1605. int iftmp.20_36;
  1606. int iftmp.21_38;
  1607. int iftmp.21_39;
  1608. BaseType_t _54;
  1609. BaseType_t _65;
  1610. BaseType_t _74;
  1611. <bb 2> :
  1612. xEntryTimeSet_30 = 0;
  1613. pxQueue_32 = xQueue_31(D);
  1614. if (pxQueue_32 == 0B)
  1615. goto <bb 3>; [INV]
  1616. else
  1617. goto <bb 6>; [INV]
  1618. <bb 3> :
  1619. __asm__ __volatile__(" mov %0, %1
  1620. msr basepri, %0
  1621. isb
  1622. dsb
  1623. " : "=r" ulNewBASEPRI_76 : "i" 16 : "memory");
  1624. <bb 4> :
  1625. <bb 5> :
  1626. goto <bb 5>; [INV]
  1627. <bb 6> :
  1628. if (pvBuffer_33(D) != 0B)
  1629. goto <bb 8>; [INV]
  1630. else
  1631. goto <bb 7>; [INV]
  1632. <bb 7> :
  1633. _1 = pxQueue_32->uxItemSize;
  1634. if (_1 == 0)
  1635. goto <bb 8>; [INV]
  1636. else
  1637. goto <bb 9>; [INV]
  1638. <bb 8> :
  1639. iftmp.20_36 = 1;
  1640. goto <bb 10>; [INV]
  1641. <bb 9> :
  1642. iftmp.20_35 = 0;
  1643. <bb 10> :
  1644. # iftmp.20_20 = PHI <iftmp.20_36(8), iftmp.20_35(9)>
  1645. if (iftmp.20_20 == 0)
  1646. goto <bb 11>; [INV]
  1647. else
  1648. goto <bb 14>; [INV]
  1649. <bb 11> :
  1650. __asm__ __volatile__(" mov %0, %1
  1651. msr basepri, %0
  1652. isb
  1653. dsb
  1654. " : "=r" ulNewBASEPRI_77 : "i" 16 : "memory");
  1655. <bb 12> :
  1656. <bb 13> :
  1657. goto <bb 13>; [INV]
  1658. <bb 14> :
  1659. _2 = xTaskGetSchedulerState ();
  1660. if (_2 != 0)
  1661. goto <bb 16>; [INV]
  1662. else
  1663. goto <bb 15>; [INV]
  1664. <bb 15> :
  1665. xTicksToWait.22_3 = xTicksToWait;
  1666. if (xTicksToWait.22_3 == 0)
  1667. goto <bb 16>; [INV]
  1668. else
  1669. goto <bb 17>; [INV]
  1670. <bb 16> :
  1671. iftmp.21_39 = 1;
  1672. goto <bb 18>; [INV]
  1673. <bb 17> :
  1674. iftmp.21_38 = 0;
  1675. <bb 18> :
  1676. # iftmp.21_21 = PHI <iftmp.21_39(16), iftmp.21_38(17)>
  1677. if (iftmp.21_21 == 0)
  1678. goto <bb 19>; [INV]
  1679. else
  1680. goto <bb 22>; [INV]
  1681. <bb 19> :
  1682. __asm__ __volatile__(" mov %0, %1
  1683. msr basepri, %0
  1684. isb
  1685. dsb
  1686. " : "=r" ulNewBASEPRI_78 : "i" 16 : "memory");
  1687. <bb 20> :
  1688. <bb 21> :
  1689. goto <bb 21>; [INV]
  1690. <bb 22> :
  1691. # xEntryTimeSet_18 = PHI <xEntryTimeSet_30(18), xEntryTimeSet_19(42)>
  1692. vPortEnterCritical ();
  1693. uxMessagesWaiting_41 ={v} pxQueue_32->uxMessagesWaiting;
  1694. if (uxMessagesWaiting_41 != 0)
  1695. goto <bb 23>; [INV]
  1696. else
  1697. goto <bb 27>; [INV]
  1698. <bb 23> :
  1699. pcOriginalReadPosition_66 = pxQueue_32->u.xQueue.pcReadFrom;
  1700. prvCopyDataFromQueue (pxQueue_32, pvBuffer_33(D));
  1701. pxQueue_32->u.xQueue.pcReadFrom = pcOriginalReadPosition_66;
  1702. _4 ={v} pxQueue_32->xTasksWaitingToReceive.uxNumberOfItems;
  1703. if (_4 != 0)
  1704. goto <bb 24>; [INV]
  1705. else
  1706. goto <bb 26>; [INV]
  1707. <bb 24> :
  1708. _5 = &pxQueue_32->xTasksWaitingToReceive;
  1709. _6 = xTaskRemoveFromEventList (_5);
  1710. if (_6 != 0)
  1711. goto <bb 25>; [INV]
  1712. else
  1713. goto <bb 26>; [INV]
  1714. <bb 25> :
  1715. _7 = 3758157060B;
  1716. *_7 ={v} 268435456;
  1717. __asm__ __volatile__("dsb" : : : "memory");
  1718. __asm__ __volatile__("isb");
  1719. <bb 26> :
  1720. vPortExitCritical ();
  1721. _74 = 1;
  1722. // predicted unlikely by early return (on trees) predictor.
  1723. goto <bb 43>; [INV]
  1724. <bb 27> :
  1725. xTicksToWait.23_8 = xTicksToWait;
  1726. if (xTicksToWait.23_8 == 0)
  1727. goto <bb 28>; [INV]
  1728. else
  1729. goto <bb 29>; [INV]
  1730. <bb 28> :
  1731. vPortExitCritical ();
  1732. _65 = 0;
  1733. // predicted unlikely by early return (on trees) predictor.
  1734. goto <bb 43>; [INV]
  1735. <bb 29> :
  1736. if (xEntryTimeSet_18 == 0)
  1737. goto <bb 30>; [INV]
  1738. else
  1739. goto <bb 31>; [INV]
  1740. <bb 30> :
  1741. vTaskInternalSetTimeOutState (&xTimeOut);
  1742. xEntryTimeSet_43 = 1;
  1743. <bb 31> :
  1744. # xEntryTimeSet_19 = PHI <xEntryTimeSet_18(29), xEntryTimeSet_43(30)>
  1745. vPortExitCritical ();
  1746. vTaskSuspendAll ();
  1747. vPortEnterCritical ();
  1748. _9 ={v} pxQueue_32->cRxLock;
  1749. if (_9 == -1)
  1750. goto <bb 32>; [INV]
  1751. else
  1752. goto <bb 33>; [INV]
  1753. <bb 32> :
  1754. pxQueue_32->cRxLock ={v} 0;
  1755. <bb 33> :
  1756. _10 ={v} pxQueue_32->cTxLock;
  1757. if (_10 == -1)
  1758. goto <bb 34>; [INV]
  1759. else
  1760. goto <bb 35>; [INV]
  1761. <bb 34> :
  1762. pxQueue_32->cTxLock ={v} 0;
  1763. <bb 35> :
  1764. vPortExitCritical ();
  1765. _11 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  1766. if (_11 == 0)
  1767. goto <bb 36>; [INV]
  1768. else
  1769. goto <bb 40>; [INV]
  1770. <bb 36> :
  1771. _12 = prvIsQueueEmpty (pxQueue_32);
  1772. if (_12 != 0)
  1773. goto <bb 37>; [INV]
  1774. else
  1775. goto <bb 39>; [INV]
  1776. <bb 37> :
  1777. _13 = &pxQueue_32->xTasksWaitingToReceive;
  1778. xTicksToWait.24_14 = xTicksToWait;
  1779. vTaskPlaceOnEventList (_13, xTicksToWait.24_14);
  1780. prvUnlockQueue (pxQueue_32);
  1781. _15 = xTaskResumeAll ();
  1782. if (_15 == 0)
  1783. goto <bb 38>; [INV]
  1784. else
  1785. goto <bb 42>; [INV]
  1786. <bb 38> :
  1787. _16 = 3758157060B;
  1788. *_16 ={v} 268435456;
  1789. __asm__ __volatile__("dsb" : : : "memory");
  1790. __asm__ __volatile__("isb");
  1791. goto <bb 42>; [INV]
  1792. <bb 39> :
  1793. prvUnlockQueue (pxQueue_32);
  1794. xTaskResumeAll ();
  1795. goto <bb 42>; [INV]
  1796. <bb 40> :
  1797. prvUnlockQueue (pxQueue_32);
  1798. xTaskResumeAll ();
  1799. _17 = prvIsQueueEmpty (pxQueue_32);
  1800. if (_17 != 0)
  1801. goto <bb 41>; [INV]
  1802. else
  1803. goto <bb 42>; [INV]
  1804. <bb 41> :
  1805. _54 = 0;
  1806. // predicted unlikely by early return (on trees) predictor.
  1807. goto <bb 43>; [INV]
  1808. <bb 42> :
  1809. goto <bb 22>; [INV]
  1810. <bb 43> :
  1811. # _22 = PHI <_74(26), _65(28), _54(41)>
  1812. xTimeOut ={v} {CLOBBER};
  1813. <bb 44> :
  1814. <L47>:
  1815. return _22;
  1816. }
  1817. xQueueSemaphoreTake (struct QueueDefinition * xQueue, TickType_t xTicksToWait)
  1818. {
  1819. uint32_t ulNewBASEPRI;
  1820. uint32_t ulNewBASEPRI;
  1821. uint32_t ulNewBASEPRI;
  1822. uint32_t ulNewBASEPRI;
  1823. UBaseType_t uxHighestWaitingPriority;
  1824. const UBaseType_t uxSemaphoreCount;
  1825. BaseType_t xInheritanceOccurred;
  1826. struct Queue_t * const pxQueue;
  1827. struct TimeOut_t xTimeOut;
  1828. BaseType_t xEntryTimeSet;
  1829. BaseType_t D.7039;
  1830. int iftmp.16;
  1831. long unsigned int _1;
  1832. long int _2;
  1833. long unsigned int xTicksToWait.17_3;
  1834. long unsigned int _4;
  1835. int8_t * _5;
  1836. struct tskTaskControlBlock * _6;
  1837. long unsigned int _7;
  1838. struct List_t * _8;
  1839. long int _9;
  1840. volatile uint32_t * _10;
  1841. long unsigned int xTicksToWait.18_11;
  1842. signed char _12;
  1843. signed char _13;
  1844. long int _14;
  1845. long int _15;
  1846. int8_t * _16;
  1847. struct tskTaskControlBlock * _17;
  1848. struct List_t * _18;
  1849. long unsigned int xTicksToWait.19_19;
  1850. long int _20;
  1851. volatile uint32_t * _21;
  1852. long int _22;
  1853. struct tskTaskControlBlock * _23;
  1854. int iftmp.16_29;
  1855. BaseType_t _30;
  1856. int iftmp.16_47;
  1857. int iftmp.16_48;
  1858. BaseType_t _68;
  1859. BaseType_t _83;
  1860. BaseType_t _92;
  1861. <bb 2> :
  1862. xEntryTimeSet_41 = 0;
  1863. pxQueue_43 = xQueue_42(D);
  1864. xInheritanceOccurred_44 = 0;
  1865. if (pxQueue_43 == 0B)
  1866. goto <bb 3>; [INV]
  1867. else
  1868. goto <bb 6>; [INV]
  1869. <bb 3> :
  1870. __asm__ __volatile__(" mov %0, %1
  1871. msr basepri, %0
  1872. isb
  1873. dsb
  1874. " : "=r" ulNewBASEPRI_94 : "i" 16 : "memory");
  1875. <bb 4> :
  1876. <bb 5> :
  1877. goto <bb 5>; [INV]
  1878. <bb 6> :
  1879. _1 = pxQueue_43->uxItemSize;
  1880. if (_1 != 0)
  1881. goto <bb 7>; [INV]
  1882. else
  1883. goto <bb 10>; [INV]
  1884. <bb 7> :
  1885. __asm__ __volatile__(" mov %0, %1
  1886. msr basepri, %0
  1887. isb
  1888. dsb
  1889. " : "=r" ulNewBASEPRI_95 : "i" 16 : "memory");
  1890. <bb 8> :
  1891. <bb 9> :
  1892. goto <bb 9>; [INV]
  1893. <bb 10> :
  1894. _2 = xTaskGetSchedulerState ();
  1895. if (_2 != 0)
  1896. goto <bb 12>; [INV]
  1897. else
  1898. goto <bb 11>; [INV]
  1899. <bb 11> :
  1900. xTicksToWait.17_3 = xTicksToWait;
  1901. if (xTicksToWait.17_3 == 0)
  1902. goto <bb 12>; [INV]
  1903. else
  1904. goto <bb 13>; [INV]
  1905. <bb 12> :
  1906. iftmp.16_48 = 1;
  1907. goto <bb 14>; [INV]
  1908. <bb 13> :
  1909. iftmp.16_47 = 0;
  1910. <bb 14> :
  1911. # iftmp.16_29 = PHI <iftmp.16_48(12), iftmp.16_47(13)>
  1912. if (iftmp.16_29 == 0)
  1913. goto <bb 15>; [INV]
  1914. else
  1915. goto <bb 18>; [INV]
  1916. <bb 15> :
  1917. __asm__ __volatile__(" mov %0, %1
  1918. msr basepri, %0
  1919. isb
  1920. dsb
  1921. " : "=r" ulNewBASEPRI_96 : "i" 16 : "memory");
  1922. <bb 16> :
  1923. <bb 17> :
  1924. goto <bb 17>; [INV]
  1925. <bb 18> :
  1926. # xEntryTimeSet_24 = PHI <xEntryTimeSet_41(14), xEntryTimeSet_25(48)>
  1927. # xInheritanceOccurred_26 = PHI <xInheritanceOccurred_44(14), xInheritanceOccurred_28(48)>
  1928. vPortEnterCritical ();
  1929. uxSemaphoreCount_50 ={v} pxQueue_43->uxMessagesWaiting;
  1930. if (uxSemaphoreCount_50 != 0)
  1931. goto <bb 19>; [INV]
  1932. else
  1933. goto <bb 25>; [INV]
  1934. <bb 19> :
  1935. _4 = uxSemaphoreCount_50 + 4294967295;
  1936. pxQueue_43->uxMessagesWaiting ={v} _4;
  1937. _5 = pxQueue_43->pcHead;
  1938. if (_5 == 0B)
  1939. goto <bb 20>; [INV]
  1940. else
  1941. goto <bb 21>; [INV]
  1942. <bb 20> :
  1943. _6 = pvTaskIncrementMutexHeldCount ();
  1944. pxQueue_43->u.xSemaphore.xMutexHolder = _6;
  1945. <bb 21> :
  1946. _7 ={v} pxQueue_43->xTasksWaitingToSend.uxNumberOfItems;
  1947. if (_7 != 0)
  1948. goto <bb 22>; [INV]
  1949. else
  1950. goto <bb 24>; [INV]
  1951. <bb 22> :
  1952. _8 = &pxQueue_43->xTasksWaitingToSend;
  1953. _9 = xTaskRemoveFromEventList (_8);
  1954. if (_9 != 0)
  1955. goto <bb 23>; [INV]
  1956. else
  1957. goto <bb 24>; [INV]
  1958. <bb 23> :
  1959. _10 = 3758157060B;
  1960. *_10 ={v} 268435456;
  1961. __asm__ __volatile__("dsb" : : : "memory");
  1962. __asm__ __volatile__("isb");
  1963. <bb 24> :
  1964. vPortExitCritical ();
  1965. _92 = 1;
  1966. // predicted unlikely by early return (on trees) predictor.
  1967. goto <bb 49>; [INV]
  1968. <bb 25> :
  1969. xTicksToWait.18_11 = xTicksToWait;
  1970. if (xTicksToWait.18_11 == 0)
  1971. goto <bb 26>; [INV]
  1972. else
  1973. goto <bb 31>; [INV]
  1974. <bb 26> :
  1975. if (xInheritanceOccurred_26 != 0)
  1976. goto <bb 27>; [INV]
  1977. else
  1978. goto <bb 30>; [INV]
  1979. <bb 27> :
  1980. __asm__ __volatile__(" mov %0, %1
  1981. msr basepri, %0
  1982. isb
  1983. dsb
  1984. " : "=r" ulNewBASEPRI_97 : "i" 16 : "memory");
  1985. <bb 28> :
  1986. <bb 29> :
  1987. goto <bb 29>; [INV]
  1988. <bb 30> :
  1989. vPortExitCritical ();
  1990. _83 = 0;
  1991. // predicted unlikely by early return (on trees) predictor.
  1992. goto <bb 49>; [INV]
  1993. <bb 31> :
  1994. if (xEntryTimeSet_24 == 0)
  1995. goto <bb 32>; [INV]
  1996. else
  1997. goto <bb 33>; [INV]
  1998. <bb 32> :
  1999. vTaskInternalSetTimeOutState (&xTimeOut);
  2000. xEntryTimeSet_52 = 1;
  2001. <bb 33> :
  2002. # xEntryTimeSet_25 = PHI <xEntryTimeSet_24(31), xEntryTimeSet_52(32)>
  2003. vPortExitCritical ();
  2004. vTaskSuspendAll ();
  2005. vPortEnterCritical ();
  2006. _12 ={v} pxQueue_43->cRxLock;
  2007. if (_12 == -1)
  2008. goto <bb 34>; [INV]
  2009. else
  2010. goto <bb 35>; [INV]
  2011. <bb 34> :
  2012. pxQueue_43->cRxLock ={v} 0;
  2013. <bb 35> :
  2014. _13 ={v} pxQueue_43->cTxLock;
  2015. if (_13 == -1)
  2016. goto <bb 36>; [INV]
  2017. else
  2018. goto <bb 37>; [INV]
  2019. <bb 36> :
  2020. pxQueue_43->cTxLock ={v} 0;
  2021. <bb 37> :
  2022. vPortExitCritical ();
  2023. _14 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  2024. if (_14 == 0)
  2025. goto <bb 38>; [INV]
  2026. else
  2027. goto <bb 44>; [INV]
  2028. <bb 38> :
  2029. _15 = prvIsQueueEmpty (pxQueue_43);
  2030. if (_15 != 0)
  2031. goto <bb 39>; [INV]
  2032. else
  2033. goto <bb 43>; [INV]
  2034. <bb 39> :
  2035. _16 = pxQueue_43->pcHead;
  2036. if (_16 == 0B)
  2037. goto <bb 40>; [INV]
  2038. else
  2039. goto <bb 41>; [INV]
  2040. <bb 40> :
  2041. vPortEnterCritical ();
  2042. _17 = pxQueue_43->u.xSemaphore.xMutexHolder;
  2043. xInheritanceOccurred_74 = xTaskPriorityInherit (_17);
  2044. vPortExitCritical ();
  2045. <bb 41> :
  2046. # xInheritanceOccurred_27 = PHI <xInheritanceOccurred_26(39), xInheritanceOccurred_74(40)>
  2047. _18 = &pxQueue_43->xTasksWaitingToReceive;
  2048. xTicksToWait.19_19 = xTicksToWait;
  2049. vTaskPlaceOnEventList (_18, xTicksToWait.19_19);
  2050. prvUnlockQueue (pxQueue_43);
  2051. _20 = xTaskResumeAll ();
  2052. if (_20 == 0)
  2053. goto <bb 42>; [INV]
  2054. else
  2055. goto <bb 48>; [INV]
  2056. <bb 42> :
  2057. _21 = 3758157060B;
  2058. *_21 ={v} 268435456;
  2059. __asm__ __volatile__("dsb" : : : "memory");
  2060. __asm__ __volatile__("isb");
  2061. goto <bb 48>; [INV]
  2062. <bb 43> :
  2063. prvUnlockQueue (pxQueue_43);
  2064. xTaskResumeAll ();
  2065. goto <bb 48>; [INV]
  2066. <bb 44> :
  2067. prvUnlockQueue (pxQueue_43);
  2068. xTaskResumeAll ();
  2069. _22 = prvIsQueueEmpty (pxQueue_43);
  2070. if (_22 != 0)
  2071. goto <bb 45>; [INV]
  2072. else
  2073. goto <bb 48>; [INV]
  2074. <bb 45> :
  2075. if (xInheritanceOccurred_26 != 0)
  2076. goto <bb 46>; [INV]
  2077. else
  2078. goto <bb 47>; [INV]
  2079. <bb 46> :
  2080. vPortEnterCritical ();
  2081. uxHighestWaitingPriority_65 = prvGetDisinheritPriorityAfterTimeout (pxQueue_43);
  2082. _23 = pxQueue_43->u.xSemaphore.xMutexHolder;
  2083. vTaskPriorityDisinheritAfterTimeout (_23, uxHighestWaitingPriority_65);
  2084. vPortExitCritical ();
  2085. <bb 47> :
  2086. _68 = 0;
  2087. // predicted unlikely by early return (on trees) predictor.
  2088. goto <bb 49>; [INV]
  2089. <bb 48> :
  2090. # xInheritanceOccurred_28 = PHI <xInheritanceOccurred_26(43), xInheritanceOccurred_26(44), xInheritanceOccurred_27(42), xInheritanceOccurred_27(41)>
  2091. goto <bb 18>; [INV]
  2092. <bb 49> :
  2093. # _30 = PHI <_92(24), _83(30), _68(47)>
  2094. xTimeOut ={v} {CLOBBER};
  2095. <bb 50> :
  2096. <L54>:
  2097. return _30;
  2098. }
  2099. xQueueReceive (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait)
  2100. {
  2101. uint32_t ulNewBASEPRI;
  2102. uint32_t ulNewBASEPRI;
  2103. uint32_t ulNewBASEPRI;
  2104. const UBaseType_t uxMessagesWaiting;
  2105. struct Queue_t * const pxQueue;
  2106. struct TimeOut_t xTimeOut;
  2107. BaseType_t xEntryTimeSet;
  2108. BaseType_t D.6994;
  2109. int iftmp.12;
  2110. int iftmp.11;
  2111. long unsigned int _1;
  2112. long int _2;
  2113. long unsigned int xTicksToWait.13_3;
  2114. long unsigned int _4;
  2115. long unsigned int _5;
  2116. struct List_t * _6;
  2117. long int _7;
  2118. volatile uint32_t * _8;
  2119. long unsigned int xTicksToWait.14_9;
  2120. signed char _10;
  2121. signed char _11;
  2122. long int _12;
  2123. long int _13;
  2124. struct List_t * _14;
  2125. long unsigned int xTicksToWait.15_15;
  2126. long int _16;
  2127. volatile uint32_t * _17;
  2128. long int _18;
  2129. int iftmp.11_21;
  2130. int iftmp.12_22;
  2131. BaseType_t _23;
  2132. int iftmp.11_36;
  2133. int iftmp.11_37;
  2134. int iftmp.12_39;
  2135. int iftmp.12_40;
  2136. BaseType_t _55;
  2137. BaseType_t _66;
  2138. BaseType_t _74;
  2139. <bb 2> :
  2140. xEntryTimeSet_31 = 0;
  2141. pxQueue_33 = xQueue_32(D);
  2142. if (pxQueue_33 == 0B)
  2143. goto <bb 3>; [INV]
  2144. else
  2145. goto <bb 6>; [INV]
  2146. <bb 3> :
  2147. __asm__ __volatile__(" mov %0, %1
  2148. msr basepri, %0
  2149. isb
  2150. dsb
  2151. " : "=r" ulNewBASEPRI_76 : "i" 16 : "memory");
  2152. <bb 4> :
  2153. <bb 5> :
  2154. goto <bb 5>; [INV]
  2155. <bb 6> :
  2156. if (pvBuffer_34(D) != 0B)
  2157. goto <bb 8>; [INV]
  2158. else
  2159. goto <bb 7>; [INV]
  2160. <bb 7> :
  2161. _1 = pxQueue_33->uxItemSize;
  2162. if (_1 == 0)
  2163. goto <bb 8>; [INV]
  2164. else
  2165. goto <bb 9>; [INV]
  2166. <bb 8> :
  2167. iftmp.11_37 = 1;
  2168. goto <bb 10>; [INV]
  2169. <bb 9> :
  2170. iftmp.11_36 = 0;
  2171. <bb 10> :
  2172. # iftmp.11_21 = PHI <iftmp.11_37(8), iftmp.11_36(9)>
  2173. if (iftmp.11_21 == 0)
  2174. goto <bb 11>; [INV]
  2175. else
  2176. goto <bb 14>; [INV]
  2177. <bb 11> :
  2178. __asm__ __volatile__(" mov %0, %1
  2179. msr basepri, %0
  2180. isb
  2181. dsb
  2182. " : "=r" ulNewBASEPRI_77 : "i" 16 : "memory");
  2183. <bb 12> :
  2184. <bb 13> :
  2185. goto <bb 13>; [INV]
  2186. <bb 14> :
  2187. _2 = xTaskGetSchedulerState ();
  2188. if (_2 != 0)
  2189. goto <bb 16>; [INV]
  2190. else
  2191. goto <bb 15>; [INV]
  2192. <bb 15> :
  2193. xTicksToWait.13_3 = xTicksToWait;
  2194. if (xTicksToWait.13_3 == 0)
  2195. goto <bb 16>; [INV]
  2196. else
  2197. goto <bb 17>; [INV]
  2198. <bb 16> :
  2199. iftmp.12_40 = 1;
  2200. goto <bb 18>; [INV]
  2201. <bb 17> :
  2202. iftmp.12_39 = 0;
  2203. <bb 18> :
  2204. # iftmp.12_22 = PHI <iftmp.12_40(16), iftmp.12_39(17)>
  2205. if (iftmp.12_22 == 0)
  2206. goto <bb 19>; [INV]
  2207. else
  2208. goto <bb 22>; [INV]
  2209. <bb 19> :
  2210. __asm__ __volatile__(" mov %0, %1
  2211. msr basepri, %0
  2212. isb
  2213. dsb
  2214. " : "=r" ulNewBASEPRI_78 : "i" 16 : "memory");
  2215. <bb 20> :
  2216. <bb 21> :
  2217. goto <bb 21>; [INV]
  2218. <bb 22> :
  2219. # xEntryTimeSet_19 = PHI <xEntryTimeSet_31(18), xEntryTimeSet_20(42)>
  2220. vPortEnterCritical ();
  2221. uxMessagesWaiting_42 ={v} pxQueue_33->uxMessagesWaiting;
  2222. if (uxMessagesWaiting_42 != 0)
  2223. goto <bb 23>; [INV]
  2224. else
  2225. goto <bb 27>; [INV]
  2226. <bb 23> :
  2227. prvCopyDataFromQueue (pxQueue_33, pvBuffer_34(D));
  2228. _4 = uxMessagesWaiting_42 + 4294967295;
  2229. pxQueue_33->uxMessagesWaiting ={v} _4;
  2230. _5 ={v} pxQueue_33->xTasksWaitingToSend.uxNumberOfItems;
  2231. if (_5 != 0)
  2232. goto <bb 24>; [INV]
  2233. else
  2234. goto <bb 26>; [INV]
  2235. <bb 24> :
  2236. _6 = &pxQueue_33->xTasksWaitingToSend;
  2237. _7 = xTaskRemoveFromEventList (_6);
  2238. if (_7 != 0)
  2239. goto <bb 25>; [INV]
  2240. else
  2241. goto <bb 26>; [INV]
  2242. <bb 25> :
  2243. _8 = 3758157060B;
  2244. *_8 ={v} 268435456;
  2245. __asm__ __volatile__("dsb" : : : "memory");
  2246. __asm__ __volatile__("isb");
  2247. <bb 26> :
  2248. vPortExitCritical ();
  2249. _74 = 1;
  2250. // predicted unlikely by early return (on trees) predictor.
  2251. goto <bb 43>; [INV]
  2252. <bb 27> :
  2253. xTicksToWait.14_9 = xTicksToWait;
  2254. if (xTicksToWait.14_9 == 0)
  2255. goto <bb 28>; [INV]
  2256. else
  2257. goto <bb 29>; [INV]
  2258. <bb 28> :
  2259. vPortExitCritical ();
  2260. _66 = 0;
  2261. // predicted unlikely by early return (on trees) predictor.
  2262. goto <bb 43>; [INV]
  2263. <bb 29> :
  2264. if (xEntryTimeSet_19 == 0)
  2265. goto <bb 30>; [INV]
  2266. else
  2267. goto <bb 31>; [INV]
  2268. <bb 30> :
  2269. vTaskInternalSetTimeOutState (&xTimeOut);
  2270. xEntryTimeSet_44 = 1;
  2271. <bb 31> :
  2272. # xEntryTimeSet_20 = PHI <xEntryTimeSet_19(29), xEntryTimeSet_44(30)>
  2273. vPortExitCritical ();
  2274. vTaskSuspendAll ();
  2275. vPortEnterCritical ();
  2276. _10 ={v} pxQueue_33->cRxLock;
  2277. if (_10 == -1)
  2278. goto <bb 32>; [INV]
  2279. else
  2280. goto <bb 33>; [INV]
  2281. <bb 32> :
  2282. pxQueue_33->cRxLock ={v} 0;
  2283. <bb 33> :
  2284. _11 ={v} pxQueue_33->cTxLock;
  2285. if (_11 == -1)
  2286. goto <bb 34>; [INV]
  2287. else
  2288. goto <bb 35>; [INV]
  2289. <bb 34> :
  2290. pxQueue_33->cTxLock ={v} 0;
  2291. <bb 35> :
  2292. vPortExitCritical ();
  2293. _12 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  2294. if (_12 == 0)
  2295. goto <bb 36>; [INV]
  2296. else
  2297. goto <bb 40>; [INV]
  2298. <bb 36> :
  2299. _13 = prvIsQueueEmpty (pxQueue_33);
  2300. if (_13 != 0)
  2301. goto <bb 37>; [INV]
  2302. else
  2303. goto <bb 39>; [INV]
  2304. <bb 37> :
  2305. _14 = &pxQueue_33->xTasksWaitingToReceive;
  2306. xTicksToWait.15_15 = xTicksToWait;
  2307. vTaskPlaceOnEventList (_14, xTicksToWait.15_15);
  2308. prvUnlockQueue (pxQueue_33);
  2309. _16 = xTaskResumeAll ();
  2310. if (_16 == 0)
  2311. goto <bb 38>; [INV]
  2312. else
  2313. goto <bb 42>; [INV]
  2314. <bb 38> :
  2315. _17 = 3758157060B;
  2316. *_17 ={v} 268435456;
  2317. __asm__ __volatile__("dsb" : : : "memory");
  2318. __asm__ __volatile__("isb");
  2319. goto <bb 42>; [INV]
  2320. <bb 39> :
  2321. prvUnlockQueue (pxQueue_33);
  2322. xTaskResumeAll ();
  2323. goto <bb 42>; [INV]
  2324. <bb 40> :
  2325. prvUnlockQueue (pxQueue_33);
  2326. xTaskResumeAll ();
  2327. _18 = prvIsQueueEmpty (pxQueue_33);
  2328. if (_18 != 0)
  2329. goto <bb 41>; [INV]
  2330. else
  2331. goto <bb 42>; [INV]
  2332. <bb 41> :
  2333. _55 = 0;
  2334. // predicted unlikely by early return (on trees) predictor.
  2335. goto <bb 43>; [INV]
  2336. <bb 42> :
  2337. goto <bb 22>; [INV]
  2338. <bb 43> :
  2339. # _23 = PHI <_74(26), _66(28), _55(41)>
  2340. xTimeOut ={v} {CLOBBER};
  2341. <bb 44> :
  2342. <L47>:
  2343. return _23;
  2344. }
  2345. xQueueGiveFromISR (struct QueueDefinition * xQueue, BaseType_t * const pxHigherPriorityTaskWoken)
  2346. {
  2347. uint32_t ulNewMaskValue;
  2348. uint32_t ulNewBASEPRI;
  2349. uint32_t D.7329;
  2350. uint32_t ulOriginalBASEPRI;
  2351. uint32_t ulNewBASEPRI;
  2352. uint32_t D.7328;
  2353. uint32_t ulNewBASEPRI;
  2354. uint32_t ulNewBASEPRI;
  2355. uint32_t ulNewBASEPRI;
  2356. const int8_t cTxLock;
  2357. const UBaseType_t uxMessagesWaiting;
  2358. struct Queue_t * const pxQueue;
  2359. UBaseType_t uxSavedInterruptStatus;
  2360. BaseType_t xReturn;
  2361. BaseType_t D.6968;
  2362. int iftmp.9;
  2363. long unsigned int _1;
  2364. int8_t * _2;
  2365. struct tskTaskControlBlock * _3;
  2366. long unsigned int _4;
  2367. long unsigned int _5;
  2368. long unsigned int _6;
  2369. struct List_t * _7;
  2370. long int _8;
  2371. unsigned char cTxLock.10_9;
  2372. unsigned char _10;
  2373. signed char _11;
  2374. int iftmp.9_13;
  2375. int iftmp.9_19;
  2376. int iftmp.9_20;
  2377. BaseType_t _32;
  2378. long unsigned int _38;
  2379. <bb 2> :
  2380. pxQueue_17 = xQueue_16(D);
  2381. if (pxQueue_17 == 0B)
  2382. goto <bb 3>; [INV]
  2383. else
  2384. goto <bb 6>; [INV]
  2385. <bb 3> :
  2386. __asm__ __volatile__(" mov %0, %1
  2387. msr basepri, %0
  2388. isb
  2389. dsb
  2390. " : "=r" ulNewBASEPRI_33 : "i" 16 : "memory");
  2391. <bb 4> :
  2392. <bb 5> :
  2393. goto <bb 5>; [INV]
  2394. <bb 6> :
  2395. _1 = pxQueue_17->uxItemSize;
  2396. if (_1 != 0)
  2397. goto <bb 7>; [INV]
  2398. else
  2399. goto <bb 10>; [INV]
  2400. <bb 7> :
  2401. __asm__ __volatile__(" mov %0, %1
  2402. msr basepri, %0
  2403. isb
  2404. dsb
  2405. " : "=r" ulNewBASEPRI_34 : "i" 16 : "memory");
  2406. <bb 8> :
  2407. <bb 9> :
  2408. goto <bb 9>; [INV]
  2409. <bb 10> :
  2410. _2 = pxQueue_17->pcHead;
  2411. if (_2 != 0B)
  2412. goto <bb 12>; [INV]
  2413. else
  2414. goto <bb 11>; [INV]
  2415. <bb 11> :
  2416. _3 = pxQueue_17->u.xSemaphore.xMutexHolder;
  2417. if (_3 == 0B)
  2418. goto <bb 12>; [INV]
  2419. else
  2420. goto <bb 13>; [INV]
  2421. <bb 12> :
  2422. iftmp.9_20 = 1;
  2423. goto <bb 14>; [INV]
  2424. <bb 13> :
  2425. iftmp.9_19 = 0;
  2426. <bb 14> :
  2427. # iftmp.9_13 = PHI <iftmp.9_20(12), iftmp.9_19(13)>
  2428. if (iftmp.9_13 == 0)
  2429. goto <bb 15>; [INV]
  2430. else
  2431. goto <bb 18>; [INV]
  2432. <bb 15> :
  2433. __asm__ __volatile__(" mov %0, %1
  2434. msr basepri, %0
  2435. isb
  2436. dsb
  2437. " : "=r" ulNewBASEPRI_35 : "i" 16 : "memory");
  2438. <bb 16> :
  2439. <bb 17> :
  2440. goto <bb 17>; [INV]
  2441. <bb 18> :
  2442. vPortValidateInterruptPriority ();
  2443. __asm__ __volatile__(" mrs %0, basepri
  2444. mov %1, %2
  2445. msr basepri, %1
  2446. isb
  2447. dsb
  2448. " : "=r" ulOriginalBASEPRI_36, "=r" ulNewBASEPRI_37 : "i" 16 : "memory");
  2449. _38 = ulOriginalBASEPRI_36;
  2450. <bb 19> :
  2451. <L32>:
  2452. _42 = _38;
  2453. <bb 20> :
  2454. uxSavedInterruptStatus_22 = _42;
  2455. uxMessagesWaiting_23 ={v} pxQueue_17->uxMessagesWaiting;
  2456. _4 = pxQueue_17->uxLength;
  2457. if (uxMessagesWaiting_23 < _4)
  2458. goto <bb 21>; [INV]
  2459. else
  2460. goto <bb 32>; [INV]
  2461. <bb 21> :
  2462. cTxLock_25 ={v} pxQueue_17->cTxLock;
  2463. _5 = uxMessagesWaiting_23 + 1;
  2464. pxQueue_17->uxMessagesWaiting ={v} _5;
  2465. if (cTxLock_25 == -1)
  2466. goto <bb 22>; [INV]
  2467. else
  2468. goto <bb 26>; [INV]
  2469. <bb 22> :
  2470. _6 ={v} pxQueue_17->xTasksWaitingToReceive.uxNumberOfItems;
  2471. if (_6 != 0)
  2472. goto <bb 23>; [INV]
  2473. else
  2474. goto <bb 31>; [INV]
  2475. <bb 23> :
  2476. _7 = &pxQueue_17->xTasksWaitingToReceive;
  2477. _8 = xTaskRemoveFromEventList (_7);
  2478. if (_8 != 0)
  2479. goto <bb 24>; [INV]
  2480. else
  2481. goto <bb 31>; [INV]
  2482. <bb 24> :
  2483. if (pxHigherPriorityTaskWoken_29(D) != 0B)
  2484. goto <bb 25>; [INV]
  2485. else
  2486. goto <bb 31>; [INV]
  2487. <bb 25> :
  2488. *pxHigherPriorityTaskWoken_29(D) = 1;
  2489. goto <bb 31>; [INV]
  2490. <bb 26> :
  2491. if (cTxLock_25 == 127)
  2492. goto <bb 27>; [INV]
  2493. else
  2494. goto <bb 30>; [INV]
  2495. <bb 27> :
  2496. __asm__ __volatile__(" mov %0, %1
  2497. msr basepri, %0
  2498. isb
  2499. dsb
  2500. " : "=r" ulNewBASEPRI_39 : "i" 16 : "memory");
  2501. <bb 28> :
  2502. <bb 29> :
  2503. goto <bb 29>; [INV]
  2504. <bb 30> :
  2505. cTxLock.10_9 = (unsigned char) cTxLock_25;
  2506. _10 = cTxLock.10_9 + 1;
  2507. _11 = (signed char) _10;
  2508. pxQueue_17->cTxLock ={v} _11;
  2509. <bb 31> :
  2510. xReturn_31 = 1;
  2511. goto <bb 33>; [INV]
  2512. <bb 32> :
  2513. xReturn_24 = 0;
  2514. <bb 33> :
  2515. # xReturn_12 = PHI <xReturn_31(31), xReturn_24(32)>
  2516. ulNewMaskValue_40 = uxSavedInterruptStatus_22;
  2517. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue_40 : "memory");
  2518. <bb 34> :
  2519. _32 = xReturn_12;
  2520. <bb 35> :
  2521. <L31>:
  2522. return _32;
  2523. }
  2524. xQueueGenericSendFromISR (struct QueueDefinition * xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)
  2525. {
  2526. uint32_t ulNewMaskValue;
  2527. uint32_t ulNewBASEPRI;
  2528. uint32_t D.7342;
  2529. uint32_t ulOriginalBASEPRI;
  2530. uint32_t ulNewBASEPRI;
  2531. uint32_t D.7341;
  2532. uint32_t ulNewBASEPRI;
  2533. uint32_t ulNewBASEPRI;
  2534. uint32_t ulNewBASEPRI;
  2535. const UBaseType_t uxPreviousMessagesWaiting;
  2536. const int8_t cTxLock;
  2537. struct Queue_t * const pxQueue;
  2538. UBaseType_t uxSavedInterruptStatus;
  2539. BaseType_t xReturn;
  2540. BaseType_t D.6936;
  2541. int iftmp.7;
  2542. int iftmp.6;
  2543. long unsigned int _1;
  2544. long unsigned int _2;
  2545. long unsigned int _3;
  2546. long unsigned int _4;
  2547. long unsigned int _5;
  2548. struct List_t * _6;
  2549. long int _7;
  2550. unsigned char cTxLock.8_8;
  2551. unsigned char _9;
  2552. signed char _10;
  2553. int iftmp.6_12;
  2554. int iftmp.7_13;
  2555. int iftmp.6_20;
  2556. int iftmp.6_21;
  2557. int iftmp.7_23;
  2558. int iftmp.7_24;
  2559. BaseType_t _36;
  2560. long unsigned int _42;
  2561. <bb 2> :
  2562. pxQueue_17 = xQueue_16(D);
  2563. if (pxQueue_17 == 0B)
  2564. goto <bb 3>; [INV]
  2565. else
  2566. goto <bb 6>; [INV]
  2567. <bb 3> :
  2568. __asm__ __volatile__(" mov %0, %1
  2569. msr basepri, %0
  2570. isb
  2571. dsb
  2572. " : "=r" ulNewBASEPRI_37 : "i" 16 : "memory");
  2573. <bb 4> :
  2574. <bb 5> :
  2575. goto <bb 5>; [INV]
  2576. <bb 6> :
  2577. if (pvItemToQueue_18(D) != 0B)
  2578. goto <bb 8>; [INV]
  2579. else
  2580. goto <bb 7>; [INV]
  2581. <bb 7> :
  2582. _1 = pxQueue_17->uxItemSize;
  2583. if (_1 == 0)
  2584. goto <bb 8>; [INV]
  2585. else
  2586. goto <bb 9>; [INV]
  2587. <bb 8> :
  2588. iftmp.6_21 = 1;
  2589. goto <bb 10>; [INV]
  2590. <bb 9> :
  2591. iftmp.6_20 = 0;
  2592. <bb 10> :
  2593. # iftmp.6_12 = PHI <iftmp.6_21(8), iftmp.6_20(9)>
  2594. if (iftmp.6_12 == 0)
  2595. goto <bb 11>; [INV]
  2596. else
  2597. goto <bb 14>; [INV]
  2598. <bb 11> :
  2599. __asm__ __volatile__(" mov %0, %1
  2600. msr basepri, %0
  2601. isb
  2602. dsb
  2603. " : "=r" ulNewBASEPRI_38 : "i" 16 : "memory");
  2604. <bb 12> :
  2605. <bb 13> :
  2606. goto <bb 13>; [INV]
  2607. <bb 14> :
  2608. if (xCopyPosition_22(D) != 2)
  2609. goto <bb 16>; [INV]
  2610. else
  2611. goto <bb 15>; [INV]
  2612. <bb 15> :
  2613. _2 = pxQueue_17->uxLength;
  2614. if (_2 == 1)
  2615. goto <bb 16>; [INV]
  2616. else
  2617. goto <bb 17>; [INV]
  2618. <bb 16> :
  2619. iftmp.7_24 = 1;
  2620. goto <bb 18>; [INV]
  2621. <bb 17> :
  2622. iftmp.7_23 = 0;
  2623. <bb 18> :
  2624. # iftmp.7_13 = PHI <iftmp.7_24(16), iftmp.7_23(17)>
  2625. if (iftmp.7_13 == 0)
  2626. goto <bb 19>; [INV]
  2627. else
  2628. goto <bb 22>; [INV]
  2629. <bb 19> :
  2630. __asm__ __volatile__(" mov %0, %1
  2631. msr basepri, %0
  2632. isb
  2633. dsb
  2634. " : "=r" ulNewBASEPRI_39 : "i" 16 : "memory");
  2635. <bb 20> :
  2636. <bb 21> :
  2637. goto <bb 21>; [INV]
  2638. <bb 22> :
  2639. vPortValidateInterruptPriority ();
  2640. __asm__ __volatile__(" mrs %0, basepri
  2641. mov %1, %2
  2642. msr basepri, %1
  2643. isb
  2644. dsb
  2645. " : "=r" ulOriginalBASEPRI_40, "=r" ulNewBASEPRI_41 : "i" 16 : "memory");
  2646. _42 = ulOriginalBASEPRI_40;
  2647. <bb 23> :
  2648. <L37>:
  2649. _46 = _42;
  2650. <bb 24> :
  2651. uxSavedInterruptStatus_26 = _46;
  2652. _3 ={v} pxQueue_17->uxMessagesWaiting;
  2653. _4 = pxQueue_17->uxLength;
  2654. if (_3 < _4)
  2655. goto <bb 26>; [INV]
  2656. else
  2657. goto <bb 25>; [INV]
  2658. <bb 25> :
  2659. if (xCopyPosition_22(D) == 2)
  2660. goto <bb 26>; [INV]
  2661. else
  2662. goto <bb 37>; [INV]
  2663. <bb 26> :
  2664. cTxLock_28 ={v} pxQueue_17->cTxLock;
  2665. uxPreviousMessagesWaiting_29 ={v} pxQueue_17->uxMessagesWaiting;
  2666. prvCopyDataToQueue (pxQueue_17, pvItemToQueue_18(D), xCopyPosition_22(D));
  2667. if (cTxLock_28 == -1)
  2668. goto <bb 27>; [INV]
  2669. else
  2670. goto <bb 31>; [INV]
  2671. <bb 27> :
  2672. _5 ={v} pxQueue_17->xTasksWaitingToReceive.uxNumberOfItems;
  2673. if (_5 != 0)
  2674. goto <bb 28>; [INV]
  2675. else
  2676. goto <bb 36>; [INV]
  2677. <bb 28> :
  2678. _6 = &pxQueue_17->xTasksWaitingToReceive;
  2679. _7 = xTaskRemoveFromEventList (_6);
  2680. if (_7 != 0)
  2681. goto <bb 29>; [INV]
  2682. else
  2683. goto <bb 36>; [INV]
  2684. <bb 29> :
  2685. if (pxHigherPriorityTaskWoken_33(D) != 0B)
  2686. goto <bb 30>; [INV]
  2687. else
  2688. goto <bb 36>; [INV]
  2689. <bb 30> :
  2690. *pxHigherPriorityTaskWoken_33(D) = 1;
  2691. goto <bb 36>; [INV]
  2692. <bb 31> :
  2693. if (cTxLock_28 == 127)
  2694. goto <bb 32>; [INV]
  2695. else
  2696. goto <bb 35>; [INV]
  2697. <bb 32> :
  2698. __asm__ __volatile__(" mov %0, %1
  2699. msr basepri, %0
  2700. isb
  2701. dsb
  2702. " : "=r" ulNewBASEPRI_43 : "i" 16 : "memory");
  2703. <bb 33> :
  2704. <bb 34> :
  2705. goto <bb 34>; [INV]
  2706. <bb 35> :
  2707. cTxLock.8_8 = (unsigned char) cTxLock_28;
  2708. _9 = cTxLock.8_8 + 1;
  2709. _10 = (signed char) _9;
  2710. pxQueue_17->cTxLock ={v} _10;
  2711. <bb 36> :
  2712. xReturn_35 = 1;
  2713. goto <bb 38>; [INV]
  2714. <bb 37> :
  2715. xReturn_27 = 0;
  2716. <bb 38> :
  2717. # xReturn_11 = PHI <xReturn_35(36), xReturn_27(37)>
  2718. ulNewMaskValue_44 = uxSavedInterruptStatus_26;
  2719. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue_44 : "memory");
  2720. <bb 39> :
  2721. _36 = xReturn_11;
  2722. <bb 40> :
  2723. <L36>:
  2724. return _36;
  2725. }
  2726. xQueueGenericSend (struct QueueDefinition * xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)
  2727. {
  2728. uint32_t ulNewBASEPRI;
  2729. uint32_t ulNewBASEPRI;
  2730. uint32_t ulNewBASEPRI;
  2731. uint32_t ulNewBASEPRI;
  2732. struct Queue_t * const pxQueue;
  2733. struct TimeOut_t xTimeOut;
  2734. BaseType_t xYieldRequired;
  2735. BaseType_t xEntryTimeSet;
  2736. BaseType_t D.6882;
  2737. int iftmp.2;
  2738. int iftmp.1;
  2739. int iftmp.0;
  2740. long unsigned int _1;
  2741. long unsigned int _2;
  2742. long int _3;
  2743. long unsigned int xTicksToWait.3_4;
  2744. long unsigned int _5;
  2745. long unsigned int _6;
  2746. long unsigned int _7;
  2747. struct List_t * _8;
  2748. long int _9;
  2749. volatile uint32_t * _10;
  2750. volatile uint32_t * _11;
  2751. long unsigned int xTicksToWait.4_12;
  2752. signed char _13;
  2753. signed char _14;
  2754. long int _15;
  2755. long int _16;
  2756. struct List_t * _17;
  2757. long unsigned int xTicksToWait.5_18;
  2758. long int _19;
  2759. volatile uint32_t * _20;
  2760. int iftmp.0_23;
  2761. int iftmp.1_24;
  2762. int iftmp.2_25;
  2763. BaseType_t _26;
  2764. int iftmp.0_39;
  2765. int iftmp.0_40;
  2766. int iftmp.1_42;
  2767. int iftmp.1_43;
  2768. int iftmp.2_45;
  2769. int iftmp.2_46;
  2770. BaseType_t _59;
  2771. BaseType_t _70;
  2772. BaseType_t _81;
  2773. <bb 2> :
  2774. xEntryTimeSet_34 = 0;
  2775. pxQueue_36 = xQueue_35(D);
  2776. if (pxQueue_36 == 0B)
  2777. goto <bb 3>; [INV]
  2778. else
  2779. goto <bb 6>; [INV]
  2780. <bb 3> :
  2781. __asm__ __volatile__(" mov %0, %1
  2782. msr basepri, %0
  2783. isb
  2784. dsb
  2785. " : "=r" ulNewBASEPRI_83 : "i" 16 : "memory");
  2786. <bb 4> :
  2787. <bb 5> :
  2788. goto <bb 5>; [INV]
  2789. <bb 6> :
  2790. if (pvItemToQueue_37(D) != 0B)
  2791. goto <bb 8>; [INV]
  2792. else
  2793. goto <bb 7>; [INV]
  2794. <bb 7> :
  2795. _1 = pxQueue_36->uxItemSize;
  2796. if (_1 == 0)
  2797. goto <bb 8>; [INV]
  2798. else
  2799. goto <bb 9>; [INV]
  2800. <bb 8> :
  2801. iftmp.0_40 = 1;
  2802. goto <bb 10>; [INV]
  2803. <bb 9> :
  2804. iftmp.0_39 = 0;
  2805. <bb 10> :
  2806. # iftmp.0_23 = PHI <iftmp.0_40(8), iftmp.0_39(9)>
  2807. if (iftmp.0_23 == 0)
  2808. goto <bb 11>; [INV]
  2809. else
  2810. goto <bb 14>; [INV]
  2811. <bb 11> :
  2812. __asm__ __volatile__(" mov %0, %1
  2813. msr basepri, %0
  2814. isb
  2815. dsb
  2816. " : "=r" ulNewBASEPRI_84 : "i" 16 : "memory");
  2817. <bb 12> :
  2818. <bb 13> :
  2819. goto <bb 13>; [INV]
  2820. <bb 14> :
  2821. if (xCopyPosition_41(D) != 2)
  2822. goto <bb 16>; [INV]
  2823. else
  2824. goto <bb 15>; [INV]
  2825. <bb 15> :
  2826. _2 = pxQueue_36->uxLength;
  2827. if (_2 == 1)
  2828. goto <bb 16>; [INV]
  2829. else
  2830. goto <bb 17>; [INV]
  2831. <bb 16> :
  2832. iftmp.1_43 = 1;
  2833. goto <bb 18>; [INV]
  2834. <bb 17> :
  2835. iftmp.1_42 = 0;
  2836. <bb 18> :
  2837. # iftmp.1_24 = PHI <iftmp.1_43(16), iftmp.1_42(17)>
  2838. if (iftmp.1_24 == 0)
  2839. goto <bb 19>; [INV]
  2840. else
  2841. goto <bb 22>; [INV]
  2842. <bb 19> :
  2843. __asm__ __volatile__(" mov %0, %1
  2844. msr basepri, %0
  2845. isb
  2846. dsb
  2847. " : "=r" ulNewBASEPRI_85 : "i" 16 : "memory");
  2848. <bb 20> :
  2849. <bb 21> :
  2850. goto <bb 21>; [INV]
  2851. <bb 22> :
  2852. _3 = xTaskGetSchedulerState ();
  2853. if (_3 != 0)
  2854. goto <bb 24>; [INV]
  2855. else
  2856. goto <bb 23>; [INV]
  2857. <bb 23> :
  2858. xTicksToWait.3_4 = xTicksToWait;
  2859. if (xTicksToWait.3_4 == 0)
  2860. goto <bb 24>; [INV]
  2861. else
  2862. goto <bb 25>; [INV]
  2863. <bb 24> :
  2864. iftmp.2_46 = 1;
  2865. goto <bb 26>; [INV]
  2866. <bb 25> :
  2867. iftmp.2_45 = 0;
  2868. <bb 26> :
  2869. # iftmp.2_25 = PHI <iftmp.2_46(24), iftmp.2_45(25)>
  2870. if (iftmp.2_25 == 0)
  2871. goto <bb 27>; [INV]
  2872. else
  2873. goto <bb 30>; [INV]
  2874. <bb 27> :
  2875. __asm__ __volatile__(" mov %0, %1
  2876. msr basepri, %0
  2877. isb
  2878. dsb
  2879. " : "=r" ulNewBASEPRI_86 : "i" 16 : "memory");
  2880. <bb 28> :
  2881. <bb 29> :
  2882. goto <bb 29>; [INV]
  2883. <bb 30> :
  2884. # xEntryTimeSet_21 = PHI <xEntryTimeSet_34(26), xEntryTimeSet_22(52)>
  2885. vPortEnterCritical ();
  2886. _5 ={v} pxQueue_36->uxMessagesWaiting;
  2887. _6 = pxQueue_36->uxLength;
  2888. if (_5 < _6)
  2889. goto <bb 32>; [INV]
  2890. else
  2891. goto <bb 31>; [INV]
  2892. <bb 31> :
  2893. if (xCopyPosition_41(D) == 2)
  2894. goto <bb 32>; [INV]
  2895. else
  2896. goto <bb 38>; [INV]
  2897. <bb 32> :
  2898. xYieldRequired_72 = prvCopyDataToQueue (pxQueue_36, pvItemToQueue_37(D), xCopyPosition_41(D));
  2899. _7 ={v} pxQueue_36->xTasksWaitingToReceive.uxNumberOfItems;
  2900. if (_7 != 0)
  2901. goto <bb 33>; [INV]
  2902. else
  2903. goto <bb 35>; [INV]
  2904. <bb 33> :
  2905. _8 = &pxQueue_36->xTasksWaitingToReceive;
  2906. _9 = xTaskRemoveFromEventList (_8);
  2907. if (_9 != 0)
  2908. goto <bb 34>; [INV]
  2909. else
  2910. goto <bb 37>; [INV]
  2911. <bb 34> :
  2912. _10 = 3758157060B;
  2913. *_10 ={v} 268435456;
  2914. __asm__ __volatile__("dsb" : : : "memory");
  2915. __asm__ __volatile__("isb");
  2916. goto <bb 37>; [INV]
  2917. <bb 35> :
  2918. if (xYieldRequired_72 != 0)
  2919. goto <bb 36>; [INV]
  2920. else
  2921. goto <bb 37>; [INV]
  2922. <bb 36> :
  2923. _11 = 3758157060B;
  2924. *_11 ={v} 268435456;
  2925. __asm__ __volatile__("dsb" : : : "memory");
  2926. __asm__ __volatile__("isb");
  2927. <bb 37> :
  2928. vPortExitCritical ();
  2929. _81 = 1;
  2930. // predicted unlikely by early return (on trees) predictor.
  2931. goto <bb 53>; [INV]
  2932. <bb 38> :
  2933. xTicksToWait.4_12 = xTicksToWait;
  2934. if (xTicksToWait.4_12 == 0)
  2935. goto <bb 39>; [INV]
  2936. else
  2937. goto <bb 40>; [INV]
  2938. <bb 39> :
  2939. vPortExitCritical ();
  2940. _70 = 0;
  2941. // predicted unlikely by early return (on trees) predictor.
  2942. goto <bb 53>; [INV]
  2943. <bb 40> :
  2944. if (xEntryTimeSet_21 == 0)
  2945. goto <bb 41>; [INV]
  2946. else
  2947. goto <bb 42>; [INV]
  2948. <bb 41> :
  2949. vTaskInternalSetTimeOutState (&xTimeOut);
  2950. xEntryTimeSet_49 = 1;
  2951. <bb 42> :
  2952. # xEntryTimeSet_22 = PHI <xEntryTimeSet_21(40), xEntryTimeSet_49(41)>
  2953. vPortExitCritical ();
  2954. vTaskSuspendAll ();
  2955. vPortEnterCritical ();
  2956. _13 ={v} pxQueue_36->cRxLock;
  2957. if (_13 == -1)
  2958. goto <bb 43>; [INV]
  2959. else
  2960. goto <bb 44>; [INV]
  2961. <bb 43> :
  2962. pxQueue_36->cRxLock ={v} 0;
  2963. <bb 44> :
  2964. _14 ={v} pxQueue_36->cTxLock;
  2965. if (_14 == -1)
  2966. goto <bb 45>; [INV]
  2967. else
  2968. goto <bb 46>; [INV]
  2969. <bb 45> :
  2970. pxQueue_36->cTxLock ={v} 0;
  2971. <bb 46> :
  2972. vPortExitCritical ();
  2973. _15 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  2974. if (_15 == 0)
  2975. goto <bb 47>; [INV]
  2976. else
  2977. goto <bb 51>; [INV]
  2978. <bb 47> :
  2979. _16 = prvIsQueueFull (pxQueue_36);
  2980. if (_16 != 0)
  2981. goto <bb 48>; [INV]
  2982. else
  2983. goto <bb 50>; [INV]
  2984. <bb 48> :
  2985. _17 = &pxQueue_36->xTasksWaitingToSend;
  2986. xTicksToWait.5_18 = xTicksToWait;
  2987. vTaskPlaceOnEventList (_17, xTicksToWait.5_18);
  2988. prvUnlockQueue (pxQueue_36);
  2989. _19 = xTaskResumeAll ();
  2990. if (_19 == 0)
  2991. goto <bb 49>; [INV]
  2992. else
  2993. goto <bb 52>; [INV]
  2994. <bb 49> :
  2995. _20 = 3758157060B;
  2996. *_20 ={v} 268435456;
  2997. __asm__ __volatile__("dsb" : : : "memory");
  2998. __asm__ __volatile__("isb");
  2999. goto <bb 52>; [INV]
  3000. <bb 50> :
  3001. prvUnlockQueue (pxQueue_36);
  3002. xTaskResumeAll ();
  3003. goto <bb 52>; [INV]
  3004. <bb 51> :
  3005. prvUnlockQueue (pxQueue_36);
  3006. xTaskResumeAll ();
  3007. _59 = 0;
  3008. // predicted unlikely by early return (on trees) predictor.
  3009. goto <bb 53>; [INV]
  3010. <bb 52> :
  3011. goto <bb 30>; [INV]
  3012. <bb 53> :
  3013. # _26 = PHI <_81(37), _70(39), _59(51)>
  3014. xTimeOut ={v} {CLOBBER};
  3015. <bb 54> :
  3016. <L55>:
  3017. return _26;
  3018. }
  3019. xQueueCreateCountingSemaphore (const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount)
  3020. {
  3021. uint32_t ulNewBASEPRI;
  3022. struct QueueDefinition * xHandle;
  3023. struct QueueDefinition * D.6845;
  3024. struct QueueDefinition * _11;
  3025. <bb 2> :
  3026. xHandle_4 = 0B;
  3027. if (uxMaxCount_5(D) != 0)
  3028. goto <bb 3>; [INV]
  3029. else
  3030. goto <bb 7>; [INV]
  3031. <bb 3> :
  3032. if (uxInitialCount_6(D) <= uxMaxCount_5(D))
  3033. goto <bb 4>; [INV]
  3034. else
  3035. goto <bb 7>; [INV]
  3036. <bb 4> :
  3037. xHandle_9 = xQueueGenericCreate (uxMaxCount_5(D), 0, 2);
  3038. if (xHandle_9 != 0B)
  3039. goto <bb 5>; [INV]
  3040. else
  3041. goto <bb 6>; [INV]
  3042. <bb 5> :
  3043. MEM[(struct Queue_t *)xHandle_9].uxMessagesWaiting ={v} uxInitialCount_6(D);
  3044. <bb 6> :
  3045. goto <bb 11>; [INV]
  3046. <bb 7> :
  3047. if (xHandle_4 == 0B)
  3048. goto <bb 8>; [INV]
  3049. else
  3050. goto <bb 11>; [INV]
  3051. <bb 8> :
  3052. __asm__ __volatile__(" mov %0, %1
  3053. msr basepri, %0
  3054. isb
  3055. dsb
  3056. " : "=r" ulNewBASEPRI_12 : "i" 16 : "memory");
  3057. <bb 9> :
  3058. <bb 10> :
  3059. goto <bb 10>; [INV]
  3060. <bb 11> :
  3061. # xHandle_1 = PHI <xHandle_9(6), xHandle_4(7)>
  3062. _11 = xHandle_1;
  3063. <bb 12> :
  3064. <L10>:
  3065. return _11;
  3066. }
  3067. xQueueTakeMutexRecursive (struct QueueDefinition * xMutex, TickType_t xTicksToWait)
  3068. {
  3069. uint32_t ulNewBASEPRI;
  3070. struct Queue_t * const pxMutex;
  3071. BaseType_t xReturn;
  3072. BaseType_t D.6834;
  3073. struct tskTaskControlBlock * _1;
  3074. struct tskTaskControlBlock * _2;
  3075. long unsigned int _3;
  3076. long unsigned int _4;
  3077. long unsigned int _5;
  3078. long unsigned int _6;
  3079. BaseType_t _19;
  3080. <bb 2> :
  3081. pxMutex_10 = xMutex_9(D);
  3082. if (pxMutex_10 == 0B)
  3083. goto <bb 3>; [INV]
  3084. else
  3085. goto <bb 6>; [INV]
  3086. <bb 3> :
  3087. __asm__ __volatile__(" mov %0, %1
  3088. msr basepri, %0
  3089. isb
  3090. dsb
  3091. " : "=r" ulNewBASEPRI_20 : "i" 16 : "memory");
  3092. <bb 4> :
  3093. <bb 5> :
  3094. goto <bb 5>; [INV]
  3095. <bb 6> :
  3096. _1 = pxMutex_10->u.xSemaphore.xMutexHolder;
  3097. _2 = xTaskGetCurrentTaskHandle ();
  3098. if (_1 == _2)
  3099. goto <bb 7>; [INV]
  3100. else
  3101. goto <bb 8>; [INV]
  3102. <bb 7> :
  3103. _3 = pxMutex_10->u.xSemaphore.uxRecursiveCallCount;
  3104. _4 = _3 + 1;
  3105. pxMutex_10->u.xSemaphore.uxRecursiveCallCount = _4;
  3106. xReturn_18 = 1;
  3107. goto <bb 10>; [INV]
  3108. <bb 8> :
  3109. xReturn_15 = xQueueSemaphoreTake (pxMutex_10, xTicksToWait_13(D));
  3110. if (xReturn_15 != 0)
  3111. goto <bb 9>; [INV]
  3112. else
  3113. goto <bb 10>; [INV]
  3114. <bb 9> :
  3115. _5 = pxMutex_10->u.xSemaphore.uxRecursiveCallCount;
  3116. _6 = _5 + 1;
  3117. pxMutex_10->u.xSemaphore.uxRecursiveCallCount = _6;
  3118. <bb 10> :
  3119. # xReturn_7 = PHI <xReturn_18(7), xReturn_15(8), xReturn_15(9)>
  3120. _19 = xReturn_7;
  3121. <bb 11> :
  3122. <L9>:
  3123. return _19;
  3124. }
  3125. xQueueGiveMutexRecursive (struct QueueDefinition * xMutex)
  3126. {
  3127. uint32_t ulNewBASEPRI;
  3128. struct Queue_t * const pxMutex;
  3129. BaseType_t xReturn;
  3130. BaseType_t D.6824;
  3131. struct tskTaskControlBlock * _1;
  3132. struct tskTaskControlBlock * _2;
  3133. long unsigned int _3;
  3134. long unsigned int _4;
  3135. long unsigned int _5;
  3136. BaseType_t _17;
  3137. <bb 2> :
  3138. pxMutex_10 = xMutex_9(D);
  3139. if (pxMutex_10 == 0B)
  3140. goto <bb 3>; [INV]
  3141. else
  3142. goto <bb 6>; [INV]
  3143. <bb 3> :
  3144. __asm__ __volatile__(" mov %0, %1
  3145. msr basepri, %0
  3146. isb
  3147. dsb
  3148. " : "=r" ulNewBASEPRI_18 : "i" 16 : "memory");
  3149. <bb 4> :
  3150. <bb 5> :
  3151. goto <bb 5>; [INV]
  3152. <bb 6> :
  3153. _1 = pxMutex_10->u.xSemaphore.xMutexHolder;
  3154. _2 = xTaskGetCurrentTaskHandle ();
  3155. if (_1 == _2)
  3156. goto <bb 7>; [INV]
  3157. else
  3158. goto <bb 10>; [INV]
  3159. <bb 7> :
  3160. _3 = pxMutex_10->u.xSemaphore.uxRecursiveCallCount;
  3161. _4 = _3 + 4294967295;
  3162. pxMutex_10->u.xSemaphore.uxRecursiveCallCount = _4;
  3163. _5 = pxMutex_10->u.xSemaphore.uxRecursiveCallCount;
  3164. if (_5 == 0)
  3165. goto <bb 8>; [INV]
  3166. else
  3167. goto <bb 9>; [INV]
  3168. <bb 8> :
  3169. xQueueGenericSend (pxMutex_10, 0B, 0, 0);
  3170. <bb 9> :
  3171. xReturn_16 = 1;
  3172. goto <bb 11>; [INV]
  3173. <bb 10> :
  3174. xReturn_13 = 0;
  3175. <bb 11> :
  3176. # xReturn_6 = PHI <xReturn_16(9), xReturn_13(10)>
  3177. _17 = xReturn_6;
  3178. <bb 12> :
  3179. <L9>:
  3180. return _17;
  3181. }
  3182. xQueueGetMutexHolderFromISR (struct QueueDefinition * xSemaphore)
  3183. {
  3184. uint32_t ulNewBASEPRI;
  3185. struct tskTaskControlBlock * pxReturn;
  3186. struct tskTaskControlBlock * D.6814;
  3187. int8_t * _1;
  3188. struct tskTaskControlBlock * _7;
  3189. <bb 2> :
  3190. if (xSemaphore_3(D) == 0B)
  3191. goto <bb 3>; [INV]
  3192. else
  3193. goto <bb 6>; [INV]
  3194. <bb 3> :
  3195. __asm__ __volatile__(" mov %0, %1
  3196. msr basepri, %0
  3197. isb
  3198. dsb
  3199. " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory");
  3200. <bb 4> :
  3201. <bb 5> :
  3202. goto <bb 5>; [INV]
  3203. <bb 6> :
  3204. _1 = MEM[(struct Queue_t *)xSemaphore_3(D)].pcHead;
  3205. if (_1 == 0B)
  3206. goto <bb 7>; [INV]
  3207. else
  3208. goto <bb 8>; [INV]
  3209. <bb 7> :
  3210. pxReturn_6 = MEM[(struct Queue_t *)xSemaphore_3(D)].u.xSemaphore.xMutexHolder;
  3211. goto <bb 9>; [INV]
  3212. <bb 8> :
  3213. pxReturn_5 = 0B;
  3214. <bb 9> :
  3215. # pxReturn_2 = PHI <pxReturn_6(7), pxReturn_5(8)>
  3216. _7 = pxReturn_2;
  3217. <bb 10> :
  3218. <L6>:
  3219. return _7;
  3220. }
  3221. xQueueGetMutexHolder (struct QueueDefinition * xSemaphore)
  3222. {
  3223. uint32_t ulNewBASEPRI;
  3224. struct Queue_t * const pxSemaphore;
  3225. struct tskTaskControlBlock * pxReturn;
  3226. struct tskTaskControlBlock * D.6807;
  3227. int8_t * _1;
  3228. struct tskTaskControlBlock * _10;
  3229. <bb 2> :
  3230. pxSemaphore_4 = xSemaphore_3(D);
  3231. if (xSemaphore_3(D) == 0B)
  3232. goto <bb 3>; [INV]
  3233. else
  3234. goto <bb 6>; [INV]
  3235. <bb 3> :
  3236. __asm__ __volatile__(" mov %0, %1
  3237. msr basepri, %0
  3238. isb
  3239. dsb
  3240. " : "=r" ulNewBASEPRI_11 : "i" 16 : "memory");
  3241. <bb 4> :
  3242. <bb 5> :
  3243. goto <bb 5>; [INV]
  3244. <bb 6> :
  3245. vPortEnterCritical ();
  3246. _1 = pxSemaphore_4->pcHead;
  3247. if (_1 == 0B)
  3248. goto <bb 7>; [INV]
  3249. else
  3250. goto <bb 8>; [INV]
  3251. <bb 7> :
  3252. pxReturn_8 = pxSemaphore_4->u.xSemaphore.xMutexHolder;
  3253. goto <bb 9>; [INV]
  3254. <bb 8> :
  3255. pxReturn_7 = 0B;
  3256. <bb 9> :
  3257. # pxReturn_2 = PHI <pxReturn_8(7), pxReturn_7(8)>
  3258. vPortExitCritical ();
  3259. _10 = pxReturn_2;
  3260. <bb 10> :
  3261. <L6>:
  3262. return _10;
  3263. }
  3264. xQueueCreateMutex (const uint8_t ucQueueType)
  3265. {
  3266. const UBaseType_t uxMutexSize;
  3267. const UBaseType_t uxMutexLength;
  3268. struct QueueDefinition * xNewQueue;
  3269. struct QueueDefinition * D.6800;
  3270. struct QueueDefinition * _8;
  3271. <bb 2> :
  3272. uxMutexLength_1 = 1;
  3273. uxMutexSize_2 = 0;
  3274. xNewQueue_6 = xQueueGenericCreate (uxMutexLength_1, uxMutexSize_2, ucQueueType_4(D));
  3275. prvInitialiseMutex (xNewQueue_6);
  3276. _8 = xNewQueue_6;
  3277. <bb 3> :
  3278. <L0>:
  3279. return _8;
  3280. }
  3281. prvInitialiseMutex (struct Queue_t * pxNewQueue)
  3282. {
  3283. <bb 2> :
  3284. if (pxNewQueue_2(D) != 0B)
  3285. goto <bb 3>; [INV]
  3286. else
  3287. goto <bb 4>; [INV]
  3288. <bb 3> :
  3289. pxNewQueue_2(D)->u.xSemaphore.xMutexHolder = 0B;
  3290. pxNewQueue_2(D)->pcHead = 0B;
  3291. pxNewQueue_2(D)->u.xSemaphore.uxRecursiveCallCount = 0;
  3292. xQueueGenericSend (pxNewQueue_2(D), 0B, 0, 0);
  3293. <bb 4> :
  3294. return;
  3295. }
  3296. prvInitialiseNewQueue (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t * pucQueueStorage, const uint8_t ucQueueType, struct Queue_t * pxNewQueue)
  3297. {
  3298. <bb 2> :
  3299. if (uxItemSize_2(D) == 0)
  3300. goto <bb 3>; [INV]
  3301. else
  3302. goto <bb 4>; [INV]
  3303. <bb 3> :
  3304. pxNewQueue_4(D)->pcHead = pxNewQueue_4(D);
  3305. goto <bb 5>; [INV]
  3306. <bb 4> :
  3307. pxNewQueue_4(D)->pcHead = pucQueueStorage_5(D);
  3308. <bb 5> :
  3309. pxNewQueue_4(D)->uxLength = uxQueueLength_8(D);
  3310. pxNewQueue_4(D)->uxItemSize = uxItemSize_2(D);
  3311. xQueueGenericReset (pxNewQueue_4(D), 1);
  3312. pxNewQueue_4(D)->ucQueueType = ucQueueType_12(D);
  3313. return;
  3314. }
  3315. xQueueGenericCreate (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType)
  3316. {
  3317. uint32_t ulNewBASEPRI;
  3318. uint8_t * pucQueueStorage;
  3319. size_t xQueueSizeInBytes;
  3320. struct Queue_t * pxNewQueue;
  3321. struct QueueDefinition * D.6792;
  3322. __complex__ long unsigned int _1;
  3323. long unsigned int _2;
  3324. long unsigned int _3;
  3325. unsigned int _4;
  3326. struct QueueDefinition * _19;
  3327. <bb 2> :
  3328. pxNewQueue_8 = 0B;
  3329. if (uxQueueLength_9(D) != 0)
  3330. goto <bb 3>; [INV]
  3331. else
  3332. goto <bb 8>; [INV]
  3333. <bb 3> :
  3334. _1 = .MUL_OVERFLOW (uxItemSize_10(D), uxQueueLength_9(D));
  3335. _2 = IMAGPART_EXPR <_1>;
  3336. if (_2 == 0)
  3337. goto <bb 4>; [INV]
  3338. else
  3339. goto <bb 8>; [INV]
  3340. <bb 4> :
  3341. _3 = uxQueueLength_9(D) * uxItemSize_10(D);
  3342. if (_3 <= 4294967215)
  3343. goto <bb 5>; [INV]
  3344. else
  3345. goto <bb 8>; [INV]
  3346. <bb 5> :
  3347. xQueueSizeInBytes_11 = uxQueueLength_9(D) * uxItemSize_10(D);
  3348. _4 = xQueueSizeInBytes_11 + 80;
  3349. pxNewQueue_14 = pvPortMalloc (_4);
  3350. if (pxNewQueue_14 != 0B)
  3351. goto <bb 6>; [INV]
  3352. else
  3353. goto <bb 7>; [INV]
  3354. <bb 6> :
  3355. pucQueueStorage_15 = pxNewQueue_14;
  3356. pucQueueStorage_16 = pucQueueStorage_15 + 80;
  3357. prvInitialiseNewQueue (uxQueueLength_9(D), uxItemSize_10(D), pucQueueStorage_16, ucQueueType_17(D), pxNewQueue_14);
  3358. <bb 7> :
  3359. goto <bb 12>; [INV]
  3360. <bb 8> :
  3361. if (pxNewQueue_8 == 0B)
  3362. goto <bb 9>; [INV]
  3363. else
  3364. goto <bb 12>; [INV]
  3365. <bb 9> :
  3366. __asm__ __volatile__(" mov %0, %1
  3367. msr basepri, %0
  3368. isb
  3369. dsb
  3370. " : "=r" ulNewBASEPRI_20 : "i" 16 : "memory");
  3371. <bb 10> :
  3372. <bb 11> :
  3373. goto <bb 11>; [INV]
  3374. <bb 12> :
  3375. # pxNewQueue_5 = PHI <pxNewQueue_14(7), pxNewQueue_8(8)>
  3376. _19 = pxNewQueue_5;
  3377. <bb 13> :
  3378. <L11>:
  3379. return _19;
  3380. }
  3381. xQueueGenericReset (struct QueueDefinition * xQueue, BaseType_t xNewQueue)
  3382. {
  3383. uint32_t ulNewBASEPRI;
  3384. uint32_t ulNewBASEPRI;
  3385. struct Queue_t * const pxQueue;
  3386. BaseType_t xReturn;
  3387. BaseType_t D.6780;
  3388. long unsigned int _1;
  3389. __complex__ long unsigned int _2;
  3390. long unsigned int _3;
  3391. long unsigned int _4;
  3392. long unsigned int _5;
  3393. int8_t * _6;
  3394. long unsigned int _7;
  3395. long unsigned int _8;
  3396. long unsigned int _9;
  3397. int8_t * _10;
  3398. int8_t * _11;
  3399. int8_t * _12;
  3400. long unsigned int _13;
  3401. long unsigned int _14;
  3402. long unsigned int _15;
  3403. long unsigned int _16;
  3404. int8_t * _17;
  3405. long unsigned int _18;
  3406. struct List_t * _19;
  3407. long int _20;
  3408. volatile uint32_t * _21;
  3409. struct List_t * _22;
  3410. struct List_t * _23;
  3411. BaseType_t _47;
  3412. <bb 2> :
  3413. xReturn_27 = 1;
  3414. pxQueue_29 = xQueue_28(D);
  3415. if (pxQueue_29 == 0B)
  3416. goto <bb 3>; [INV]
  3417. else
  3418. goto <bb 6>; [INV]
  3419. <bb 3> :
  3420. __asm__ __volatile__(" mov %0, %1
  3421. msr basepri, %0
  3422. isb
  3423. dsb
  3424. " : "=r" ulNewBASEPRI_48 : "i" 16 : "memory");
  3425. <bb 4> :
  3426. <bb 5> :
  3427. goto <bb 5>; [INV]
  3428. <bb 6> :
  3429. if (pxQueue_29 != 0B)
  3430. goto <bb 7>; [INV]
  3431. else
  3432. goto <bb 15>; [INV]
  3433. <bb 7> :
  3434. _1 = pxQueue_29->uxLength;
  3435. if (_1 != 0)
  3436. goto <bb 8>; [INV]
  3437. else
  3438. goto <bb 15>; [INV]
  3439. <bb 8> :
  3440. _3 = pxQueue_29->uxItemSize;
  3441. _4 = pxQueue_29->uxLength;
  3442. _2 = .MUL_OVERFLOW (_3, _4);
  3443. _5 = IMAGPART_EXPR <_2>;
  3444. if (_5 == 0)
  3445. goto <bb 9>; [INV]
  3446. else
  3447. goto <bb 15>; [INV]
  3448. <bb 9> :
  3449. vPortEnterCritical ();
  3450. _6 = pxQueue_29->pcHead;
  3451. _7 = pxQueue_29->uxLength;
  3452. _8 = pxQueue_29->uxItemSize;
  3453. _9 = _7 * _8;
  3454. _10 = _6 + _9;
  3455. pxQueue_29->u.xQueue.pcTail = _10;
  3456. pxQueue_29->uxMessagesWaiting ={v} 0;
  3457. _11 = pxQueue_29->pcHead;
  3458. pxQueue_29->pcWriteTo = _11;
  3459. _12 = pxQueue_29->pcHead;
  3460. _13 = pxQueue_29->uxLength;
  3461. _14 = _13 + 4294967295;
  3462. _15 = pxQueue_29->uxItemSize;
  3463. _16 = _14 * _15;
  3464. _17 = _12 + _16;
  3465. pxQueue_29->u.xQueue.pcReadFrom = _17;
  3466. pxQueue_29->cRxLock ={v} -1;
  3467. pxQueue_29->cTxLock ={v} -1;
  3468. if (xNewQueue_38(D) == 0)
  3469. goto <bb 10>; [INV]
  3470. else
  3471. goto <bb 13>; [INV]
  3472. <bb 10> :
  3473. _18 ={v} pxQueue_29->xTasksWaitingToSend.uxNumberOfItems;
  3474. if (_18 != 0)
  3475. goto <bb 11>; [INV]
  3476. else
  3477. goto <bb 14>; [INV]
  3478. <bb 11> :
  3479. _19 = &pxQueue_29->xTasksWaitingToSend;
  3480. _20 = xTaskRemoveFromEventList (_19);
  3481. if (_20 != 0)
  3482. goto <bb 12>; [INV]
  3483. else
  3484. goto <bb 14>; [INV]
  3485. <bb 12> :
  3486. _21 = 3758157060B;
  3487. *_21 ={v} 268435456;
  3488. __asm__ __volatile__("dsb" : : : "memory");
  3489. __asm__ __volatile__("isb");
  3490. goto <bb 14>; [INV]
  3491. <bb 13> :
  3492. _22 = &pxQueue_29->xTasksWaitingToSend;
  3493. vListInitialise (_22);
  3494. _23 = &pxQueue_29->xTasksWaitingToReceive;
  3495. vListInitialise (_23);
  3496. <bb 14> :
  3497. vPortExitCritical ();
  3498. goto <bb 16>; [INV]
  3499. <bb 15> :
  3500. xReturn_46 = 0;
  3501. <bb 16> :
  3502. # xReturn_24 = PHI <xReturn_27(14), xReturn_46(15)>
  3503. if (xReturn_24 == 0)
  3504. goto <bb 17>; [INV]
  3505. else
  3506. goto <bb 20>; [INV]
  3507. <bb 17> :
  3508. __asm__ __volatile__(" mov %0, %1
  3509. msr basepri, %0
  3510. isb
  3511. dsb
  3512. " : "=r" ulNewBASEPRI_49 : "i" 16 : "memory");
  3513. <bb 18> :
  3514. <bb 19> :
  3515. goto <bb 19>; [INV]
  3516. <bb 20> :
  3517. _47 = xReturn_24;
  3518. <bb 21> :
  3519. <L20>:
  3520. return _47;
  3521. }