queue.c.076i.inline 99 KB

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