queue.c.075i.fnsummary 90 KB

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