queue.c.016i.visibility 90 KB

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