tasks.c.022i.opt_local_passes 171 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568
  1. prvAddCurrentTaskToDelayedList (TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely)
  2. {
  3. struct ListItem_t * const pxIndex;
  4. const TickType_t xConstTickCount;
  5. TickType_t xTimeToWake;
  6. struct TCB_t * pxCurrentTCB.23_1;
  7. struct TCB_t * pxCurrentTCB.24_2;
  8. struct ListItem_t * _3;
  9. long unsigned int _4;
  10. struct TCB_t * pxCurrentTCB.25_5;
  11. struct TCB_t * pxCurrentTCB.26_6;
  12. struct xLIST_ITEM * _7;
  13. struct TCB_t * pxCurrentTCB.27_8;
  14. struct xLIST_ITEM * _9;
  15. struct ListItem_t * _10;
  16. struct TCB_t * pxCurrentTCB.28_11;
  17. struct ListItem_t * _12;
  18. struct TCB_t * pxCurrentTCB.29_13;
  19. long unsigned int _14;
  20. long unsigned int _15;
  21. struct TCB_t * pxCurrentTCB.30_16;
  22. struct List_t * pxOverflowDelayedTaskList.31_17;
  23. struct TCB_t * pxCurrentTCB.32_18;
  24. struct ListItem_t * _19;
  25. struct List_t * pxDelayedTaskList.33_20;
  26. struct TCB_t * pxCurrentTCB.34_21;
  27. struct ListItem_t * _22;
  28. long unsigned int xNextTaskUnblockTime.35_23;
  29. <bb 2> :
  30. # DEBUG BEGIN_STMT
  31. # DEBUG BEGIN_STMT
  32. xConstTickCount_26 ={v} xTickCount;
  33. # DEBUG xConstTickCount => xConstTickCount_26
  34. # DEBUG BEGIN_STMT
  35. pxCurrentTCB.23_1 ={v} pxCurrentTCB;
  36. pxCurrentTCB.23_1->ucDelayAborted = 0;
  37. # DEBUG BEGIN_STMT
  38. pxCurrentTCB.24_2 ={v} pxCurrentTCB;
  39. _3 = &pxCurrentTCB.24_2->xStateListItem;
  40. _4 = uxListRemove (_3);
  41. # DEBUG BEGIN_STMT
  42. # DEBUG BEGIN_STMT
  43. if (xTicksToWait_29(D) == 4294967295)
  44. goto <bb 3>; [INV]
  45. else
  46. goto <bb 5>; [INV]
  47. <bb 3> :
  48. if (xCanBlockIndefinitely_30(D) != 0)
  49. goto <bb 4>; [INV]
  50. else
  51. goto <bb 5>; [INV]
  52. <bb 4> :
  53. # DEBUG BEGIN_STMT
  54. pxIndex_31 = xSuspendedTaskList.pxIndex;
  55. # DEBUG pxIndex => pxIndex_31
  56. # DEBUG BEGIN_STMT
  57. # DEBUG BEGIN_STMT
  58. # DEBUG BEGIN_STMT
  59. pxCurrentTCB.25_5 ={v} pxCurrentTCB;
  60. pxCurrentTCB.25_5->xStateListItem.pxNext = pxIndex_31;
  61. # DEBUG BEGIN_STMT
  62. pxCurrentTCB.26_6 ={v} pxCurrentTCB;
  63. _7 = pxIndex_31->pxPrevious;
  64. pxCurrentTCB.26_6->xStateListItem.pxPrevious = _7;
  65. # DEBUG BEGIN_STMT
  66. pxCurrentTCB.27_8 ={v} pxCurrentTCB;
  67. _9 = pxIndex_31->pxPrevious;
  68. _10 = &pxCurrentTCB.27_8->xStateListItem;
  69. _9->pxNext = _10;
  70. # DEBUG BEGIN_STMT
  71. pxCurrentTCB.28_11 ={v} pxCurrentTCB;
  72. _12 = &pxCurrentTCB.28_11->xStateListItem;
  73. pxIndex_31->pxPrevious = _12;
  74. # DEBUG BEGIN_STMT
  75. pxCurrentTCB.29_13 ={v} pxCurrentTCB;
  76. pxCurrentTCB.29_13->xStateListItem.pvContainer = &xSuspendedTaskList;
  77. # DEBUG BEGIN_STMT
  78. _14 ={v} xSuspendedTaskList.uxNumberOfItems;
  79. _15 = _14 + 1;
  80. xSuspendedTaskList.uxNumberOfItems ={v} _15;
  81. # DEBUG BEGIN_STMT
  82. goto <bb 9>; [INV]
  83. <bb 5> :
  84. # DEBUG BEGIN_STMT
  85. xTimeToWake_38 = xConstTickCount_26 + xTicksToWait_29(D);
  86. # DEBUG xTimeToWake => xTimeToWake_38
  87. # DEBUG BEGIN_STMT
  88. pxCurrentTCB.30_16 ={v} pxCurrentTCB;
  89. pxCurrentTCB.30_16->xStateListItem.xItemValue = xTimeToWake_38;
  90. # DEBUG BEGIN_STMT
  91. if (xTimeToWake_38 < xConstTickCount_26)
  92. goto <bb 6>; [INV]
  93. else
  94. goto <bb 7>; [INV]
  95. <bb 6> :
  96. # DEBUG BEGIN_STMT
  97. pxOverflowDelayedTaskList.31_17 ={v} pxOverflowDelayedTaskList;
  98. pxCurrentTCB.32_18 ={v} pxCurrentTCB;
  99. _19 = &pxCurrentTCB.32_18->xStateListItem;
  100. vListInsert (pxOverflowDelayedTaskList.31_17, _19);
  101. goto <bb 9>; [INV]
  102. <bb 7> :
  103. # DEBUG BEGIN_STMT
  104. pxDelayedTaskList.33_20 ={v} pxDelayedTaskList;
  105. pxCurrentTCB.34_21 ={v} pxCurrentTCB;
  106. _22 = &pxCurrentTCB.34_21->xStateListItem;
  107. vListInsert (pxDelayedTaskList.33_20, _22);
  108. # DEBUG BEGIN_STMT
  109. xNextTaskUnblockTime.35_23 ={v} xNextTaskUnblockTime;
  110. if (xTimeToWake_38 < xNextTaskUnblockTime.35_23)
  111. goto <bb 8>; [INV]
  112. else
  113. goto <bb 9>; [INV]
  114. <bb 8> :
  115. # DEBUG BEGIN_STMT
  116. xNextTaskUnblockTime ={v} xTimeToWake_38;
  117. <bb 9> :
  118. # DEBUG BEGIN_STMT
  119. return;
  120. }
  121. ulTaskGenericNotifyValueClear (struct tskTaskControlBlock * xTask, UBaseType_t uxIndexToClear, uint32_t ulBitsToClear)
  122. {
  123. uint32_t ulReturn;
  124. struct TCB_t * pxTCB;
  125. long unsigned int _1;
  126. long unsigned int _2;
  127. long unsigned int _3;
  128. struct TCB_t * iftmp.164_4;
  129. struct TCB_t * iftmp.164_6;
  130. struct TCB_t * iftmp.164_8;
  131. uint32_t _16;
  132. <bb 2> :
  133. # DEBUG BEGIN_STMT
  134. # DEBUG BEGIN_STMT
  135. # DEBUG BEGIN_STMT
  136. if (xTask_5(D) == 0B)
  137. goto <bb 3>; [INV]
  138. else
  139. goto <bb 4>; [INV]
  140. <bb 3> :
  141. iftmp.164_8 ={v} pxCurrentTCB;
  142. goto <bb 5>; [INV]
  143. <bb 4> :
  144. iftmp.164_6 = xTask_5(D);
  145. <bb 5> :
  146. # iftmp.164_4 = PHI <iftmp.164_8(3), iftmp.164_6(4)>
  147. pxTCB_9 = iftmp.164_4;
  148. # DEBUG pxTCB => pxTCB_9
  149. # DEBUG BEGIN_STMT
  150. vPortEnterCritical ();
  151. # DEBUG BEGIN_STMT
  152. ulReturn_12 ={v} pxTCB_9->ulNotifiedValue[uxIndexToClear_11(D)];
  153. # DEBUG ulReturn => ulReturn_12
  154. # DEBUG BEGIN_STMT
  155. _1 ={v} pxTCB_9->ulNotifiedValue[uxIndexToClear_11(D)];
  156. _2 = ~ulBitsToClear_13(D);
  157. _3 = _1 & _2;
  158. pxTCB_9->ulNotifiedValue[uxIndexToClear_11(D)] ={v} _3;
  159. # DEBUG BEGIN_STMT
  160. vPortExitCritical ();
  161. # DEBUG BEGIN_STMT
  162. _16 = ulReturn_12;
  163. return _16;
  164. }
  165. xTaskGenericNotifyStateClear (struct tskTaskControlBlock * xTask, UBaseType_t uxIndexToClear)
  166. {
  167. BaseType_t xReturn;
  168. struct TCB_t * pxTCB;
  169. unsigned char _1;
  170. struct TCB_t * iftmp.163_3;
  171. struct TCB_t * iftmp.163_7;
  172. struct TCB_t * iftmp.163_9;
  173. BaseType_t _16;
  174. <bb 2> :
  175. # DEBUG BEGIN_STMT
  176. # DEBUG BEGIN_STMT
  177. # DEBUG BEGIN_STMT
  178. if (uxIndexToClear_5(D) != 0)
  179. goto <bb 3>; [INV]
  180. else
  181. goto <bb 5>; [INV]
  182. <bb 3> :
  183. # DEBUG BEGIN_STMT
  184. vPortRaiseBASEPRI ();
  185. <bb 4> :
  186. # DEBUG BEGIN_STMT
  187. # DEBUG BEGIN_STMT
  188. # DEBUG BEGIN_STMT
  189. goto <bb 4>; [INV]
  190. <bb 5> :
  191. # DEBUG BEGIN_STMT
  192. # DEBUG BEGIN_STMT
  193. if (xTask_6(D) == 0B)
  194. goto <bb 6>; [INV]
  195. else
  196. goto <bb 7>; [INV]
  197. <bb 6> :
  198. iftmp.163_9 ={v} pxCurrentTCB;
  199. goto <bb 8>; [INV]
  200. <bb 7> :
  201. iftmp.163_7 = xTask_6(D);
  202. <bb 8> :
  203. # iftmp.163_3 = PHI <iftmp.163_9(6), iftmp.163_7(7)>
  204. pxTCB_10 = iftmp.163_3;
  205. # DEBUG pxTCB => pxTCB_10
  206. # DEBUG BEGIN_STMT
  207. vPortEnterCritical ();
  208. # DEBUG BEGIN_STMT
  209. _1 ={v} pxTCB_10->ucNotifyState[uxIndexToClear_5(D)];
  210. if (_1 == 2)
  211. goto <bb 9>; [INV]
  212. else
  213. goto <bb 10>; [INV]
  214. <bb 9> :
  215. # DEBUG BEGIN_STMT
  216. pxTCB_10->ucNotifyState[uxIndexToClear_5(D)] ={v} 0;
  217. # DEBUG BEGIN_STMT
  218. xReturn_14 = 1;
  219. # DEBUG xReturn => xReturn_14
  220. goto <bb 11>; [INV]
  221. <bb 10> :
  222. # DEBUG BEGIN_STMT
  223. xReturn_12 = 0;
  224. # DEBUG xReturn => xReturn_12
  225. <bb 11> :
  226. # xReturn_2 = PHI <xReturn_14(9), xReturn_12(10)>
  227. # DEBUG xReturn => xReturn_2
  228. # DEBUG BEGIN_STMT
  229. vPortExitCritical ();
  230. # DEBUG BEGIN_STMT
  231. _16 = xReturn_2;
  232. return _16;
  233. }
  234. vTaskGenericNotifyGiveFromISR (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, BaseType_t * pxHigherPriorityTaskWoken)
  235. {
  236. struct ListItem_t * const pxIndex;
  237. struct ListItem_t * const pxIndex;
  238. struct List_t * const pxList;
  239. UBaseType_t uxSavedInterruptStatus;
  240. uint8_t ucOriginalNotifyState;
  241. struct TCB_t * pxTCB;
  242. long unsigned int _1;
  243. long unsigned int _2;
  244. struct xLIST * _3;
  245. long unsigned int uxSchedulerSuspended.160_4;
  246. struct xLIST_ITEM * _5;
  247. struct xLIST_ITEM * _6;
  248. struct xLIST_ITEM * _7;
  249. struct xLIST_ITEM * _8;
  250. struct ListItem_t * _9;
  251. struct ListItem_t * _10;
  252. struct xLIST_ITEM * _11;
  253. long unsigned int _12;
  254. long unsigned int _13;
  255. long unsigned int _14;
  256. long unsigned int uxTopReadyPriority.161_15;
  257. long unsigned int _16;
  258. long unsigned int _17;
  259. struct xLIST_ITEM * _18;
  260. struct xLIST_ITEM * _19;
  261. struct ListItem_t * _20;
  262. struct ListItem_t * _21;
  263. long unsigned int _22;
  264. struct List_t * _23;
  265. long unsigned int _24;
  266. long unsigned int _25;
  267. long unsigned int _26;
  268. struct xLIST_ITEM * _27;
  269. struct xLIST_ITEM * _28;
  270. struct ListItem_t * _29;
  271. struct ListItem_t * _30;
  272. long unsigned int _31;
  273. long unsigned int _32;
  274. long unsigned int _33;
  275. struct TCB_t * pxCurrentTCB.162_34;
  276. long unsigned int _35;
  277. <bb 2> :
  278. # DEBUG BEGIN_STMT
  279. # DEBUG BEGIN_STMT
  280. # DEBUG BEGIN_STMT
  281. # DEBUG BEGIN_STMT
  282. if (xTaskToNotify_41(D) == 0B)
  283. goto <bb 3>; [INV]
  284. else
  285. goto <bb 5>; [INV]
  286. <bb 3> :
  287. # DEBUG BEGIN_STMT
  288. vPortRaiseBASEPRI ();
  289. <bb 4> :
  290. # DEBUG BEGIN_STMT
  291. # DEBUG BEGIN_STMT
  292. # DEBUG BEGIN_STMT
  293. goto <bb 4>; [INV]
  294. <bb 5> :
  295. # DEBUG BEGIN_STMT
  296. # DEBUG BEGIN_STMT
  297. if (uxIndexToNotify_42(D) != 0)
  298. goto <bb 6>; [INV]
  299. else
  300. goto <bb 8>; [INV]
  301. <bb 6> :
  302. # DEBUG BEGIN_STMT
  303. vPortRaiseBASEPRI ();
  304. <bb 7> :
  305. # DEBUG BEGIN_STMT
  306. # DEBUG BEGIN_STMT
  307. # DEBUG BEGIN_STMT
  308. goto <bb 7>; [INV]
  309. <bb 8> :
  310. # DEBUG BEGIN_STMT
  311. # DEBUG BEGIN_STMT
  312. vPortValidateInterruptPriority ();
  313. # DEBUG BEGIN_STMT
  314. pxTCB_45 = xTaskToNotify_41(D);
  315. # DEBUG pxTCB => pxTCB_45
  316. # DEBUG BEGIN_STMT
  317. uxSavedInterruptStatus_47 = ulPortRaiseBASEPRI ();
  318. # DEBUG uxSavedInterruptStatus => uxSavedInterruptStatus_47
  319. # DEBUG BEGIN_STMT
  320. ucOriginalNotifyState_48 ={v} pxTCB_45->ucNotifyState[uxIndexToNotify_42(D)];
  321. # DEBUG ucOriginalNotifyState => ucOriginalNotifyState_48
  322. # DEBUG BEGIN_STMT
  323. pxTCB_45->ucNotifyState[uxIndexToNotify_42(D)] ={v} 2;
  324. # DEBUG BEGIN_STMT
  325. _1 ={v} pxTCB_45->ulNotifiedValue[uxIndexToNotify_42(D)];
  326. _2 = _1 + 1;
  327. pxTCB_45->ulNotifiedValue[uxIndexToNotify_42(D)] ={v} _2;
  328. # DEBUG BEGIN_STMT
  329. # DEBUG BEGIN_STMT
  330. if (ucOriginalNotifyState_48 == 1)
  331. goto <bb 9>; [INV]
  332. else
  333. goto <bb 23>; [INV]
  334. <bb 9> :
  335. # DEBUG BEGIN_STMT
  336. _3 = pxTCB_45->xEventListItem.pvContainer;
  337. if (_3 != 0B)
  338. goto <bb 10>; [INV]
  339. else
  340. goto <bb 12>; [INV]
  341. <bb 10> :
  342. # DEBUG BEGIN_STMT
  343. vPortRaiseBASEPRI ();
  344. <bb 11> :
  345. # DEBUG BEGIN_STMT
  346. # DEBUG BEGIN_STMT
  347. # DEBUG BEGIN_STMT
  348. goto <bb 11>; [INV]
  349. <bb 12> :
  350. # DEBUG BEGIN_STMT
  351. # DEBUG BEGIN_STMT
  352. uxSchedulerSuspended.160_4 ={v} uxSchedulerSuspended;
  353. if (uxSchedulerSuspended.160_4 == 0)
  354. goto <bb 13>; [INV]
  355. else
  356. goto <bb 18>; [INV]
  357. <bb 13> :
  358. # DEBUG BEGIN_STMT
  359. pxList_58 = pxTCB_45->xStateListItem.pvContainer;
  360. # DEBUG pxList => pxList_58
  361. # DEBUG BEGIN_STMT
  362. _5 = pxTCB_45->xStateListItem.pxNext;
  363. _6 = pxTCB_45->xStateListItem.pxPrevious;
  364. _5->pxPrevious = _6;
  365. # DEBUG BEGIN_STMT
  366. _7 = pxTCB_45->xStateListItem.pxPrevious;
  367. _8 = pxTCB_45->xStateListItem.pxNext;
  368. _7->pxNext = _8;
  369. # DEBUG BEGIN_STMT
  370. _9 = pxList_58->pxIndex;
  371. _10 = &pxTCB_45->xStateListItem;
  372. if (_9 == _10)
  373. goto <bb 14>; [INV]
  374. else
  375. goto <bb 15>; [INV]
  376. <bb 14> :
  377. # DEBUG BEGIN_STMT
  378. _11 = pxTCB_45->xStateListItem.pxPrevious;
  379. pxList_58->pxIndex = _11;
  380. <bb 15> :
  381. # DEBUG BEGIN_STMT
  382. pxTCB_45->xStateListItem.pvContainer = 0B;
  383. # DEBUG BEGIN_STMT
  384. _12 ={v} pxList_58->uxNumberOfItems;
  385. _13 = _12 + 4294967295;
  386. pxList_58->uxNumberOfItems ={v} _13;
  387. # DEBUG BEGIN_STMT
  388. # DEBUG BEGIN_STMT
  389. # DEBUG BEGIN_STMT
  390. _14 = pxTCB_45->uxPriority;
  391. uxTopReadyPriority.161_15 ={v} uxTopReadyPriority;
  392. if (_14 > uxTopReadyPriority.161_15)
  393. goto <bb 16>; [INV]
  394. else
  395. goto <bb 17>; [INV]
  396. <bb 16> :
  397. # DEBUG BEGIN_STMT
  398. _16 = pxTCB_45->uxPriority;
  399. uxTopReadyPriority ={v} _16;
  400. <bb 17> :
  401. # DEBUG BEGIN_STMT
  402. # DEBUG BEGIN_STMT
  403. _17 = pxTCB_45->uxPriority;
  404. pxIndex_65 = pxReadyTasksLists[_17].pxIndex;
  405. # DEBUG pxIndex => pxIndex_65
  406. # DEBUG BEGIN_STMT
  407. # DEBUG BEGIN_STMT
  408. # DEBUG BEGIN_STMT
  409. pxTCB_45->xStateListItem.pxNext = pxIndex_65;
  410. # DEBUG BEGIN_STMT
  411. _18 = pxIndex_65->pxPrevious;
  412. pxTCB_45->xStateListItem.pxPrevious = _18;
  413. # DEBUG BEGIN_STMT
  414. _19 = pxIndex_65->pxPrevious;
  415. _20 = &pxTCB_45->xStateListItem;
  416. _19->pxNext = _20;
  417. # DEBUG BEGIN_STMT
  418. _21 = &pxTCB_45->xStateListItem;
  419. pxIndex_65->pxPrevious = _21;
  420. # DEBUG BEGIN_STMT
  421. _22 = pxTCB_45->uxPriority;
  422. _23 = &pxReadyTasksLists[_22];
  423. pxTCB_45->xStateListItem.pvContainer = _23;
  424. # DEBUG BEGIN_STMT
  425. _24 = pxTCB_45->uxPriority;
  426. _25 ={v} pxReadyTasksLists[_24].uxNumberOfItems;
  427. _26 = _25 + 1;
  428. pxReadyTasksLists[_24].uxNumberOfItems ={v} _26;
  429. # DEBUG BEGIN_STMT
  430. # DEBUG BEGIN_STMT
  431. goto <bb 19>; [INV]
  432. <bb 18> :
  433. # DEBUG BEGIN_STMT
  434. pxIndex_51 = xPendingReadyList.pxIndex;
  435. # DEBUG pxIndex => pxIndex_51
  436. # DEBUG BEGIN_STMT
  437. # DEBUG BEGIN_STMT
  438. # DEBUG BEGIN_STMT
  439. pxTCB_45->xEventListItem.pxNext = pxIndex_51;
  440. # DEBUG BEGIN_STMT
  441. _27 = pxIndex_51->pxPrevious;
  442. pxTCB_45->xEventListItem.pxPrevious = _27;
  443. # DEBUG BEGIN_STMT
  444. _28 = pxIndex_51->pxPrevious;
  445. _29 = &pxTCB_45->xEventListItem;
  446. _28->pxNext = _29;
  447. # DEBUG BEGIN_STMT
  448. _30 = &pxTCB_45->xEventListItem;
  449. pxIndex_51->pxPrevious = _30;
  450. # DEBUG BEGIN_STMT
  451. pxTCB_45->xEventListItem.pvContainer = &xPendingReadyList;
  452. # DEBUG BEGIN_STMT
  453. _31 ={v} xPendingReadyList.uxNumberOfItems;
  454. _32 = _31 + 1;
  455. xPendingReadyList.uxNumberOfItems ={v} _32;
  456. <bb 19> :
  457. # DEBUG BEGIN_STMT
  458. # DEBUG BEGIN_STMT
  459. _33 = pxTCB_45->uxPriority;
  460. pxCurrentTCB.162_34 ={v} pxCurrentTCB;
  461. _35 = pxCurrentTCB.162_34->uxPriority;
  462. if (_33 > _35)
  463. goto <bb 20>; [INV]
  464. else
  465. goto <bb 23>; [INV]
  466. <bb 20> :
  467. # DEBUG BEGIN_STMT
  468. if (pxHigherPriorityTaskWoken_72(D) != 0B)
  469. goto <bb 21>; [INV]
  470. else
  471. goto <bb 22>; [INV]
  472. <bb 21> :
  473. # DEBUG BEGIN_STMT
  474. *pxHigherPriorityTaskWoken_72(D) = 1;
  475. <bb 22> :
  476. # DEBUG BEGIN_STMT
  477. xYieldPending ={v} 1;
  478. <bb 23> :
  479. # DEBUG BEGIN_STMT
  480. # DEBUG BEGIN_STMT
  481. vPortSetBASEPRI (uxSavedInterruptStatus_47);
  482. return;
  483. }
  484. xTaskGenericNotifyFromISR (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t * pulPreviousNotificationValue, BaseType_t * pxHigherPriorityTaskWoken)
  485. {
  486. struct ListItem_t * const pxIndex;
  487. struct ListItem_t * const pxIndex;
  488. struct List_t * const pxList;
  489. UBaseType_t uxSavedInterruptStatus;
  490. BaseType_t xReturn;
  491. uint8_t ucOriginalNotifyState;
  492. struct TCB_t * pxTCB;
  493. long unsigned int _1;
  494. long unsigned int _2;
  495. long unsigned int _3;
  496. long unsigned int _4;
  497. long unsigned int _5;
  498. long unsigned int xTickCount.156_6;
  499. struct xLIST * _7;
  500. long unsigned int uxSchedulerSuspended.157_8;
  501. struct xLIST_ITEM * _9;
  502. struct xLIST_ITEM * _10;
  503. struct xLIST_ITEM * _11;
  504. struct xLIST_ITEM * _12;
  505. struct ListItem_t * _13;
  506. struct ListItem_t * _14;
  507. struct xLIST_ITEM * _15;
  508. long unsigned int _16;
  509. long unsigned int _17;
  510. long unsigned int _18;
  511. long unsigned int uxTopReadyPriority.158_19;
  512. long unsigned int _20;
  513. long unsigned int _21;
  514. struct xLIST_ITEM * _22;
  515. struct xLIST_ITEM * _23;
  516. struct ListItem_t * _24;
  517. struct ListItem_t * _25;
  518. long unsigned int _26;
  519. struct List_t * _27;
  520. long unsigned int _28;
  521. long unsigned int _29;
  522. long unsigned int _30;
  523. struct xLIST_ITEM * _31;
  524. struct xLIST_ITEM * _32;
  525. struct ListItem_t * _33;
  526. struct ListItem_t * _34;
  527. long unsigned int _35;
  528. long unsigned int _36;
  529. long unsigned int _37;
  530. struct TCB_t * pxCurrentTCB.159_38;
  531. long unsigned int _39;
  532. BaseType_t _94;
  533. <bb 2> :
  534. # DEBUG BEGIN_STMT
  535. # DEBUG BEGIN_STMT
  536. # DEBUG BEGIN_STMT
  537. xReturn_48 = 1;
  538. # DEBUG xReturn => xReturn_48
  539. # DEBUG BEGIN_STMT
  540. # DEBUG BEGIN_STMT
  541. if (xTaskToNotify_49(D) == 0B)
  542. goto <bb 3>; [INV]
  543. else
  544. goto <bb 5>; [INV]
  545. <bb 3> :
  546. # DEBUG BEGIN_STMT
  547. vPortRaiseBASEPRI ();
  548. <bb 4> :
  549. # DEBUG BEGIN_STMT
  550. # DEBUG BEGIN_STMT
  551. # DEBUG BEGIN_STMT
  552. goto <bb 4>; [INV]
  553. <bb 5> :
  554. # DEBUG BEGIN_STMT
  555. # DEBUG BEGIN_STMT
  556. if (uxIndexToNotify_50(D) != 0)
  557. goto <bb 6>; [INV]
  558. else
  559. goto <bb 8>; [INV]
  560. <bb 6> :
  561. # DEBUG BEGIN_STMT
  562. vPortRaiseBASEPRI ();
  563. <bb 7> :
  564. # DEBUG BEGIN_STMT
  565. # DEBUG BEGIN_STMT
  566. # DEBUG BEGIN_STMT
  567. goto <bb 7>; [INV]
  568. <bb 8> :
  569. # DEBUG BEGIN_STMT
  570. # DEBUG BEGIN_STMT
  571. vPortValidateInterruptPriority ();
  572. # DEBUG BEGIN_STMT
  573. pxTCB_53 = xTaskToNotify_49(D);
  574. # DEBUG pxTCB => pxTCB_53
  575. # DEBUG BEGIN_STMT
  576. uxSavedInterruptStatus_55 = ulPortRaiseBASEPRI ();
  577. # DEBUG uxSavedInterruptStatus => uxSavedInterruptStatus_55
  578. # DEBUG BEGIN_STMT
  579. if (pulPreviousNotificationValue_56(D) != 0B)
  580. goto <bb 9>; [INV]
  581. else
  582. goto <bb 10>; [INV]
  583. <bb 9> :
  584. # DEBUG BEGIN_STMT
  585. _1 ={v} pxTCB_53->ulNotifiedValue[uxIndexToNotify_50(D)];
  586. *pulPreviousNotificationValue_56(D) = _1;
  587. <bb 10> :
  588. # DEBUG BEGIN_STMT
  589. ucOriginalNotifyState_58 ={v} pxTCB_53->ucNotifyState[uxIndexToNotify_50(D)];
  590. # DEBUG ucOriginalNotifyState => ucOriginalNotifyState_58
  591. # DEBUG BEGIN_STMT
  592. pxTCB_53->ucNotifyState[uxIndexToNotify_50(D)] ={v} 2;
  593. # DEBUG BEGIN_STMT
  594. switch (eAction_60(D)) <default: <L16> [INV], case 0: <L39> [INV], case 1: <L8> [INV], case 2: <L9> [INV], case 3: <L10> [INV], case 4: <L11> [INV]>
  595. <bb 11> :
  596. <L8>:
  597. # DEBUG BEGIN_STMT
  598. _2 ={v} pxTCB_53->ulNotifiedValue[uxIndexToNotify_50(D)];
  599. _3 = ulValue_62(D) | _2;
  600. pxTCB_53->ulNotifiedValue[uxIndexToNotify_50(D)] ={v} _3;
  601. # DEBUG BEGIN_STMT
  602. goto <bb 20>; [INV]
  603. <bb 12> :
  604. <L9>:
  605. # DEBUG BEGIN_STMT
  606. _4 ={v} pxTCB_53->ulNotifiedValue[uxIndexToNotify_50(D)];
  607. _5 = _4 + 1;
  608. pxTCB_53->ulNotifiedValue[uxIndexToNotify_50(D)] ={v} _5;
  609. # DEBUG BEGIN_STMT
  610. goto <bb 20>; [INV]
  611. <bb 13> :
  612. <L10>:
  613. # DEBUG BEGIN_STMT
  614. pxTCB_53->ulNotifiedValue[uxIndexToNotify_50(D)] ={v} ulValue_62(D);
  615. # DEBUG BEGIN_STMT
  616. goto <bb 20>; [INV]
  617. <bb 14> :
  618. <L11>:
  619. # DEBUG BEGIN_STMT
  620. if (ucOriginalNotifyState_58 != 2)
  621. goto <bb 15>; [INV]
  622. else
  623. goto <bb 16>; [INV]
  624. <bb 15> :
  625. # DEBUG BEGIN_STMT
  626. pxTCB_53->ulNotifiedValue[uxIndexToNotify_50(D)] ={v} ulValue_62(D);
  627. goto <bb 20>; [INV]
  628. <bb 16> :
  629. # DEBUG BEGIN_STMT
  630. xReturn_61 = 0;
  631. # DEBUG xReturn => xReturn_61
  632. goto <bb 20>; [INV]
  633. <bb 17> :
  634. <L16>:
  635. # DEBUG BEGIN_STMT
  636. xTickCount.156_6 ={v} xTickCount;
  637. if (xTickCount.156_6 != 0)
  638. goto <bb 18>; [INV]
  639. else
  640. goto <bb 20>; [INV]
  641. <bb 18> :
  642. # DEBUG BEGIN_STMT
  643. vPortRaiseBASEPRI ();
  644. <bb 19> :
  645. # DEBUG BEGIN_STMT
  646. # DEBUG BEGIN_STMT
  647. # DEBUG BEGIN_STMT
  648. goto <bb 19>; [INV]
  649. <bb 20> :
  650. # xReturn_40 = PHI <xReturn_48(11), xReturn_48(12), xReturn_48(13), xReturn_61(16), xReturn_48(10), xReturn_48(17), xReturn_48(15)>
  651. <L39>:
  652. # DEBUG xReturn => xReturn_40
  653. # DEBUG BEGIN_STMT
  654. # DEBUG BEGIN_STMT
  655. if (ucOriginalNotifyState_58 == 1)
  656. goto <bb 21>; [INV]
  657. else
  658. goto <bb 35>; [INV]
  659. <bb 21> :
  660. # DEBUG BEGIN_STMT
  661. _7 = pxTCB_53->xEventListItem.pvContainer;
  662. if (_7 != 0B)
  663. goto <bb 22>; [INV]
  664. else
  665. goto <bb 24>; [INV]
  666. <bb 22> :
  667. # DEBUG BEGIN_STMT
  668. vPortRaiseBASEPRI ();
  669. <bb 23> :
  670. # DEBUG BEGIN_STMT
  671. # DEBUG BEGIN_STMT
  672. # DEBUG BEGIN_STMT
  673. goto <bb 23>; [INV]
  674. <bb 24> :
  675. # DEBUG BEGIN_STMT
  676. # DEBUG BEGIN_STMT
  677. uxSchedulerSuspended.157_8 ={v} uxSchedulerSuspended;
  678. if (uxSchedulerSuspended.157_8 == 0)
  679. goto <bb 25>; [INV]
  680. else
  681. goto <bb 30>; [INV]
  682. <bb 25> :
  683. # DEBUG BEGIN_STMT
  684. pxList_75 = pxTCB_53->xStateListItem.pvContainer;
  685. # DEBUG pxList => pxList_75
  686. # DEBUG BEGIN_STMT
  687. _9 = pxTCB_53->xStateListItem.pxNext;
  688. _10 = pxTCB_53->xStateListItem.pxPrevious;
  689. _9->pxPrevious = _10;
  690. # DEBUG BEGIN_STMT
  691. _11 = pxTCB_53->xStateListItem.pxPrevious;
  692. _12 = pxTCB_53->xStateListItem.pxNext;
  693. _11->pxNext = _12;
  694. # DEBUG BEGIN_STMT
  695. _13 = pxList_75->pxIndex;
  696. _14 = &pxTCB_53->xStateListItem;
  697. if (_13 == _14)
  698. goto <bb 26>; [INV]
  699. else
  700. goto <bb 27>; [INV]
  701. <bb 26> :
  702. # DEBUG BEGIN_STMT
  703. _15 = pxTCB_53->xStateListItem.pxPrevious;
  704. pxList_75->pxIndex = _15;
  705. <bb 27> :
  706. # DEBUG BEGIN_STMT
  707. pxTCB_53->xStateListItem.pvContainer = 0B;
  708. # DEBUG BEGIN_STMT
  709. _16 ={v} pxList_75->uxNumberOfItems;
  710. _17 = _16 + 4294967295;
  711. pxList_75->uxNumberOfItems ={v} _17;
  712. # DEBUG BEGIN_STMT
  713. # DEBUG BEGIN_STMT
  714. # DEBUG BEGIN_STMT
  715. _18 = pxTCB_53->uxPriority;
  716. uxTopReadyPriority.158_19 ={v} uxTopReadyPriority;
  717. if (_18 > uxTopReadyPriority.158_19)
  718. goto <bb 28>; [INV]
  719. else
  720. goto <bb 29>; [INV]
  721. <bb 28> :
  722. # DEBUG BEGIN_STMT
  723. _20 = pxTCB_53->uxPriority;
  724. uxTopReadyPriority ={v} _20;
  725. <bb 29> :
  726. # DEBUG BEGIN_STMT
  727. # DEBUG BEGIN_STMT
  728. _21 = pxTCB_53->uxPriority;
  729. pxIndex_82 = pxReadyTasksLists[_21].pxIndex;
  730. # DEBUG pxIndex => pxIndex_82
  731. # DEBUG BEGIN_STMT
  732. # DEBUG BEGIN_STMT
  733. # DEBUG BEGIN_STMT
  734. pxTCB_53->xStateListItem.pxNext = pxIndex_82;
  735. # DEBUG BEGIN_STMT
  736. _22 = pxIndex_82->pxPrevious;
  737. pxTCB_53->xStateListItem.pxPrevious = _22;
  738. # DEBUG BEGIN_STMT
  739. _23 = pxIndex_82->pxPrevious;
  740. _24 = &pxTCB_53->xStateListItem;
  741. _23->pxNext = _24;
  742. # DEBUG BEGIN_STMT
  743. _25 = &pxTCB_53->xStateListItem;
  744. pxIndex_82->pxPrevious = _25;
  745. # DEBUG BEGIN_STMT
  746. _26 = pxTCB_53->uxPriority;
  747. _27 = &pxReadyTasksLists[_26];
  748. pxTCB_53->xStateListItem.pvContainer = _27;
  749. # DEBUG BEGIN_STMT
  750. _28 = pxTCB_53->uxPriority;
  751. _29 ={v} pxReadyTasksLists[_28].uxNumberOfItems;
  752. _30 = _29 + 1;
  753. pxReadyTasksLists[_28].uxNumberOfItems ={v} _30;
  754. # DEBUG BEGIN_STMT
  755. # DEBUG BEGIN_STMT
  756. goto <bb 31>; [INV]
  757. <bb 30> :
  758. # DEBUG BEGIN_STMT
  759. pxIndex_68 = xPendingReadyList.pxIndex;
  760. # DEBUG pxIndex => pxIndex_68
  761. # DEBUG BEGIN_STMT
  762. # DEBUG BEGIN_STMT
  763. # DEBUG BEGIN_STMT
  764. pxTCB_53->xEventListItem.pxNext = pxIndex_68;
  765. # DEBUG BEGIN_STMT
  766. _31 = pxIndex_68->pxPrevious;
  767. pxTCB_53->xEventListItem.pxPrevious = _31;
  768. # DEBUG BEGIN_STMT
  769. _32 = pxIndex_68->pxPrevious;
  770. _33 = &pxTCB_53->xEventListItem;
  771. _32->pxNext = _33;
  772. # DEBUG BEGIN_STMT
  773. _34 = &pxTCB_53->xEventListItem;
  774. pxIndex_68->pxPrevious = _34;
  775. # DEBUG BEGIN_STMT
  776. pxTCB_53->xEventListItem.pvContainer = &xPendingReadyList;
  777. # DEBUG BEGIN_STMT
  778. _35 ={v} xPendingReadyList.uxNumberOfItems;
  779. _36 = _35 + 1;
  780. xPendingReadyList.uxNumberOfItems ={v} _36;
  781. <bb 31> :
  782. # DEBUG BEGIN_STMT
  783. # DEBUG BEGIN_STMT
  784. _37 = pxTCB_53->uxPriority;
  785. pxCurrentTCB.159_38 ={v} pxCurrentTCB;
  786. _39 = pxCurrentTCB.159_38->uxPriority;
  787. if (_37 > _39)
  788. goto <bb 32>; [INV]
  789. else
  790. goto <bb 35>; [INV]
  791. <bb 32> :
  792. # DEBUG BEGIN_STMT
  793. if (pxHigherPriorityTaskWoken_89(D) != 0B)
  794. goto <bb 33>; [INV]
  795. else
  796. goto <bb 34>; [INV]
  797. <bb 33> :
  798. # DEBUG BEGIN_STMT
  799. *pxHigherPriorityTaskWoken_89(D) = 1;
  800. <bb 34> :
  801. # DEBUG BEGIN_STMT
  802. xYieldPending ={v} 1;
  803. <bb 35> :
  804. # DEBUG BEGIN_STMT
  805. # DEBUG BEGIN_STMT
  806. vPortSetBASEPRI (uxSavedInterruptStatus_55);
  807. # DEBUG BEGIN_STMT
  808. _94 = xReturn_40;
  809. return _94;
  810. }
  811. xTaskGenericNotify (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t * pulPreviousNotificationValue)
  812. {
  813. struct ListItem_t * const pxIndex;
  814. struct List_t * const pxList;
  815. uint8_t ucOriginalNotifyState;
  816. BaseType_t xReturn;
  817. struct TCB_t * pxTCB;
  818. long unsigned int _1;
  819. long unsigned int _2;
  820. long unsigned int _3;
  821. long unsigned int _4;
  822. long unsigned int _5;
  823. long unsigned int xTickCount.153_6;
  824. struct xLIST_ITEM * _7;
  825. struct xLIST_ITEM * _8;
  826. struct xLIST_ITEM * _9;
  827. struct xLIST_ITEM * _10;
  828. struct ListItem_t * _11;
  829. struct ListItem_t * _12;
  830. struct xLIST_ITEM * _13;
  831. long unsigned int _14;
  832. long unsigned int _15;
  833. long unsigned int _16;
  834. long unsigned int uxTopReadyPriority.154_17;
  835. long unsigned int _18;
  836. long unsigned int _19;
  837. struct xLIST_ITEM * _20;
  838. struct xLIST_ITEM * _21;
  839. struct ListItem_t * _22;
  840. struct ListItem_t * _23;
  841. long unsigned int _24;
  842. struct List_t * _25;
  843. long unsigned int _26;
  844. long unsigned int _27;
  845. long unsigned int _28;
  846. struct xLIST * _29;
  847. long unsigned int _30;
  848. struct TCB_t * pxCurrentTCB.155_31;
  849. long unsigned int _32;
  850. volatile uint32_t * _33;
  851. BaseType_t _77;
  852. <bb 2> :
  853. # DEBUG BEGIN_STMT
  854. # DEBUG BEGIN_STMT
  855. xReturn_40 = 1;
  856. # DEBUG xReturn => xReturn_40
  857. # DEBUG BEGIN_STMT
  858. # DEBUG BEGIN_STMT
  859. if (uxIndexToNotify_41(D) != 0)
  860. goto <bb 3>; [INV]
  861. else
  862. goto <bb 5>; [INV]
  863. <bb 3> :
  864. # DEBUG BEGIN_STMT
  865. vPortRaiseBASEPRI ();
  866. <bb 4> :
  867. # DEBUG BEGIN_STMT
  868. # DEBUG BEGIN_STMT
  869. # DEBUG BEGIN_STMT
  870. goto <bb 4>; [INV]
  871. <bb 5> :
  872. # DEBUG BEGIN_STMT
  873. # DEBUG BEGIN_STMT
  874. if (xTaskToNotify_42(D) == 0B)
  875. goto <bb 6>; [INV]
  876. else
  877. goto <bb 8>; [INV]
  878. <bb 6> :
  879. # DEBUG BEGIN_STMT
  880. vPortRaiseBASEPRI ();
  881. <bb 7> :
  882. # DEBUG BEGIN_STMT
  883. # DEBUG BEGIN_STMT
  884. # DEBUG BEGIN_STMT
  885. goto <bb 7>; [INV]
  886. <bb 8> :
  887. # DEBUG BEGIN_STMT
  888. # DEBUG BEGIN_STMT
  889. pxTCB_43 = xTaskToNotify_42(D);
  890. # DEBUG pxTCB => pxTCB_43
  891. # DEBUG BEGIN_STMT
  892. vPortEnterCritical ();
  893. # DEBUG BEGIN_STMT
  894. if (pulPreviousNotificationValue_46(D) != 0B)
  895. goto <bb 9>; [INV]
  896. else
  897. goto <bb 10>; [INV]
  898. <bb 9> :
  899. # DEBUG BEGIN_STMT
  900. _1 ={v} pxTCB_43->ulNotifiedValue[uxIndexToNotify_41(D)];
  901. *pulPreviousNotificationValue_46(D) = _1;
  902. <bb 10> :
  903. # DEBUG BEGIN_STMT
  904. ucOriginalNotifyState_48 ={v} pxTCB_43->ucNotifyState[uxIndexToNotify_41(D)];
  905. # DEBUG ucOriginalNotifyState => ucOriginalNotifyState_48
  906. # DEBUG BEGIN_STMT
  907. pxTCB_43->ucNotifyState[uxIndexToNotify_41(D)] ={v} 2;
  908. # DEBUG BEGIN_STMT
  909. switch (eAction_50(D)) <default: <L16> [INV], case 0: <L35> [INV], case 1: <L8> [INV], case 2: <L9> [INV], case 3: <L10> [INV], case 4: <L11> [INV]>
  910. <bb 11> :
  911. <L8>:
  912. # DEBUG BEGIN_STMT
  913. _2 ={v} pxTCB_43->ulNotifiedValue[uxIndexToNotify_41(D)];
  914. _3 = ulValue_52(D) | _2;
  915. pxTCB_43->ulNotifiedValue[uxIndexToNotify_41(D)] ={v} _3;
  916. # DEBUG BEGIN_STMT
  917. goto <bb 20>; [INV]
  918. <bb 12> :
  919. <L9>:
  920. # DEBUG BEGIN_STMT
  921. _4 ={v} pxTCB_43->ulNotifiedValue[uxIndexToNotify_41(D)];
  922. _5 = _4 + 1;
  923. pxTCB_43->ulNotifiedValue[uxIndexToNotify_41(D)] ={v} _5;
  924. # DEBUG BEGIN_STMT
  925. goto <bb 20>; [INV]
  926. <bb 13> :
  927. <L10>:
  928. # DEBUG BEGIN_STMT
  929. pxTCB_43->ulNotifiedValue[uxIndexToNotify_41(D)] ={v} ulValue_52(D);
  930. # DEBUG BEGIN_STMT
  931. goto <bb 20>; [INV]
  932. <bb 14> :
  933. <L11>:
  934. # DEBUG BEGIN_STMT
  935. if (ucOriginalNotifyState_48 != 2)
  936. goto <bb 15>; [INV]
  937. else
  938. goto <bb 16>; [INV]
  939. <bb 15> :
  940. # DEBUG BEGIN_STMT
  941. pxTCB_43->ulNotifiedValue[uxIndexToNotify_41(D)] ={v} ulValue_52(D);
  942. goto <bb 20>; [INV]
  943. <bb 16> :
  944. # DEBUG BEGIN_STMT
  945. xReturn_51 = 0;
  946. # DEBUG xReturn => xReturn_51
  947. goto <bb 20>; [INV]
  948. <bb 17> :
  949. <L16>:
  950. # DEBUG BEGIN_STMT
  951. xTickCount.153_6 ={v} xTickCount;
  952. if (xTickCount.153_6 != 0)
  953. goto <bb 18>; [INV]
  954. else
  955. goto <bb 20>; [INV]
  956. <bb 18> :
  957. # DEBUG BEGIN_STMT
  958. vPortRaiseBASEPRI ();
  959. <bb 19> :
  960. # DEBUG BEGIN_STMT
  961. # DEBUG BEGIN_STMT
  962. # DEBUG BEGIN_STMT
  963. goto <bb 19>; [INV]
  964. <bb 20> :
  965. # xReturn_34 = PHI <xReturn_40(11), xReturn_40(12), xReturn_40(13), xReturn_51(16), xReturn_40(10), xReturn_40(17), xReturn_40(15)>
  966. <L35>:
  967. # DEBUG xReturn => xReturn_34
  968. # DEBUG BEGIN_STMT
  969. # DEBUG BEGIN_STMT
  970. if (ucOriginalNotifyState_48 == 1)
  971. goto <bb 21>; [INV]
  972. else
  973. goto <bb 30>; [INV]
  974. <bb 21> :
  975. # DEBUG BEGIN_STMT
  976. pxList_58 = pxTCB_43->xStateListItem.pvContainer;
  977. # DEBUG pxList => pxList_58
  978. # DEBUG BEGIN_STMT
  979. _7 = pxTCB_43->xStateListItem.pxNext;
  980. _8 = pxTCB_43->xStateListItem.pxPrevious;
  981. _7->pxPrevious = _8;
  982. # DEBUG BEGIN_STMT
  983. _9 = pxTCB_43->xStateListItem.pxPrevious;
  984. _10 = pxTCB_43->xStateListItem.pxNext;
  985. _9->pxNext = _10;
  986. # DEBUG BEGIN_STMT
  987. _11 = pxList_58->pxIndex;
  988. _12 = &pxTCB_43->xStateListItem;
  989. if (_11 == _12)
  990. goto <bb 22>; [INV]
  991. else
  992. goto <bb 23>; [INV]
  993. <bb 22> :
  994. # DEBUG BEGIN_STMT
  995. _13 = pxTCB_43->xStateListItem.pxPrevious;
  996. pxList_58->pxIndex = _13;
  997. <bb 23> :
  998. # DEBUG BEGIN_STMT
  999. pxTCB_43->xStateListItem.pvContainer = 0B;
  1000. # DEBUG BEGIN_STMT
  1001. _14 ={v} pxList_58->uxNumberOfItems;
  1002. _15 = _14 + 4294967295;
  1003. pxList_58->uxNumberOfItems ={v} _15;
  1004. # DEBUG BEGIN_STMT
  1005. # DEBUG BEGIN_STMT
  1006. # DEBUG BEGIN_STMT
  1007. _16 = pxTCB_43->uxPriority;
  1008. uxTopReadyPriority.154_17 ={v} uxTopReadyPriority;
  1009. if (_16 > uxTopReadyPriority.154_17)
  1010. goto <bb 24>; [INV]
  1011. else
  1012. goto <bb 25>; [INV]
  1013. <bb 24> :
  1014. # DEBUG BEGIN_STMT
  1015. _18 = pxTCB_43->uxPriority;
  1016. uxTopReadyPriority ={v} _18;
  1017. <bb 25> :
  1018. # DEBUG BEGIN_STMT
  1019. # DEBUG BEGIN_STMT
  1020. _19 = pxTCB_43->uxPriority;
  1021. pxIndex_65 = pxReadyTasksLists[_19].pxIndex;
  1022. # DEBUG pxIndex => pxIndex_65
  1023. # DEBUG BEGIN_STMT
  1024. # DEBUG BEGIN_STMT
  1025. # DEBUG BEGIN_STMT
  1026. pxTCB_43->xStateListItem.pxNext = pxIndex_65;
  1027. # DEBUG BEGIN_STMT
  1028. _20 = pxIndex_65->pxPrevious;
  1029. pxTCB_43->xStateListItem.pxPrevious = _20;
  1030. # DEBUG BEGIN_STMT
  1031. _21 = pxIndex_65->pxPrevious;
  1032. _22 = &pxTCB_43->xStateListItem;
  1033. _21->pxNext = _22;
  1034. # DEBUG BEGIN_STMT
  1035. _23 = &pxTCB_43->xStateListItem;
  1036. pxIndex_65->pxPrevious = _23;
  1037. # DEBUG BEGIN_STMT
  1038. _24 = pxTCB_43->uxPriority;
  1039. _25 = &pxReadyTasksLists[_24];
  1040. pxTCB_43->xStateListItem.pvContainer = _25;
  1041. # DEBUG BEGIN_STMT
  1042. _26 = pxTCB_43->uxPriority;
  1043. _27 ={v} pxReadyTasksLists[_26].uxNumberOfItems;
  1044. _28 = _27 + 1;
  1045. pxReadyTasksLists[_26].uxNumberOfItems ={v} _28;
  1046. # DEBUG BEGIN_STMT
  1047. # DEBUG BEGIN_STMT
  1048. # DEBUG BEGIN_STMT
  1049. _29 = pxTCB_43->xEventListItem.pvContainer;
  1050. if (_29 != 0B)
  1051. goto <bb 26>; [INV]
  1052. else
  1053. goto <bb 28>; [INV]
  1054. <bb 26> :
  1055. # DEBUG BEGIN_STMT
  1056. vPortRaiseBASEPRI ();
  1057. <bb 27> :
  1058. # DEBUG BEGIN_STMT
  1059. # DEBUG BEGIN_STMT
  1060. # DEBUG BEGIN_STMT
  1061. goto <bb 27>; [INV]
  1062. <bb 28> :
  1063. # DEBUG BEGIN_STMT
  1064. # DEBUG BEGIN_STMT
  1065. _30 = pxTCB_43->uxPriority;
  1066. pxCurrentTCB.155_31 ={v} pxCurrentTCB;
  1067. _32 = pxCurrentTCB.155_31->uxPriority;
  1068. if (_30 > _32)
  1069. goto <bb 29>; [INV]
  1070. else
  1071. goto <bb 30>; [INV]
  1072. <bb 29> :
  1073. # DEBUG BEGIN_STMT
  1074. _33 = 3758157060B;
  1075. *_33 ={v} 268435456;
  1076. # DEBUG BEGIN_STMT
  1077. __asm__ __volatile__("dsb" : : : "memory");
  1078. # DEBUG BEGIN_STMT
  1079. __asm__ __volatile__("isb");
  1080. # DEBUG BEGIN_STMT
  1081. <bb 30> :
  1082. # DEBUG BEGIN_STMT
  1083. # DEBUG BEGIN_STMT
  1084. vPortExitCritical ();
  1085. # DEBUG BEGIN_STMT
  1086. _77 = xReturn_34;
  1087. return _77;
  1088. }
  1089. xTaskGenericNotifyWait (UBaseType_t uxIndexToWait, uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t * pulNotificationValue, TickType_t xTicksToWait)
  1090. {
  1091. BaseType_t xReturn;
  1092. struct TCB_t * pxCurrentTCB.146_1;
  1093. unsigned char _2;
  1094. long unsigned int _3;
  1095. long unsigned int _4;
  1096. long unsigned int _5;
  1097. struct TCB_t * pxCurrentTCB.148_6;
  1098. volatile uint32_t * _7;
  1099. struct TCB_t * pxCurrentTCB.149_8;
  1100. long unsigned int _9;
  1101. struct TCB_t * pxCurrentTCB.150_10;
  1102. unsigned char _11;
  1103. long unsigned int _12;
  1104. long unsigned int _13;
  1105. long unsigned int _14;
  1106. struct TCB_t * pxCurrentTCB.152_15;
  1107. struct TCB_t * pxCurrentTCB.147_23;
  1108. struct TCB_t * pxCurrentTCB.151_36;
  1109. BaseType_t _43;
  1110. <bb 2> :
  1111. # DEBUG BEGIN_STMT
  1112. # DEBUG BEGIN_STMT
  1113. if (uxIndexToWait_20(D) != 0)
  1114. goto <bb 3>; [INV]
  1115. else
  1116. goto <bb 5>; [INV]
  1117. <bb 3> :
  1118. # DEBUG BEGIN_STMT
  1119. vPortRaiseBASEPRI ();
  1120. <bb 4> :
  1121. # DEBUG BEGIN_STMT
  1122. # DEBUG BEGIN_STMT
  1123. # DEBUG BEGIN_STMT
  1124. goto <bb 4>; [INV]
  1125. <bb 5> :
  1126. # DEBUG BEGIN_STMT
  1127. # DEBUG BEGIN_STMT
  1128. vPortEnterCritical ();
  1129. # DEBUG BEGIN_STMT
  1130. pxCurrentTCB.146_1 ={v} pxCurrentTCB;
  1131. _2 ={v} pxCurrentTCB.146_1->ucNotifyState[uxIndexToWait_20(D)];
  1132. if (_2 != 2)
  1133. goto <bb 6>; [INV]
  1134. else
  1135. goto <bb 8>; [INV]
  1136. <bb 6> :
  1137. # DEBUG BEGIN_STMT
  1138. pxCurrentTCB.147_23 ={v} pxCurrentTCB;
  1139. _3 ={v} pxCurrentTCB.147_23->ulNotifiedValue[uxIndexToWait_20(D)];
  1140. _4 = ~ulBitsToClearOnEntry_24(D);
  1141. _5 = _3 & _4;
  1142. pxCurrentTCB.147_23->ulNotifiedValue[uxIndexToWait_20(D)] ={v} _5;
  1143. # DEBUG BEGIN_STMT
  1144. pxCurrentTCB.148_6 ={v} pxCurrentTCB;
  1145. pxCurrentTCB.148_6->ucNotifyState[uxIndexToWait_20(D)] ={v} 1;
  1146. # DEBUG BEGIN_STMT
  1147. if (xTicksToWait_27(D) != 0)
  1148. goto <bb 7>; [INV]
  1149. else
  1150. goto <bb 8>; [INV]
  1151. <bb 7> :
  1152. # DEBUG BEGIN_STMT
  1153. prvAddCurrentTaskToDelayedList (xTicksToWait_27(D), 1);
  1154. # DEBUG BEGIN_STMT
  1155. # DEBUG BEGIN_STMT
  1156. _7 = 3758157060B;
  1157. *_7 ={v} 268435456;
  1158. # DEBUG BEGIN_STMT
  1159. __asm__ __volatile__("dsb" : : : "memory");
  1160. # DEBUG BEGIN_STMT
  1161. __asm__ __volatile__("isb");
  1162. # DEBUG BEGIN_STMT
  1163. <bb 8> :
  1164. # DEBUG BEGIN_STMT
  1165. # DEBUG BEGIN_STMT
  1166. vPortExitCritical ();
  1167. # DEBUG BEGIN_STMT
  1168. vPortEnterCritical ();
  1169. # DEBUG BEGIN_STMT
  1170. # DEBUG BEGIN_STMT
  1171. if (pulNotificationValue_34(D) != 0B)
  1172. goto <bb 9>; [INV]
  1173. else
  1174. goto <bb 10>; [INV]
  1175. <bb 9> :
  1176. # DEBUG BEGIN_STMT
  1177. pxCurrentTCB.149_8 ={v} pxCurrentTCB;
  1178. _9 ={v} pxCurrentTCB.149_8->ulNotifiedValue[uxIndexToWait_20(D)];
  1179. *pulNotificationValue_34(D) = _9;
  1180. <bb 10> :
  1181. # DEBUG BEGIN_STMT
  1182. pxCurrentTCB.150_10 ={v} pxCurrentTCB;
  1183. _11 ={v} pxCurrentTCB.150_10->ucNotifyState[uxIndexToWait_20(D)];
  1184. if (_11 != 2)
  1185. goto <bb 11>; [INV]
  1186. else
  1187. goto <bb 12>; [INV]
  1188. <bb 11> :
  1189. # DEBUG BEGIN_STMT
  1190. xReturn_40 = 0;
  1191. # DEBUG xReturn => xReturn_40
  1192. goto <bb 13>; [INV]
  1193. <bb 12> :
  1194. # DEBUG BEGIN_STMT
  1195. pxCurrentTCB.151_36 ={v} pxCurrentTCB;
  1196. _12 ={v} pxCurrentTCB.151_36->ulNotifiedValue[uxIndexToWait_20(D)];
  1197. _13 = ~ulBitsToClearOnExit_37(D);
  1198. _14 = _12 & _13;
  1199. pxCurrentTCB.151_36->ulNotifiedValue[uxIndexToWait_20(D)] ={v} _14;
  1200. # DEBUG BEGIN_STMT
  1201. xReturn_39 = 1;
  1202. # DEBUG xReturn => xReturn_39
  1203. <bb 13> :
  1204. # xReturn_16 = PHI <xReturn_40(11), xReturn_39(12)>
  1205. # DEBUG xReturn => xReturn_16
  1206. # DEBUG BEGIN_STMT
  1207. pxCurrentTCB.152_15 ={v} pxCurrentTCB;
  1208. pxCurrentTCB.152_15->ucNotifyState[uxIndexToWait_20(D)] ={v} 0;
  1209. # DEBUG BEGIN_STMT
  1210. vPortExitCritical ();
  1211. # DEBUG BEGIN_STMT
  1212. _43 = xReturn_16;
  1213. return _43;
  1214. }
  1215. ulTaskGenericNotifyTake (UBaseType_t uxIndexToWait, BaseType_t xClearCountOnExit, TickType_t xTicksToWait)
  1216. {
  1217. uint32_t ulReturn;
  1218. struct TCB_t * pxCurrentTCB.140_1;
  1219. long unsigned int _2;
  1220. struct TCB_t * pxCurrentTCB.141_3;
  1221. volatile uint32_t * _4;
  1222. struct TCB_t * pxCurrentTCB.142_5;
  1223. struct TCB_t * pxCurrentTCB.143_6;
  1224. struct TCB_t * pxCurrentTCB.144_7;
  1225. long unsigned int _8;
  1226. struct TCB_t * pxCurrentTCB.145_9;
  1227. uint32_t _29;
  1228. <bb 2> :
  1229. # DEBUG BEGIN_STMT
  1230. # DEBUG BEGIN_STMT
  1231. if (uxIndexToWait_12(D) != 0)
  1232. goto <bb 3>; [INV]
  1233. else
  1234. goto <bb 5>; [INV]
  1235. <bb 3> :
  1236. # DEBUG BEGIN_STMT
  1237. vPortRaiseBASEPRI ();
  1238. <bb 4> :
  1239. # DEBUG BEGIN_STMT
  1240. # DEBUG BEGIN_STMT
  1241. # DEBUG BEGIN_STMT
  1242. goto <bb 4>; [INV]
  1243. <bb 5> :
  1244. # DEBUG BEGIN_STMT
  1245. # DEBUG BEGIN_STMT
  1246. vPortEnterCritical ();
  1247. # DEBUG BEGIN_STMT
  1248. pxCurrentTCB.140_1 ={v} pxCurrentTCB;
  1249. _2 ={v} pxCurrentTCB.140_1->ulNotifiedValue[uxIndexToWait_12(D)];
  1250. if (_2 == 0)
  1251. goto <bb 6>; [INV]
  1252. else
  1253. goto <bb 8>; [INV]
  1254. <bb 6> :
  1255. # DEBUG BEGIN_STMT
  1256. pxCurrentTCB.141_3 ={v} pxCurrentTCB;
  1257. pxCurrentTCB.141_3->ucNotifyState[uxIndexToWait_12(D)] ={v} 1;
  1258. # DEBUG BEGIN_STMT
  1259. if (xTicksToWait_16(D) != 0)
  1260. goto <bb 7>; [INV]
  1261. else
  1262. goto <bb 8>; [INV]
  1263. <bb 7> :
  1264. # DEBUG BEGIN_STMT
  1265. prvAddCurrentTaskToDelayedList (xTicksToWait_16(D), 1);
  1266. # DEBUG BEGIN_STMT
  1267. # DEBUG BEGIN_STMT
  1268. _4 = 3758157060B;
  1269. *_4 ={v} 268435456;
  1270. # DEBUG BEGIN_STMT
  1271. __asm__ __volatile__("dsb" : : : "memory");
  1272. # DEBUG BEGIN_STMT
  1273. __asm__ __volatile__("isb");
  1274. # DEBUG BEGIN_STMT
  1275. <bb 8> :
  1276. # DEBUG BEGIN_STMT
  1277. # DEBUG BEGIN_STMT
  1278. vPortExitCritical ();
  1279. # DEBUG BEGIN_STMT
  1280. vPortEnterCritical ();
  1281. # DEBUG BEGIN_STMT
  1282. # DEBUG BEGIN_STMT
  1283. pxCurrentTCB.142_5 ={v} pxCurrentTCB;
  1284. ulReturn_23 ={v} pxCurrentTCB.142_5->ulNotifiedValue[uxIndexToWait_12(D)];
  1285. # DEBUG ulReturn => ulReturn_23
  1286. # DEBUG BEGIN_STMT
  1287. if (ulReturn_23 != 0)
  1288. goto <bb 9>; [INV]
  1289. else
  1290. goto <bb 12>; [INV]
  1291. <bb 9> :
  1292. # DEBUG BEGIN_STMT
  1293. if (xClearCountOnExit_24(D) != 0)
  1294. goto <bb 10>; [INV]
  1295. else
  1296. goto <bb 11>; [INV]
  1297. <bb 10> :
  1298. # DEBUG BEGIN_STMT
  1299. pxCurrentTCB.143_6 ={v} pxCurrentTCB;
  1300. pxCurrentTCB.143_6->ulNotifiedValue[uxIndexToWait_12(D)] ={v} 0;
  1301. goto <bb 12>; [INV]
  1302. <bb 11> :
  1303. # DEBUG BEGIN_STMT
  1304. pxCurrentTCB.144_7 ={v} pxCurrentTCB;
  1305. _8 = ulReturn_23 + 4294967295;
  1306. pxCurrentTCB.144_7->ulNotifiedValue[uxIndexToWait_12(D)] ={v} _8;
  1307. <bb 12> :
  1308. # DEBUG BEGIN_STMT
  1309. # DEBUG BEGIN_STMT
  1310. pxCurrentTCB.145_9 ={v} pxCurrentTCB;
  1311. pxCurrentTCB.145_9->ucNotifyState[uxIndexToWait_12(D)] ={v} 0;
  1312. # DEBUG BEGIN_STMT
  1313. vPortExitCritical ();
  1314. # DEBUG BEGIN_STMT
  1315. _29 = ulReturn_23;
  1316. return _29;
  1317. }
  1318. pvTaskIncrementMutexHeldCount ()
  1319. {
  1320. struct TCB_t * pxCurrentTCB.138_1;
  1321. struct TCB_t * pxCurrentTCB.139_2;
  1322. long unsigned int _3;
  1323. long unsigned int _4;
  1324. struct tskTaskControlBlock * _8;
  1325. <bb 2> :
  1326. # DEBUG BEGIN_STMT
  1327. pxCurrentTCB.138_1 ={v} pxCurrentTCB;
  1328. if (pxCurrentTCB.138_1 != 0B)
  1329. goto <bb 3>; [INV]
  1330. else
  1331. goto <bb 4>; [INV]
  1332. <bb 3> :
  1333. # DEBUG BEGIN_STMT
  1334. pxCurrentTCB.139_2 ={v} pxCurrentTCB;
  1335. _3 = pxCurrentTCB.139_2->uxMutexesHeld;
  1336. _4 = _3 + 1;
  1337. pxCurrentTCB.139_2->uxMutexesHeld = _4;
  1338. <bb 4> :
  1339. # DEBUG BEGIN_STMT
  1340. _8 ={v} pxCurrentTCB;
  1341. return _8;
  1342. }
  1343. uxTaskResetEventItemValue ()
  1344. {
  1345. TickType_t uxReturn;
  1346. struct TCB_t * pxCurrentTCB.135_1;
  1347. struct TCB_t * pxCurrentTCB.136_2;
  1348. long unsigned int _3;
  1349. struct TCB_t * pxCurrentTCB.137_4;
  1350. long unsigned int _5;
  1351. TickType_t _9;
  1352. <bb 2> :
  1353. # DEBUG BEGIN_STMT
  1354. # DEBUG BEGIN_STMT
  1355. pxCurrentTCB.135_1 ={v} pxCurrentTCB;
  1356. uxReturn_7 = pxCurrentTCB.135_1->xEventListItem.xItemValue;
  1357. # DEBUG uxReturn => uxReturn_7
  1358. # DEBUG BEGIN_STMT
  1359. pxCurrentTCB.136_2 ={v} pxCurrentTCB;
  1360. _3 = pxCurrentTCB.136_2->uxPriority;
  1361. pxCurrentTCB.137_4 ={v} pxCurrentTCB;
  1362. _5 = 5 - _3;
  1363. pxCurrentTCB.137_4->xEventListItem.xItemValue = _5;
  1364. # DEBUG BEGIN_STMT
  1365. _9 = uxReturn_7;
  1366. return _9;
  1367. }
  1368. vTaskList (char * pcWriteBuffer)
  1369. {
  1370. char cStatus;
  1371. UBaseType_t x;
  1372. UBaseType_t uxArraySize;
  1373. struct TaskStatus_t * pxTaskStatusArray;
  1374. long unsigned int uxCurrentNumberOfTasks.134_1;
  1375. long unsigned int _2;
  1376. long unsigned int _3;
  1377. struct TaskStatus_t * _4;
  1378. <unnamed type> _5;
  1379. long unsigned int _6;
  1380. struct TaskStatus_t * _7;
  1381. const char * _8;
  1382. int _9;
  1383. long unsigned int _10;
  1384. struct TaskStatus_t * _11;
  1385. long unsigned int _12;
  1386. long unsigned int _13;
  1387. struct TaskStatus_t * _14;
  1388. short unsigned int _15;
  1389. unsigned int _16;
  1390. long unsigned int _17;
  1391. struct TaskStatus_t * _18;
  1392. long unsigned int _19;
  1393. unsigned int _20;
  1394. <bb 2> :
  1395. # DEBUG BEGIN_STMT
  1396. # DEBUG BEGIN_STMT
  1397. # DEBUG BEGIN_STMT
  1398. # DEBUG BEGIN_STMT
  1399. *pcWriteBuffer_27(D) = 0;
  1400. # DEBUG BEGIN_STMT
  1401. uxArraySize_29 ={v} uxCurrentNumberOfTasks;
  1402. # DEBUG uxArraySize => uxArraySize_29
  1403. # DEBUG BEGIN_STMT
  1404. uxCurrentNumberOfTasks.134_1 ={v} uxCurrentNumberOfTasks;
  1405. _2 = uxCurrentNumberOfTasks.134_1 * 36;
  1406. pxTaskStatusArray_31 = pvPortMalloc (_2);
  1407. # DEBUG pxTaskStatusArray => pxTaskStatusArray_31
  1408. # DEBUG BEGIN_STMT
  1409. if (pxTaskStatusArray_31 != 0B)
  1410. goto <bb 3>; [INV]
  1411. else
  1412. goto <bb 14>; [INV]
  1413. <bb 3> :
  1414. # DEBUG BEGIN_STMT
  1415. uxArraySize_33 = uxTaskGetSystemState (pxTaskStatusArray_31, uxArraySize_29, 0B);
  1416. # DEBUG uxArraySize => uxArraySize_33
  1417. # DEBUG BEGIN_STMT
  1418. x_34 = 0;
  1419. # DEBUG x => x_34
  1420. goto <bb 12>; [INV]
  1421. <bb 4> :
  1422. # DEBUG BEGIN_STMT
  1423. _3 = x_22 * 36;
  1424. _4 = pxTaskStatusArray_31 + _3;
  1425. _5 = _4->eCurrentState;
  1426. switch (_5) <default: <L7> [INV], case 0: <L2> [INV], case 1: <L3> [INV], case 2: <L4> [INV], case 3: <L5> [INV], case 4: <L6> [INV]>
  1427. <bb 5> :
  1428. <L2>:
  1429. # DEBUG BEGIN_STMT
  1430. cStatus_40 = 88;
  1431. # DEBUG cStatus => cStatus_40
  1432. # DEBUG BEGIN_STMT
  1433. goto <bb 11>; [INV]
  1434. <bb 6> :
  1435. <L3>:
  1436. # DEBUG BEGIN_STMT
  1437. cStatus_39 = 82;
  1438. # DEBUG cStatus => cStatus_39
  1439. # DEBUG BEGIN_STMT
  1440. goto <bb 11>; [INV]
  1441. <bb 7> :
  1442. <L4>:
  1443. # DEBUG BEGIN_STMT
  1444. cStatus_38 = 66;
  1445. # DEBUG cStatus => cStatus_38
  1446. # DEBUG BEGIN_STMT
  1447. goto <bb 11>; [INV]
  1448. <bb 8> :
  1449. <L5>:
  1450. # DEBUG BEGIN_STMT
  1451. cStatus_37 = 83;
  1452. # DEBUG cStatus => cStatus_37
  1453. # DEBUG BEGIN_STMT
  1454. goto <bb 11>; [INV]
  1455. <bb 9> :
  1456. <L6>:
  1457. # DEBUG BEGIN_STMT
  1458. cStatus_36 = 68;
  1459. # DEBUG cStatus => cStatus_36
  1460. # DEBUG BEGIN_STMT
  1461. goto <bb 11>; [INV]
  1462. <bb 10> :
  1463. <L7>:
  1464. # DEBUG BEGIN_STMT
  1465. cStatus_41 = 0;
  1466. # DEBUG cStatus => cStatus_41
  1467. # DEBUG BEGIN_STMT
  1468. <bb 11> :
  1469. # cStatus_23 = PHI <cStatus_40(5), cStatus_39(6), cStatus_38(7), cStatus_37(8), cStatus_36(9), cStatus_41(10)>
  1470. # DEBUG cStatus => cStatus_23
  1471. # DEBUG BEGIN_STMT
  1472. _6 = x_22 * 36;
  1473. _7 = pxTaskStatusArray_31 + _6;
  1474. _8 = _7->pcTaskName;
  1475. pcWriteBuffer_43 = prvWriteNameToBuffer (pcWriteBuffer_21, _8);
  1476. # DEBUG pcWriteBuffer => pcWriteBuffer_43
  1477. # DEBUG BEGIN_STMT
  1478. _9 = (int) cStatus_23;
  1479. _10 = x_22 * 36;
  1480. _11 = pxTaskStatusArray_31 + _10;
  1481. _12 = _11->uxCurrentPriority;
  1482. _13 = x_22 * 36;
  1483. _14 = pxTaskStatusArray_31 + _13;
  1484. _15 = _14->usStackHighWaterMark;
  1485. _16 = (unsigned int) _15;
  1486. _17 = x_22 * 36;
  1487. _18 = pxTaskStatusArray_31 + _17;
  1488. _19 = _18->xTaskNumber;
  1489. sprintf (pcWriteBuffer_43, "\t%c\t%u\t%u\t%u\r\n", _9, _12, _16, _19);
  1490. # DEBUG BEGIN_STMT
  1491. _20 = strlen (pcWriteBuffer_43);
  1492. pcWriteBuffer_45 = pcWriteBuffer_43 + _20;
  1493. # DEBUG pcWriteBuffer => pcWriteBuffer_45
  1494. # DEBUG BEGIN_STMT
  1495. x_46 = x_22 + 1;
  1496. # DEBUG x => x_46
  1497. <bb 12> :
  1498. # pcWriteBuffer_21 = PHI <pcWriteBuffer_27(D)(3), pcWriteBuffer_45(11)>
  1499. # x_22 = PHI <x_34(3), x_46(11)>
  1500. # DEBUG x => x_22
  1501. # DEBUG pcWriteBuffer => pcWriteBuffer_21
  1502. # DEBUG BEGIN_STMT
  1503. if (x_22 < uxArraySize_33)
  1504. goto <bb 4>; [INV]
  1505. else
  1506. goto <bb 13>; [INV]
  1507. <bb 13> :
  1508. # DEBUG BEGIN_STMT
  1509. vPortFree (pxTaskStatusArray_31);
  1510. <bb 14> :
  1511. # DEBUG BEGIN_STMT
  1512. return;
  1513. }
  1514. prvWriteNameToBuffer (char * pcBuffer, const char * pcTaskName)
  1515. {
  1516. size_t x;
  1517. char * _1;
  1518. char * _2;
  1519. char * _11;
  1520. <bb 2> :
  1521. # DEBUG BEGIN_STMT
  1522. # DEBUG BEGIN_STMT
  1523. strcpy (pcBuffer_6(D), pcTaskName_7(D));
  1524. # DEBUG BEGIN_STMT
  1525. x_9 = strlen (pcBuffer_6(D));
  1526. # DEBUG x => x_9
  1527. goto <bb 4>; [INV]
  1528. <bb 3> :
  1529. # DEBUG BEGIN_STMT
  1530. _1 = pcBuffer_6(D) + x_3;
  1531. *_1 = 32;
  1532. # DEBUG BEGIN_STMT
  1533. x_13 = x_3 + 1;
  1534. # DEBUG x => x_13
  1535. <bb 4> :
  1536. # x_3 = PHI <x_9(2), x_13(3)>
  1537. # DEBUG x => x_3
  1538. # DEBUG BEGIN_STMT
  1539. if (x_3 <= 8)
  1540. goto <bb 3>; [INV]
  1541. else
  1542. goto <bb 5>; [INV]
  1543. <bb 5> :
  1544. # DEBUG BEGIN_STMT
  1545. _2 = pcBuffer_6(D) + x_3;
  1546. *_2 = 0;
  1547. # DEBUG BEGIN_STMT
  1548. _11 = pcBuffer_6(D) + x_3;
  1549. return _11;
  1550. }
  1551. vTaskPriorityDisinheritAfterTimeout (struct tskTaskControlBlock * const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask)
  1552. {
  1553. struct ListItem_t * const pxIndex;
  1554. const UBaseType_t uxOnlyOneMutexHeld;
  1555. UBaseType_t uxPriorityToUse;
  1556. UBaseType_t uxPriorityUsedOnEntry;
  1557. struct TCB_t * const pxTCB;
  1558. long unsigned int _1;
  1559. long unsigned int _2;
  1560. long unsigned int _3;
  1561. long unsigned int _4;
  1562. struct TCB_t * pxCurrentTCB.132_5;
  1563. long unsigned int _6;
  1564. signed int _7;
  1565. long unsigned int _8;
  1566. struct xLIST * _9;
  1567. struct List_t * _10;
  1568. struct ListItem_t * _11;
  1569. long unsigned int _12;
  1570. long unsigned int _13;
  1571. long unsigned int uxTopReadyPriority.133_14;
  1572. long unsigned int _15;
  1573. long unsigned int _16;
  1574. struct xLIST_ITEM * _17;
  1575. struct xLIST_ITEM * _18;
  1576. struct ListItem_t * _19;
  1577. struct ListItem_t * _20;
  1578. long unsigned int _21;
  1579. struct List_t * _22;
  1580. long unsigned int _23;
  1581. long unsigned int _24;
  1582. long unsigned int _25;
  1583. <bb 2> :
  1584. # DEBUG BEGIN_STMT
  1585. pxTCB_31 = pxMutexHolder_30(D);
  1586. # DEBUG pxTCB => pxTCB_31
  1587. # DEBUG BEGIN_STMT
  1588. # DEBUG BEGIN_STMT
  1589. uxOnlyOneMutexHeld_32 = 1;
  1590. # DEBUG uxOnlyOneMutexHeld => uxOnlyOneMutexHeld_32
  1591. # DEBUG BEGIN_STMT
  1592. if (pxMutexHolder_30(D) != 0B)
  1593. goto <bb 3>; [INV]
  1594. else
  1595. goto <bb 20>; [INV]
  1596. <bb 3> :
  1597. # DEBUG BEGIN_STMT
  1598. _1 = pxTCB_31->uxMutexesHeld;
  1599. if (_1 == 0)
  1600. goto <bb 4>; [INV]
  1601. else
  1602. goto <bb 6>; [INV]
  1603. <bb 4> :
  1604. # DEBUG BEGIN_STMT
  1605. vPortRaiseBASEPRI ();
  1606. <bb 5> :
  1607. # DEBUG BEGIN_STMT
  1608. # DEBUG BEGIN_STMT
  1609. # DEBUG BEGIN_STMT
  1610. goto <bb 5>; [INV]
  1611. <bb 6> :
  1612. # DEBUG BEGIN_STMT
  1613. # DEBUG BEGIN_STMT
  1614. _2 = pxTCB_31->uxBasePriority;
  1615. if (uxHighestPriorityWaitingTask_34(D) > _2)
  1616. goto <bb 7>; [INV]
  1617. else
  1618. goto <bb 8>; [INV]
  1619. <bb 7> :
  1620. # DEBUG BEGIN_STMT
  1621. uxPriorityToUse_36 = uxHighestPriorityWaitingTask_34(D);
  1622. # DEBUG uxPriorityToUse => uxPriorityToUse_36
  1623. goto <bb 9>; [INV]
  1624. <bb 8> :
  1625. # DEBUG BEGIN_STMT
  1626. uxPriorityToUse_35 = pxTCB_31->uxBasePriority;
  1627. # DEBUG uxPriorityToUse => uxPriorityToUse_35
  1628. <bb 9> :
  1629. # uxPriorityToUse_26 = PHI <uxPriorityToUse_36(7), uxPriorityToUse_35(8)>
  1630. # DEBUG uxPriorityToUse => uxPriorityToUse_26
  1631. # DEBUG BEGIN_STMT
  1632. _3 = pxTCB_31->uxPriority;
  1633. if (uxPriorityToUse_26 != _3)
  1634. goto <bb 10>; [INV]
  1635. else
  1636. goto <bb 20>; [INV]
  1637. <bb 10> :
  1638. # DEBUG BEGIN_STMT
  1639. _4 = pxTCB_31->uxMutexesHeld;
  1640. if (_4 == 1)
  1641. goto <bb 11>; [INV]
  1642. else
  1643. goto <bb 20>; [INV]
  1644. <bb 11> :
  1645. # DEBUG BEGIN_STMT
  1646. pxCurrentTCB.132_5 ={v} pxCurrentTCB;
  1647. if (pxTCB_31 == pxCurrentTCB.132_5)
  1648. goto <bb 12>; [INV]
  1649. else
  1650. goto <bb 14>; [INV]
  1651. <bb 12> :
  1652. # DEBUG BEGIN_STMT
  1653. vPortRaiseBASEPRI ();
  1654. <bb 13> :
  1655. # DEBUG BEGIN_STMT
  1656. # DEBUG BEGIN_STMT
  1657. # DEBUG BEGIN_STMT
  1658. goto <bb 13>; [INV]
  1659. <bb 14> :
  1660. # DEBUG BEGIN_STMT
  1661. # DEBUG BEGIN_STMT
  1662. # DEBUG BEGIN_STMT
  1663. uxPriorityUsedOnEntry_37 = pxTCB_31->uxPriority;
  1664. # DEBUG uxPriorityUsedOnEntry => uxPriorityUsedOnEntry_37
  1665. # DEBUG BEGIN_STMT
  1666. pxTCB_31->uxPriority = uxPriorityToUse_26;
  1667. # DEBUG BEGIN_STMT
  1668. _6 = pxTCB_31->xEventListItem.xItemValue;
  1669. _7 = (signed int) _6;
  1670. if (_7 >= 0)
  1671. goto <bb 15>; [INV]
  1672. else
  1673. goto <bb 16>; [INV]
  1674. <bb 15> :
  1675. # DEBUG BEGIN_STMT
  1676. _8 = 5 - uxPriorityToUse_26;
  1677. pxTCB_31->xEventListItem.xItemValue = _8;
  1678. <bb 16> :
  1679. # DEBUG BEGIN_STMT
  1680. # DEBUG BEGIN_STMT
  1681. _9 = pxTCB_31->xStateListItem.pvContainer;
  1682. _10 = &pxReadyTasksLists[uxPriorityUsedOnEntry_37];
  1683. if (_9 == _10)
  1684. goto <bb 17>; [INV]
  1685. else
  1686. goto <bb 20>; [INV]
  1687. <bb 17> :
  1688. # DEBUG BEGIN_STMT
  1689. _11 = &pxTCB_31->xStateListItem;
  1690. _12 = uxListRemove (_11);
  1691. # DEBUG BEGIN_STMT
  1692. # DEBUG BEGIN_STMT
  1693. # DEBUG BEGIN_STMT
  1694. _13 = pxTCB_31->uxPriority;
  1695. uxTopReadyPriority.133_14 ={v} uxTopReadyPriority;
  1696. if (_13 > uxTopReadyPriority.133_14)
  1697. goto <bb 18>; [INV]
  1698. else
  1699. goto <bb 19>; [INV]
  1700. <bb 18> :
  1701. # DEBUG BEGIN_STMT
  1702. _15 = pxTCB_31->uxPriority;
  1703. uxTopReadyPriority ={v} _15;
  1704. <bb 19> :
  1705. # DEBUG BEGIN_STMT
  1706. # DEBUG BEGIN_STMT
  1707. _16 = pxTCB_31->uxPriority;
  1708. pxIndex_42 = pxReadyTasksLists[_16].pxIndex;
  1709. # DEBUG pxIndex => pxIndex_42
  1710. # DEBUG BEGIN_STMT
  1711. # DEBUG BEGIN_STMT
  1712. # DEBUG BEGIN_STMT
  1713. pxTCB_31->xStateListItem.pxNext = pxIndex_42;
  1714. # DEBUG BEGIN_STMT
  1715. _17 = pxIndex_42->pxPrevious;
  1716. pxTCB_31->xStateListItem.pxPrevious = _17;
  1717. # DEBUG BEGIN_STMT
  1718. _18 = pxIndex_42->pxPrevious;
  1719. _19 = &pxTCB_31->xStateListItem;
  1720. _18->pxNext = _19;
  1721. # DEBUG BEGIN_STMT
  1722. _20 = &pxTCB_31->xStateListItem;
  1723. pxIndex_42->pxPrevious = _20;
  1724. # DEBUG BEGIN_STMT
  1725. _21 = pxTCB_31->uxPriority;
  1726. _22 = &pxReadyTasksLists[_21];
  1727. pxTCB_31->xStateListItem.pvContainer = _22;
  1728. # DEBUG BEGIN_STMT
  1729. _23 = pxTCB_31->uxPriority;
  1730. _24 ={v} pxReadyTasksLists[_23].uxNumberOfItems;
  1731. _25 = _24 + 1;
  1732. pxReadyTasksLists[_23].uxNumberOfItems ={v} _25;
  1733. # DEBUG BEGIN_STMT
  1734. # DEBUG BEGIN_STMT
  1735. <bb 20> :
  1736. # DEBUG BEGIN_STMT
  1737. return;
  1738. }
  1739. xTaskPriorityDisinherit (struct tskTaskControlBlock * const pxMutexHolder)
  1740. {
  1741. struct ListItem_t * const pxIndex;
  1742. BaseType_t xReturn;
  1743. struct TCB_t * const pxTCB;
  1744. struct TCB_t * pxCurrentTCB.130_1;
  1745. long unsigned int _2;
  1746. long unsigned int _3;
  1747. long unsigned int _4;
  1748. long unsigned int _5;
  1749. long unsigned int _6;
  1750. long unsigned int _7;
  1751. struct ListItem_t * _8;
  1752. long unsigned int _9;
  1753. long unsigned int _10;
  1754. long unsigned int _11;
  1755. long unsigned int _12;
  1756. long unsigned int _13;
  1757. long unsigned int uxTopReadyPriority.131_14;
  1758. long unsigned int _15;
  1759. long unsigned int _16;
  1760. struct xLIST_ITEM * _17;
  1761. struct xLIST_ITEM * _18;
  1762. struct ListItem_t * _19;
  1763. struct ListItem_t * _20;
  1764. long unsigned int _21;
  1765. struct List_t * _22;
  1766. long unsigned int _23;
  1767. long unsigned int _24;
  1768. long unsigned int _25;
  1769. BaseType_t _48;
  1770. <bb 2> :
  1771. # DEBUG BEGIN_STMT
  1772. pxTCB_30 = pxMutexHolder_29(D);
  1773. # DEBUG pxTCB => pxTCB_30
  1774. # DEBUG BEGIN_STMT
  1775. xReturn_31 = 0;
  1776. # DEBUG xReturn => xReturn_31
  1777. # DEBUG BEGIN_STMT
  1778. if (pxMutexHolder_29(D) != 0B)
  1779. goto <bb 3>; [INV]
  1780. else
  1781. goto <bb 14>; [INV]
  1782. <bb 3> :
  1783. # DEBUG BEGIN_STMT
  1784. pxCurrentTCB.130_1 ={v} pxCurrentTCB;
  1785. if (pxTCB_30 != pxCurrentTCB.130_1)
  1786. goto <bb 4>; [INV]
  1787. else
  1788. goto <bb 6>; [INV]
  1789. <bb 4> :
  1790. # DEBUG BEGIN_STMT
  1791. vPortRaiseBASEPRI ();
  1792. <bb 5> :
  1793. # DEBUG BEGIN_STMT
  1794. # DEBUG BEGIN_STMT
  1795. # DEBUG BEGIN_STMT
  1796. goto <bb 5>; [INV]
  1797. <bb 6> :
  1798. # DEBUG BEGIN_STMT
  1799. # DEBUG BEGIN_STMT
  1800. _2 = pxTCB_30->uxMutexesHeld;
  1801. if (_2 == 0)
  1802. goto <bb 7>; [INV]
  1803. else
  1804. goto <bb 9>; [INV]
  1805. <bb 7> :
  1806. # DEBUG BEGIN_STMT
  1807. vPortRaiseBASEPRI ();
  1808. <bb 8> :
  1809. # DEBUG BEGIN_STMT
  1810. # DEBUG BEGIN_STMT
  1811. # DEBUG BEGIN_STMT
  1812. goto <bb 8>; [INV]
  1813. <bb 9> :
  1814. # DEBUG BEGIN_STMT
  1815. # DEBUG BEGIN_STMT
  1816. _3 = pxTCB_30->uxMutexesHeld;
  1817. _4 = _3 + 4294967295;
  1818. pxTCB_30->uxMutexesHeld = _4;
  1819. # DEBUG BEGIN_STMT
  1820. _5 = pxTCB_30->uxPriority;
  1821. _6 = pxTCB_30->uxBasePriority;
  1822. if (_5 != _6)
  1823. goto <bb 10>; [INV]
  1824. else
  1825. goto <bb 14>; [INV]
  1826. <bb 10> :
  1827. # DEBUG BEGIN_STMT
  1828. _7 = pxTCB_30->uxMutexesHeld;
  1829. if (_7 == 0)
  1830. goto <bb 11>; [INV]
  1831. else
  1832. goto <bb 14>; [INV]
  1833. <bb 11> :
  1834. # DEBUG BEGIN_STMT
  1835. _8 = &pxTCB_30->xStateListItem;
  1836. _9 = uxListRemove (_8);
  1837. # DEBUG BEGIN_STMT
  1838. # DEBUG BEGIN_STMT
  1839. # DEBUG BEGIN_STMT
  1840. _10 = pxTCB_30->uxBasePriority;
  1841. pxTCB_30->uxPriority = _10;
  1842. # DEBUG BEGIN_STMT
  1843. _11 = pxTCB_30->uxPriority;
  1844. _12 = 5 - _11;
  1845. pxTCB_30->xEventListItem.xItemValue = _12;
  1846. # DEBUG BEGIN_STMT
  1847. # DEBUG BEGIN_STMT
  1848. _13 = pxTCB_30->uxPriority;
  1849. uxTopReadyPriority.131_14 ={v} uxTopReadyPriority;
  1850. if (_13 > uxTopReadyPriority.131_14)
  1851. goto <bb 12>; [INV]
  1852. else
  1853. goto <bb 13>; [INV]
  1854. <bb 12> :
  1855. # DEBUG BEGIN_STMT
  1856. _15 = pxTCB_30->uxPriority;
  1857. uxTopReadyPriority ={v} _15;
  1858. <bb 13> :
  1859. # DEBUG BEGIN_STMT
  1860. # DEBUG BEGIN_STMT
  1861. _16 = pxTCB_30->uxPriority;
  1862. pxIndex_38 = pxReadyTasksLists[_16].pxIndex;
  1863. # DEBUG pxIndex => pxIndex_38
  1864. # DEBUG BEGIN_STMT
  1865. # DEBUG BEGIN_STMT
  1866. # DEBUG BEGIN_STMT
  1867. pxTCB_30->xStateListItem.pxNext = pxIndex_38;
  1868. # DEBUG BEGIN_STMT
  1869. _17 = pxIndex_38->pxPrevious;
  1870. pxTCB_30->xStateListItem.pxPrevious = _17;
  1871. # DEBUG BEGIN_STMT
  1872. _18 = pxIndex_38->pxPrevious;
  1873. _19 = &pxTCB_30->xStateListItem;
  1874. _18->pxNext = _19;
  1875. # DEBUG BEGIN_STMT
  1876. _20 = &pxTCB_30->xStateListItem;
  1877. pxIndex_38->pxPrevious = _20;
  1878. # DEBUG BEGIN_STMT
  1879. _21 = pxTCB_30->uxPriority;
  1880. _22 = &pxReadyTasksLists[_21];
  1881. pxTCB_30->xStateListItem.pvContainer = _22;
  1882. # DEBUG BEGIN_STMT
  1883. _23 = pxTCB_30->uxPriority;
  1884. _24 ={v} pxReadyTasksLists[_23].uxNumberOfItems;
  1885. _25 = _24 + 1;
  1886. pxReadyTasksLists[_23].uxNumberOfItems ={v} _25;
  1887. # DEBUG BEGIN_STMT
  1888. # DEBUG BEGIN_STMT
  1889. # DEBUG BEGIN_STMT
  1890. xReturn_45 = 1;
  1891. # DEBUG xReturn => xReturn_45
  1892. <bb 14> :
  1893. # xReturn_26 = PHI <xReturn_31(2), xReturn_45(13), xReturn_31(9), xReturn_31(10)>
  1894. # DEBUG xReturn => xReturn_26
  1895. # DEBUG BEGIN_STMT
  1896. # DEBUG BEGIN_STMT
  1897. _48 = xReturn_26;
  1898. return _48;
  1899. }
  1900. xTaskPriorityInherit (struct tskTaskControlBlock * const pxMutexHolder)
  1901. {
  1902. struct ListItem_t * const pxIndex;
  1903. BaseType_t xReturn;
  1904. struct TCB_t * const pxMutexHolderTCB;
  1905. long unsigned int _1;
  1906. struct TCB_t * pxCurrentTCB.124_2;
  1907. long unsigned int _3;
  1908. long unsigned int _4;
  1909. signed int _5;
  1910. struct TCB_t * pxCurrentTCB.125_6;
  1911. long unsigned int _7;
  1912. long unsigned int _8;
  1913. struct xLIST * _9;
  1914. long unsigned int _10;
  1915. struct List_t * _11;
  1916. struct ListItem_t * _12;
  1917. long unsigned int _13;
  1918. struct TCB_t * pxCurrentTCB.126_14;
  1919. long unsigned int _15;
  1920. long unsigned int _16;
  1921. long unsigned int uxTopReadyPriority.127_17;
  1922. long unsigned int _18;
  1923. long unsigned int _19;
  1924. struct xLIST_ITEM * _20;
  1925. struct xLIST_ITEM * _21;
  1926. struct ListItem_t * _22;
  1927. struct ListItem_t * _23;
  1928. long unsigned int _24;
  1929. struct List_t * _25;
  1930. long unsigned int _26;
  1931. long unsigned int _27;
  1932. long unsigned int _28;
  1933. struct TCB_t * pxCurrentTCB.128_29;
  1934. long unsigned int _30;
  1935. long unsigned int _31;
  1936. struct TCB_t * pxCurrentTCB.129_32;
  1937. long unsigned int _33;
  1938. BaseType_t _57;
  1939. <bb 2> :
  1940. # DEBUG BEGIN_STMT
  1941. pxMutexHolderTCB_40 = pxMutexHolder_39(D);
  1942. # DEBUG pxMutexHolderTCB => pxMutexHolderTCB_40
  1943. # DEBUG BEGIN_STMT
  1944. xReturn_41 = 0;
  1945. # DEBUG xReturn => xReturn_41
  1946. # DEBUG BEGIN_STMT
  1947. if (pxMutexHolder_39(D) != 0B)
  1948. goto <bb 3>; [INV]
  1949. else
  1950. goto <bb 14>; [INV]
  1951. <bb 3> :
  1952. # DEBUG BEGIN_STMT
  1953. _1 = pxMutexHolderTCB_40->uxPriority;
  1954. pxCurrentTCB.124_2 ={v} pxCurrentTCB;
  1955. _3 = pxCurrentTCB.124_2->uxPriority;
  1956. if (_1 < _3)
  1957. goto <bb 4>; [INV]
  1958. else
  1959. goto <bb 12>; [INV]
  1960. <bb 4> :
  1961. # DEBUG BEGIN_STMT
  1962. _4 = pxMutexHolderTCB_40->xEventListItem.xItemValue;
  1963. _5 = (signed int) _4;
  1964. if (_5 >= 0)
  1965. goto <bb 5>; [INV]
  1966. else
  1967. goto <bb 6>; [INV]
  1968. <bb 5> :
  1969. # DEBUG BEGIN_STMT
  1970. pxCurrentTCB.125_6 ={v} pxCurrentTCB;
  1971. _7 = pxCurrentTCB.125_6->uxPriority;
  1972. _8 = 5 - _7;
  1973. pxMutexHolderTCB_40->xEventListItem.xItemValue = _8;
  1974. <bb 6> :
  1975. # DEBUG BEGIN_STMT
  1976. # DEBUG BEGIN_STMT
  1977. _9 = pxMutexHolderTCB_40->xStateListItem.pvContainer;
  1978. _10 = pxMutexHolderTCB_40->uxPriority;
  1979. _11 = &pxReadyTasksLists[_10];
  1980. if (_9 == _11)
  1981. goto <bb 7>; [INV]
  1982. else
  1983. goto <bb 10>; [INV]
  1984. <bb 7> :
  1985. # DEBUG BEGIN_STMT
  1986. _12 = &pxMutexHolderTCB_40->xStateListItem;
  1987. _13 = uxListRemove (_12);
  1988. # DEBUG BEGIN_STMT
  1989. # DEBUG BEGIN_STMT
  1990. pxCurrentTCB.126_14 ={v} pxCurrentTCB;
  1991. _15 = pxCurrentTCB.126_14->uxPriority;
  1992. pxMutexHolderTCB_40->uxPriority = _15;
  1993. # DEBUG BEGIN_STMT
  1994. # DEBUG BEGIN_STMT
  1995. _16 = pxMutexHolderTCB_40->uxPriority;
  1996. uxTopReadyPriority.127_17 ={v} uxTopReadyPriority;
  1997. if (_16 > uxTopReadyPriority.127_17)
  1998. goto <bb 8>; [INV]
  1999. else
  2000. goto <bb 9>; [INV]
  2001. <bb 8> :
  2002. # DEBUG BEGIN_STMT
  2003. _18 = pxMutexHolderTCB_40->uxPriority;
  2004. uxTopReadyPriority ={v} _18;
  2005. <bb 9> :
  2006. # DEBUG BEGIN_STMT
  2007. # DEBUG BEGIN_STMT
  2008. _19 = pxMutexHolderTCB_40->uxPriority;
  2009. pxIndex_49 = pxReadyTasksLists[_19].pxIndex;
  2010. # DEBUG pxIndex => pxIndex_49
  2011. # DEBUG BEGIN_STMT
  2012. # DEBUG BEGIN_STMT
  2013. # DEBUG BEGIN_STMT
  2014. pxMutexHolderTCB_40->xStateListItem.pxNext = pxIndex_49;
  2015. # DEBUG BEGIN_STMT
  2016. _20 = pxIndex_49->pxPrevious;
  2017. pxMutexHolderTCB_40->xStateListItem.pxPrevious = _20;
  2018. # DEBUG BEGIN_STMT
  2019. _21 = pxIndex_49->pxPrevious;
  2020. _22 = &pxMutexHolderTCB_40->xStateListItem;
  2021. _21->pxNext = _22;
  2022. # DEBUG BEGIN_STMT
  2023. _23 = &pxMutexHolderTCB_40->xStateListItem;
  2024. pxIndex_49->pxPrevious = _23;
  2025. # DEBUG BEGIN_STMT
  2026. _24 = pxMutexHolderTCB_40->uxPriority;
  2027. _25 = &pxReadyTasksLists[_24];
  2028. pxMutexHolderTCB_40->xStateListItem.pvContainer = _25;
  2029. # DEBUG BEGIN_STMT
  2030. _26 = pxMutexHolderTCB_40->uxPriority;
  2031. _27 ={v} pxReadyTasksLists[_26].uxNumberOfItems;
  2032. _28 = _27 + 1;
  2033. pxReadyTasksLists[_26].uxNumberOfItems ={v} _28;
  2034. # DEBUG BEGIN_STMT
  2035. # DEBUG BEGIN_STMT
  2036. goto <bb 11>; [INV]
  2037. <bb 10> :
  2038. # DEBUG BEGIN_STMT
  2039. pxCurrentTCB.128_29 ={v} pxCurrentTCB;
  2040. _30 = pxCurrentTCB.128_29->uxPriority;
  2041. pxMutexHolderTCB_40->uxPriority = _30;
  2042. <bb 11> :
  2043. # DEBUG BEGIN_STMT
  2044. # DEBUG BEGIN_STMT
  2045. xReturn_56 = 1;
  2046. # DEBUG xReturn => xReturn_56
  2047. goto <bb 14>; [INV]
  2048. <bb 12> :
  2049. # DEBUG BEGIN_STMT
  2050. _31 = pxMutexHolderTCB_40->uxBasePriority;
  2051. pxCurrentTCB.129_32 ={v} pxCurrentTCB;
  2052. _33 = pxCurrentTCB.129_32->uxPriority;
  2053. if (_31 < _33)
  2054. goto <bb 13>; [INV]
  2055. else
  2056. goto <bb 14>; [INV]
  2057. <bb 13> :
  2058. # DEBUG BEGIN_STMT
  2059. xReturn_43 = 1;
  2060. # DEBUG xReturn => xReturn_43
  2061. <bb 14> :
  2062. # xReturn_34 = PHI <xReturn_41(2), xReturn_41(12), xReturn_56(11), xReturn_43(13)>
  2063. # DEBUG xReturn => xReturn_34
  2064. # DEBUG BEGIN_STMT
  2065. # DEBUG BEGIN_STMT
  2066. _57 = xReturn_34;
  2067. return _57;
  2068. }
  2069. xTaskGetSchedulerState ()
  2070. {
  2071. BaseType_t xReturn;
  2072. long int xSchedulerRunning.122_1;
  2073. long unsigned int uxSchedulerSuspended.123_2;
  2074. BaseType_t _8;
  2075. <bb 2> :
  2076. # DEBUG BEGIN_STMT
  2077. # DEBUG BEGIN_STMT
  2078. xSchedulerRunning.122_1 ={v} xSchedulerRunning;
  2079. if (xSchedulerRunning.122_1 == 0)
  2080. goto <bb 3>; [INV]
  2081. else
  2082. goto <bb 4>; [INV]
  2083. <bb 3> :
  2084. # DEBUG BEGIN_STMT
  2085. xReturn_7 = 1;
  2086. # DEBUG xReturn => xReturn_7
  2087. goto <bb 7>; [INV]
  2088. <bb 4> :
  2089. # DEBUG BEGIN_STMT
  2090. uxSchedulerSuspended.123_2 ={v} uxSchedulerSuspended;
  2091. if (uxSchedulerSuspended.123_2 == 0)
  2092. goto <bb 5>; [INV]
  2093. else
  2094. goto <bb 6>; [INV]
  2095. <bb 5> :
  2096. # DEBUG BEGIN_STMT
  2097. xReturn_6 = 2;
  2098. # DEBUG xReturn => xReturn_6
  2099. goto <bb 7>; [INV]
  2100. <bb 6> :
  2101. # DEBUG BEGIN_STMT
  2102. xReturn_5 = 0;
  2103. # DEBUG xReturn => xReturn_5
  2104. <bb 7> :
  2105. # xReturn_3 = PHI <xReturn_7(3), xReturn_6(5), xReturn_5(6)>
  2106. # DEBUG xReturn => xReturn_3
  2107. # DEBUG BEGIN_STMT
  2108. _8 = xReturn_3;
  2109. return _8;
  2110. }
  2111. xTaskGetCurrentTaskHandle ()
  2112. {
  2113. struct tskTaskControlBlock * xReturn;
  2114. struct tskTaskControlBlock * _3;
  2115. <bb 2> :
  2116. # DEBUG BEGIN_STMT
  2117. # DEBUG BEGIN_STMT
  2118. xReturn_2 ={v} pxCurrentTCB;
  2119. # DEBUG xReturn => xReturn_2
  2120. # DEBUG BEGIN_STMT
  2121. _3 = xReturn_2;
  2122. return _3;
  2123. }
  2124. prvResetNextTaskUnblockTime ()
  2125. {
  2126. struct List_t * pxDelayedTaskList.20_1;
  2127. long unsigned int _2;
  2128. struct List_t * pxDelayedTaskList.21_3;
  2129. struct xLIST_ITEM * _4;
  2130. long unsigned int _5;
  2131. <bb 2> :
  2132. # DEBUG BEGIN_STMT
  2133. pxDelayedTaskList.20_1 ={v} pxDelayedTaskList;
  2134. _2 ={v} pxDelayedTaskList.20_1->uxNumberOfItems;
  2135. if (_2 == 0)
  2136. goto <bb 3>; [INV]
  2137. else
  2138. goto <bb 4>; [INV]
  2139. <bb 3> :
  2140. # DEBUG BEGIN_STMT
  2141. xNextTaskUnblockTime ={v} 4294967295;
  2142. goto <bb 5>; [INV]
  2143. <bb 4> :
  2144. # DEBUG BEGIN_STMT
  2145. pxDelayedTaskList.21_3 ={v} pxDelayedTaskList;
  2146. _4 = pxDelayedTaskList.21_3->xListEnd.pxNext;
  2147. _5 = _4->xItemValue;
  2148. xNextTaskUnblockTime ={v} _5;
  2149. <bb 5> :
  2150. return;
  2151. }
  2152. prvDeleteTCB (struct TCB_t * pxTCB)
  2153. {
  2154. StackType_t * _1;
  2155. <bb 2> :
  2156. # DEBUG BEGIN_STMT
  2157. # DEBUG BEGIN_STMT
  2158. _1 = pxTCB_3(D)->pxStack;
  2159. vPortFree (_1);
  2160. # DEBUG BEGIN_STMT
  2161. vPortFree (pxTCB_3(D));
  2162. return;
  2163. }
  2164. uxTaskGetStackHighWaterMark (struct tskTaskControlBlock * xTask)
  2165. {
  2166. UBaseType_t uxReturn;
  2167. uint8_t * pucEndOfStack;
  2168. struct TCB_t * pxTCB;
  2169. short unsigned int _1;
  2170. struct TCB_t * iftmp.121_2;
  2171. struct TCB_t * iftmp.121_4;
  2172. struct TCB_t * iftmp.121_6;
  2173. UBaseType_t _11;
  2174. <bb 2> :
  2175. # DEBUG BEGIN_STMT
  2176. # DEBUG BEGIN_STMT
  2177. # DEBUG BEGIN_STMT
  2178. # DEBUG BEGIN_STMT
  2179. if (xTask_3(D) == 0B)
  2180. goto <bb 3>; [INV]
  2181. else
  2182. goto <bb 4>; [INV]
  2183. <bb 3> :
  2184. iftmp.121_6 ={v} pxCurrentTCB;
  2185. goto <bb 5>; [INV]
  2186. <bb 4> :
  2187. iftmp.121_4 = xTask_3(D);
  2188. <bb 5> :
  2189. # iftmp.121_2 = PHI <iftmp.121_6(3), iftmp.121_4(4)>
  2190. pxTCB_7 = iftmp.121_2;
  2191. # DEBUG pxTCB => pxTCB_7
  2192. # DEBUG BEGIN_STMT
  2193. pucEndOfStack_8 = pxTCB_7->pxStack;
  2194. # DEBUG pucEndOfStack => pucEndOfStack_8
  2195. # DEBUG BEGIN_STMT
  2196. _1 = prvTaskCheckFreeStackSpace (pucEndOfStack_8);
  2197. uxReturn_10 = (UBaseType_t) _1;
  2198. # DEBUG uxReturn => uxReturn_10
  2199. # DEBUG BEGIN_STMT
  2200. _11 = uxReturn_10;
  2201. return _11;
  2202. }
  2203. prvTaskCheckFreeStackSpace (const uint8_t * pucStackByte)
  2204. {
  2205. uint32_t ulCount;
  2206. unsigned char _1;
  2207. uint16_t _8;
  2208. <bb 2> :
  2209. # DEBUG BEGIN_STMT
  2210. ulCount_4 = 0;
  2211. # DEBUG ulCount => ulCount_4
  2212. # DEBUG BEGIN_STMT
  2213. goto <bb 4>; [INV]
  2214. <bb 3> :
  2215. # DEBUG BEGIN_STMT
  2216. pucStackByte_9 = pucStackByte_2 + 1;
  2217. # DEBUG pucStackByte => pucStackByte_9
  2218. # DEBUG BEGIN_STMT
  2219. ulCount_10 = ulCount_3 + 1;
  2220. # DEBUG ulCount => ulCount_10
  2221. <bb 4> :
  2222. # pucStackByte_2 = PHI <pucStackByte_5(D)(2), pucStackByte_9(3)>
  2223. # ulCount_3 = PHI <ulCount_4(2), ulCount_10(3)>
  2224. # DEBUG ulCount => ulCount_3
  2225. # DEBUG pucStackByte => pucStackByte_2
  2226. # DEBUG BEGIN_STMT
  2227. _1 = *pucStackByte_2;
  2228. if (_1 == 165)
  2229. goto <bb 3>; [INV]
  2230. else
  2231. goto <bb 5>; [INV]
  2232. <bb 5> :
  2233. # DEBUG BEGIN_STMT
  2234. ulCount_7 = ulCount_3 / 4;
  2235. # DEBUG ulCount => ulCount_7
  2236. # DEBUG BEGIN_STMT
  2237. _8 = (uint16_t) ulCount_7;
  2238. return _8;
  2239. }
  2240. prvListTasksWithinSingleList (struct TaskStatus_t * pxTaskStatusArray, struct List_t * pxList, eTaskState eState)
  2241. {
  2242. struct List_t * const pxConstList;
  2243. struct List_t * const pxConstList;
  2244. UBaseType_t uxTask;
  2245. struct TCB_t * pxFirstTCB;
  2246. struct TCB_t * pxNextTCB;
  2247. long unsigned int _1;
  2248. struct ListItem_t * _2;
  2249. struct xLIST_ITEM * _3;
  2250. struct ListItem_t * _4;
  2251. struct MiniListItem_t * _5;
  2252. struct ListItem_t * _6;
  2253. struct xLIST_ITEM * _7;
  2254. struct ListItem_t * _8;
  2255. struct ListItem_t * _9;
  2256. struct xLIST_ITEM * _10;
  2257. struct ListItem_t * _11;
  2258. struct MiniListItem_t * _12;
  2259. struct ListItem_t * _13;
  2260. struct xLIST_ITEM * _14;
  2261. struct ListItem_t * _15;
  2262. long unsigned int _16;
  2263. struct TaskStatus_t * _17;
  2264. UBaseType_t _39;
  2265. <bb 2> :
  2266. # DEBUG BEGIN_STMT
  2267. # DEBUG BEGIN_STMT
  2268. uxTask_24 = 0;
  2269. # DEBUG uxTask => uxTask_24
  2270. # DEBUG BEGIN_STMT
  2271. _1 ={v} pxList_26(D)->uxNumberOfItems;
  2272. if (_1 != 0)
  2273. goto <bb 3>; [INV]
  2274. else
  2275. goto <bb 9>; [INV]
  2276. <bb 3> :
  2277. # DEBUG BEGIN_STMT
  2278. pxConstList_27 = pxList_26(D);
  2279. # DEBUG pxConstList => pxConstList_27
  2280. # DEBUG BEGIN_STMT
  2281. _2 = pxConstList_27->pxIndex;
  2282. _3 = _2->pxNext;
  2283. pxConstList_27->pxIndex = _3;
  2284. # DEBUG BEGIN_STMT
  2285. _4 = pxConstList_27->pxIndex;
  2286. _5 = &pxConstList_27->xListEnd;
  2287. if (_4 == _5)
  2288. goto <bb 4>; [INV]
  2289. else
  2290. goto <bb 5>; [INV]
  2291. <bb 4> :
  2292. # DEBUG BEGIN_STMT
  2293. _6 = pxConstList_27->pxIndex;
  2294. _7 = _6->pxNext;
  2295. pxConstList_27->pxIndex = _7;
  2296. <bb 5> :
  2297. # DEBUG BEGIN_STMT
  2298. _8 = pxConstList_27->pxIndex;
  2299. pxFirstTCB_30 = _8->pvOwner;
  2300. # DEBUG pxFirstTCB => pxFirstTCB_30
  2301. <bb 6> :
  2302. # uxTask_18 = PHI <uxTask_24(5), uxTask_38(8)>
  2303. # DEBUG uxTask => uxTask_18
  2304. # DEBUG BEGIN_STMT
  2305. # DEBUG BEGIN_STMT
  2306. # DEBUG BEGIN_STMT
  2307. pxConstList_31 = pxList_26(D);
  2308. # DEBUG pxConstList => pxConstList_31
  2309. # DEBUG BEGIN_STMT
  2310. _9 = pxConstList_31->pxIndex;
  2311. _10 = _9->pxNext;
  2312. pxConstList_31->pxIndex = _10;
  2313. # DEBUG BEGIN_STMT
  2314. _11 = pxConstList_31->pxIndex;
  2315. _12 = &pxConstList_31->xListEnd;
  2316. if (_11 == _12)
  2317. goto <bb 7>; [INV]
  2318. else
  2319. goto <bb 8>; [INV]
  2320. <bb 7> :
  2321. # DEBUG BEGIN_STMT
  2322. _13 = pxConstList_31->pxIndex;
  2323. _14 = _13->pxNext;
  2324. pxConstList_31->pxIndex = _14;
  2325. <bb 8> :
  2326. # DEBUG BEGIN_STMT
  2327. _15 = pxConstList_31->pxIndex;
  2328. pxNextTCB_34 = _15->pvOwner;
  2329. # DEBUG pxNextTCB => pxNextTCB_34
  2330. # DEBUG BEGIN_STMT
  2331. # DEBUG BEGIN_STMT
  2332. _16 = uxTask_18 * 36;
  2333. _17 = pxTaskStatusArray_35(D) + _16;
  2334. vTaskGetInfo (pxNextTCB_34, _17, 1, eState_36(D));
  2335. # DEBUG BEGIN_STMT
  2336. uxTask_38 = uxTask_18 + 1;
  2337. # DEBUG uxTask => uxTask_38
  2338. # DEBUG BEGIN_STMT
  2339. if (pxNextTCB_34 != pxFirstTCB_30)
  2340. goto <bb 6>; [INV]
  2341. else
  2342. goto <bb 9>; [INV]
  2343. <bb 9> :
  2344. # uxTask_19 = PHI <uxTask_24(2), uxTask_38(8)>
  2345. # DEBUG uxTask => uxTask_19
  2346. # DEBUG BEGIN_STMT
  2347. # DEBUG BEGIN_STMT
  2348. _39 = uxTask_19;
  2349. return _39;
  2350. }
  2351. vTaskGetInfo (struct tskTaskControlBlock * xTask, struct TaskStatus_t * pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState)
  2352. {
  2353. struct TCB_t * pxTCB;
  2354. char * _1;
  2355. long unsigned int _2;
  2356. StackType_t * _3;
  2357. long unsigned int _4;
  2358. long unsigned int _5;
  2359. struct TCB_t * pxCurrentTCB.120_6;
  2360. struct xLIST * _7;
  2361. <unnamed type> _8;
  2362. StackType_t * _9;
  2363. short unsigned int _10;
  2364. struct TCB_t * iftmp.119_11;
  2365. struct TCB_t * iftmp.119_16;
  2366. struct TCB_t * iftmp.119_18;
  2367. <bb 2> :
  2368. # DEBUG BEGIN_STMT
  2369. # DEBUG BEGIN_STMT
  2370. if (xTask_15(D) == 0B)
  2371. goto <bb 3>; [INV]
  2372. else
  2373. goto <bb 4>; [INV]
  2374. <bb 3> :
  2375. iftmp.119_18 ={v} pxCurrentTCB;
  2376. goto <bb 5>; [INV]
  2377. <bb 4> :
  2378. iftmp.119_16 = xTask_15(D);
  2379. <bb 5> :
  2380. # iftmp.119_11 = PHI <iftmp.119_18(3), iftmp.119_16(4)>
  2381. pxTCB_19 = iftmp.119_11;
  2382. # DEBUG pxTCB => pxTCB_19
  2383. # DEBUG BEGIN_STMT
  2384. pxTaskStatus_20(D)->xHandle = pxTCB_19;
  2385. # DEBUG BEGIN_STMT
  2386. _1 = &pxTCB_19->pcTaskName[0];
  2387. pxTaskStatus_20(D)->pcTaskName = _1;
  2388. # DEBUG BEGIN_STMT
  2389. _2 = pxTCB_19->uxPriority;
  2390. pxTaskStatus_20(D)->uxCurrentPriority = _2;
  2391. # DEBUG BEGIN_STMT
  2392. _3 = pxTCB_19->pxStack;
  2393. pxTaskStatus_20(D)->pxStackBase = _3;
  2394. # DEBUG BEGIN_STMT
  2395. _4 = pxTCB_19->uxTCBNumber;
  2396. pxTaskStatus_20(D)->xTaskNumber = _4;
  2397. # DEBUG BEGIN_STMT
  2398. _5 = pxTCB_19->uxBasePriority;
  2399. pxTaskStatus_20(D)->uxBasePriority = _5;
  2400. # DEBUG BEGIN_STMT
  2401. pxTaskStatus_20(D)->ulRunTimeCounter = 0;
  2402. # DEBUG BEGIN_STMT
  2403. if (eState_28(D) != 5)
  2404. goto <bb 6>; [INV]
  2405. else
  2406. goto <bb 12>; [INV]
  2407. <bb 6> :
  2408. # DEBUG BEGIN_STMT
  2409. pxCurrentTCB.120_6 ={v} pxCurrentTCB;
  2410. if (pxTCB_19 == pxCurrentTCB.120_6)
  2411. goto <bb 7>; [INV]
  2412. else
  2413. goto <bb 8>; [INV]
  2414. <bb 7> :
  2415. # DEBUG BEGIN_STMT
  2416. pxTaskStatus_20(D)->eCurrentState = 0;
  2417. goto <bb 13>; [INV]
  2418. <bb 8> :
  2419. # DEBUG BEGIN_STMT
  2420. pxTaskStatus_20(D)->eCurrentState = eState_28(D);
  2421. # DEBUG BEGIN_STMT
  2422. if (eState_28(D) == 3)
  2423. goto <bb 9>; [INV]
  2424. else
  2425. goto <bb 13>; [INV]
  2426. <bb 9> :
  2427. # DEBUG BEGIN_STMT
  2428. vTaskSuspendAll ();
  2429. # DEBUG BEGIN_STMT
  2430. _7 = pxTCB_19->xEventListItem.pvContainer;
  2431. if (_7 != 0B)
  2432. goto <bb 10>; [INV]
  2433. else
  2434. goto <bb 11>; [INV]
  2435. <bb 10> :
  2436. # DEBUG BEGIN_STMT
  2437. pxTaskStatus_20(D)->eCurrentState = 2;
  2438. <bb 11> :
  2439. # DEBUG BEGIN_STMT
  2440. xTaskResumeAll ();
  2441. goto <bb 13>; [INV]
  2442. <bb 12> :
  2443. # DEBUG BEGIN_STMT
  2444. _8 = eTaskGetState (pxTCB_19);
  2445. pxTaskStatus_20(D)->eCurrentState = _8;
  2446. <bb 13> :
  2447. # DEBUG BEGIN_STMT
  2448. if (xGetFreeStackSpace_36(D) != 0)
  2449. goto <bb 14>; [INV]
  2450. else
  2451. goto <bb 15>; [INV]
  2452. <bb 14> :
  2453. # DEBUG BEGIN_STMT
  2454. _9 = pxTCB_19->pxStack;
  2455. _10 = prvTaskCheckFreeStackSpace (_9);
  2456. pxTaskStatus_20(D)->usStackHighWaterMark = _10;
  2457. goto <bb 16>; [INV]
  2458. <bb 15> :
  2459. # DEBUG BEGIN_STMT
  2460. pxTaskStatus_20(D)->usStackHighWaterMark = 0;
  2461. <bb 16> :
  2462. return;
  2463. }
  2464. prvCheckTasksWaitingTermination ()
  2465. {
  2466. struct TCB_t * pxTCB;
  2467. struct xLIST_ITEM * _1;
  2468. struct ListItem_t * _2;
  2469. long unsigned int uxCurrentNumberOfTasks.58_3;
  2470. long unsigned int _4;
  2471. long unsigned int uxDeletedTasksWaitingCleanUp.59_5;
  2472. long unsigned int _6;
  2473. long unsigned int uxDeletedTasksWaitingCleanUp.60_7;
  2474. <bb 2> :
  2475. # DEBUG BEGIN_STMT
  2476. # DEBUG BEGIN_STMT
  2477. goto <bb 4>; [INV]
  2478. <bb 3> :
  2479. # DEBUG BEGIN_STMT
  2480. vPortEnterCritical ();
  2481. # DEBUG BEGIN_STMT
  2482. _1 = xTasksWaitingTermination.xListEnd.pxNext;
  2483. pxTCB_11 = _1->pvOwner;
  2484. # DEBUG pxTCB => pxTCB_11
  2485. # DEBUG BEGIN_STMT
  2486. _2 = &pxTCB_11->xStateListItem;
  2487. uxListRemove (_2);
  2488. # DEBUG BEGIN_STMT
  2489. uxCurrentNumberOfTasks.58_3 ={v} uxCurrentNumberOfTasks;
  2490. _4 = uxCurrentNumberOfTasks.58_3 + 4294967295;
  2491. uxCurrentNumberOfTasks ={v} _4;
  2492. # DEBUG BEGIN_STMT
  2493. uxDeletedTasksWaitingCleanUp.59_5 ={v} uxDeletedTasksWaitingCleanUp;
  2494. _6 = uxDeletedTasksWaitingCleanUp.59_5 + 4294967295;
  2495. uxDeletedTasksWaitingCleanUp ={v} _6;
  2496. # DEBUG BEGIN_STMT
  2497. vPortExitCritical ();
  2498. # DEBUG BEGIN_STMT
  2499. prvDeleteTCB (pxTCB_11);
  2500. <bb 4> :
  2501. # DEBUG BEGIN_STMT
  2502. uxDeletedTasksWaitingCleanUp.60_7 ={v} uxDeletedTasksWaitingCleanUp;
  2503. if (uxDeletedTasksWaitingCleanUp.60_7 != 0)
  2504. goto <bb 3>; [INV]
  2505. else
  2506. goto <bb 5>; [INV]
  2507. <bb 5> :
  2508. return;
  2509. }
  2510. prvInitialiseTaskLists ()
  2511. {
  2512. UBaseType_t uxPriority;
  2513. struct List_t * _1;
  2514. <bb 2> :
  2515. # DEBUG BEGIN_STMT
  2516. # DEBUG BEGIN_STMT
  2517. uxPriority_4 = 0;
  2518. # DEBUG uxPriority => uxPriority_4
  2519. goto <bb 4>; [INV]
  2520. <bb 3> :
  2521. # DEBUG BEGIN_STMT
  2522. _1 = &pxReadyTasksLists[uxPriority_2];
  2523. vListInitialise (_1);
  2524. # DEBUG BEGIN_STMT
  2525. uxPriority_14 = uxPriority_2 + 1;
  2526. # DEBUG uxPriority => uxPriority_14
  2527. <bb 4> :
  2528. # uxPriority_2 = PHI <uxPriority_4(2), uxPriority_14(3)>
  2529. # DEBUG uxPriority => uxPriority_2
  2530. # DEBUG BEGIN_STMT
  2531. if (uxPriority_2 <= 4)
  2532. goto <bb 3>; [INV]
  2533. else
  2534. goto <bb 5>; [INV]
  2535. <bb 5> :
  2536. # DEBUG BEGIN_STMT
  2537. vListInitialise (&xDelayedTaskList1);
  2538. # DEBUG BEGIN_STMT
  2539. vListInitialise (&xDelayedTaskList2);
  2540. # DEBUG BEGIN_STMT
  2541. vListInitialise (&xPendingReadyList);
  2542. # DEBUG BEGIN_STMT
  2543. vListInitialise (&xTasksWaitingTermination);
  2544. # DEBUG BEGIN_STMT
  2545. vListInitialise (&xSuspendedTaskList);
  2546. # DEBUG BEGIN_STMT
  2547. pxDelayedTaskList ={v} &xDelayedTaskList1;
  2548. # DEBUG BEGIN_STMT
  2549. pxOverflowDelayedTaskList ={v} &xDelayedTaskList2;
  2550. return;
  2551. }
  2552. prvIdleTask (void * pvParameters)
  2553. {
  2554. long unsigned int _1;
  2555. volatile uint32_t * _2;
  2556. <bb 2> :
  2557. # DEBUG BEGIN_STMT
  2558. # DEBUG BEGIN_STMT
  2559. # DEBUG BEGIN_STMT
  2560. # DEBUG BEGIN_STMT
  2561. prvCheckTasksWaitingTermination ();
  2562. # DEBUG BEGIN_STMT
  2563. _1 ={v} pxReadyTasksLists[0].uxNumberOfItems;
  2564. if (_1 > 1)
  2565. goto <bb 3>; [INV]
  2566. else
  2567. goto <bb 2>; [INV]
  2568. <bb 3> :
  2569. # DEBUG BEGIN_STMT
  2570. _2 = 3758157060B;
  2571. *_2 ={v} 268435456;
  2572. # DEBUG BEGIN_STMT
  2573. __asm__ __volatile__("dsb" : : : "memory");
  2574. # DEBUG BEGIN_STMT
  2575. __asm__ __volatile__("isb");
  2576. # DEBUG BEGIN_STMT
  2577. goto <bb 2>; [INV]
  2578. }
  2579. vTaskSetTaskNumber (struct tskTaskControlBlock * xTask, const UBaseType_t uxHandle)
  2580. {
  2581. struct TCB_t * pxTCB;
  2582. <bb 2> :
  2583. # DEBUG BEGIN_STMT
  2584. # DEBUG BEGIN_STMT
  2585. if (xTask_2(D) != 0B)
  2586. goto <bb 3>; [INV]
  2587. else
  2588. goto <bb 4>; [INV]
  2589. <bb 3> :
  2590. # DEBUG BEGIN_STMT
  2591. pxTCB_4 = xTask_2(D);
  2592. # DEBUG pxTCB => pxTCB_4
  2593. # DEBUG BEGIN_STMT
  2594. pxTCB_4->uxTaskNumber = uxHandle_5(D);
  2595. <bb 4> :
  2596. return;
  2597. }
  2598. uxTaskGetTaskNumber (struct tskTaskControlBlock * xTask)
  2599. {
  2600. const struct TCB_t * pxTCB;
  2601. UBaseType_t uxReturn;
  2602. UBaseType_t _7;
  2603. <bb 2> :
  2604. # DEBUG BEGIN_STMT
  2605. # DEBUG BEGIN_STMT
  2606. # DEBUG BEGIN_STMT
  2607. if (xTask_2(D) != 0B)
  2608. goto <bb 3>; [INV]
  2609. else
  2610. goto <bb 4>; [INV]
  2611. <bb 3> :
  2612. # DEBUG BEGIN_STMT
  2613. pxTCB_4 = xTask_2(D);
  2614. # DEBUG pxTCB => pxTCB_4
  2615. # DEBUG BEGIN_STMT
  2616. uxReturn_6 = pxTCB_4->uxTaskNumber;
  2617. # DEBUG uxReturn => uxReturn_6
  2618. goto <bb 5>; [INV]
  2619. <bb 4> :
  2620. # DEBUG BEGIN_STMT
  2621. uxReturn_3 = 0;
  2622. # DEBUG uxReturn => uxReturn_3
  2623. <bb 5> :
  2624. # uxReturn_1 = PHI <uxReturn_6(3), uxReturn_3(4)>
  2625. # DEBUG uxReturn => uxReturn_1
  2626. # DEBUG BEGIN_STMT
  2627. _7 = uxReturn_1;
  2628. return _7;
  2629. }
  2630. vTaskMissedYield ()
  2631. {
  2632. <bb 2> :
  2633. # DEBUG BEGIN_STMT
  2634. xYieldPending ={v} 1;
  2635. return;
  2636. }
  2637. xTaskCheckForTimeOut (struct TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait)
  2638. {
  2639. const TickType_t xElapsedTime;
  2640. const TickType_t xConstTickCount;
  2641. BaseType_t xReturn;
  2642. long unsigned int _1;
  2643. struct TCB_t * pxCurrentTCB.116_2;
  2644. unsigned char _3;
  2645. struct TCB_t * pxCurrentTCB.117_4;
  2646. long unsigned int _5;
  2647. long int _6;
  2648. long int xNumOfOverflows.118_7;
  2649. long unsigned int _8;
  2650. long unsigned int _9;
  2651. long unsigned int _10;
  2652. long unsigned int _11;
  2653. BaseType_t _31;
  2654. <bb 2> :
  2655. # DEBUG BEGIN_STMT
  2656. # DEBUG BEGIN_STMT
  2657. if (pxTimeOut_14(D) == 0B)
  2658. goto <bb 3>; [INV]
  2659. else
  2660. goto <bb 5>; [INV]
  2661. <bb 3> :
  2662. # DEBUG BEGIN_STMT
  2663. vPortRaiseBASEPRI ();
  2664. <bb 4> :
  2665. # DEBUG BEGIN_STMT
  2666. # DEBUG BEGIN_STMT
  2667. # DEBUG BEGIN_STMT
  2668. goto <bb 4>; [INV]
  2669. <bb 5> :
  2670. # DEBUG BEGIN_STMT
  2671. # DEBUG BEGIN_STMT
  2672. if (pxTicksToWait_15(D) == 0B)
  2673. goto <bb 6>; [INV]
  2674. else
  2675. goto <bb 8>; [INV]
  2676. <bb 6> :
  2677. # DEBUG BEGIN_STMT
  2678. vPortRaiseBASEPRI ();
  2679. <bb 7> :
  2680. # DEBUG BEGIN_STMT
  2681. # DEBUG BEGIN_STMT
  2682. # DEBUG BEGIN_STMT
  2683. goto <bb 7>; [INV]
  2684. <bb 8> :
  2685. # DEBUG BEGIN_STMT
  2686. # DEBUG BEGIN_STMT
  2687. vPortEnterCritical ();
  2688. # DEBUG BEGIN_STMT
  2689. xConstTickCount_18 ={v} xTickCount;
  2690. # DEBUG xConstTickCount => xConstTickCount_18
  2691. # DEBUG BEGIN_STMT
  2692. _1 = pxTimeOut_14(D)->xTimeOnEntering;
  2693. xElapsedTime_19 = xConstTickCount_18 - _1;
  2694. # DEBUG xElapsedTime => xElapsedTime_19
  2695. # DEBUG BEGIN_STMT
  2696. pxCurrentTCB.116_2 ={v} pxCurrentTCB;
  2697. _3 = pxCurrentTCB.116_2->ucDelayAborted;
  2698. if (_3 != 0)
  2699. goto <bb 9>; [INV]
  2700. else
  2701. goto <bb 10>; [INV]
  2702. <bb 9> :
  2703. # DEBUG BEGIN_STMT
  2704. pxCurrentTCB.117_4 ={v} pxCurrentTCB;
  2705. pxCurrentTCB.117_4->ucDelayAborted = 0;
  2706. # DEBUG BEGIN_STMT
  2707. xReturn_29 = 1;
  2708. # DEBUG xReturn => xReturn_29
  2709. goto <bb 18>; [INV]
  2710. <bb 10> :
  2711. # DEBUG BEGIN_STMT
  2712. _5 = *pxTicksToWait_15(D);
  2713. if (_5 == 4294967295)
  2714. goto <bb 11>; [INV]
  2715. else
  2716. goto <bb 12>; [INV]
  2717. <bb 11> :
  2718. # DEBUG BEGIN_STMT
  2719. xReturn_27 = 0;
  2720. # DEBUG xReturn => xReturn_27
  2721. goto <bb 18>; [INV]
  2722. <bb 12> :
  2723. # DEBUG BEGIN_STMT
  2724. _6 = pxTimeOut_14(D)->xOverflowCount;
  2725. xNumOfOverflows.118_7 ={v} xNumOfOverflows;
  2726. if (_6 != xNumOfOverflows.118_7)
  2727. goto <bb 13>; [INV]
  2728. else
  2729. goto <bb 15>; [INV]
  2730. <bb 13> :
  2731. _8 = pxTimeOut_14(D)->xTimeOnEntering;
  2732. if (xConstTickCount_18 >= _8)
  2733. goto <bb 14>; [INV]
  2734. else
  2735. goto <bb 15>; [INV]
  2736. <bb 14> :
  2737. # DEBUG BEGIN_STMT
  2738. xReturn_20 = 1;
  2739. # DEBUG xReturn => xReturn_20
  2740. # DEBUG BEGIN_STMT
  2741. *pxTicksToWait_15(D) = 0;
  2742. goto <bb 18>; [INV]
  2743. <bb 15> :
  2744. # DEBUG BEGIN_STMT
  2745. _9 = *pxTicksToWait_15(D);
  2746. if (xElapsedTime_19 < _9)
  2747. goto <bb 16>; [INV]
  2748. else
  2749. goto <bb 17>; [INV]
  2750. <bb 16> :
  2751. # DEBUG BEGIN_STMT
  2752. _10 = *pxTicksToWait_15(D);
  2753. _11 = _10 - xElapsedTime_19;
  2754. *pxTicksToWait_15(D) = _11;
  2755. # DEBUG BEGIN_STMT
  2756. vTaskInternalSetTimeOutState (pxTimeOut_14(D));
  2757. # DEBUG BEGIN_STMT
  2758. xReturn_26 = 0;
  2759. # DEBUG xReturn => xReturn_26
  2760. goto <bb 18>; [INV]
  2761. <bb 17> :
  2762. # DEBUG BEGIN_STMT
  2763. *pxTicksToWait_15(D) = 0;
  2764. # DEBUG BEGIN_STMT
  2765. xReturn_23 = 1;
  2766. # DEBUG xReturn => xReturn_23
  2767. <bb 18> :
  2768. # xReturn_12 = PHI <xReturn_29(9), xReturn_27(11), xReturn_20(14), xReturn_26(16), xReturn_23(17)>
  2769. # DEBUG xReturn => xReturn_12
  2770. # DEBUG BEGIN_STMT
  2771. vPortExitCritical ();
  2772. # DEBUG BEGIN_STMT
  2773. _31 = xReturn_12;
  2774. return _31;
  2775. }
  2776. vTaskInternalSetTimeOutState (struct TimeOut_t * const pxTimeOut)
  2777. {
  2778. long int xNumOfOverflows.114_1;
  2779. long unsigned int xTickCount.115_2;
  2780. <bb 2> :
  2781. # DEBUG BEGIN_STMT
  2782. xNumOfOverflows.114_1 ={v} xNumOfOverflows;
  2783. pxTimeOut_4(D)->xOverflowCount = xNumOfOverflows.114_1;
  2784. # DEBUG BEGIN_STMT
  2785. xTickCount.115_2 ={v} xTickCount;
  2786. pxTimeOut_4(D)->xTimeOnEntering = xTickCount.115_2;
  2787. return;
  2788. }
  2789. vTaskSetTimeOutState (struct TimeOut_t * const pxTimeOut)
  2790. {
  2791. long int xNumOfOverflows.112_1;
  2792. long unsigned int xTickCount.113_2;
  2793. <bb 2> :
  2794. # DEBUG BEGIN_STMT
  2795. if (pxTimeOut_3(D) == 0B)
  2796. goto <bb 3>; [INV]
  2797. else
  2798. goto <bb 5>; [INV]
  2799. <bb 3> :
  2800. # DEBUG BEGIN_STMT
  2801. vPortRaiseBASEPRI ();
  2802. <bb 4> :
  2803. # DEBUG BEGIN_STMT
  2804. # DEBUG BEGIN_STMT
  2805. # DEBUG BEGIN_STMT
  2806. goto <bb 4>; [INV]
  2807. <bb 5> :
  2808. # DEBUG BEGIN_STMT
  2809. # DEBUG BEGIN_STMT
  2810. vPortEnterCritical ();
  2811. # DEBUG BEGIN_STMT
  2812. xNumOfOverflows.112_1 ={v} xNumOfOverflows;
  2813. pxTimeOut_3(D)->xOverflowCount = xNumOfOverflows.112_1;
  2814. # DEBUG BEGIN_STMT
  2815. xTickCount.113_2 ={v} xTickCount;
  2816. pxTimeOut_3(D)->xTimeOnEntering = xTickCount.113_2;
  2817. # DEBUG BEGIN_STMT
  2818. vPortExitCritical ();
  2819. return;
  2820. }
  2821. vTaskRemoveFromUnorderedEventList (struct ListItem_t * pxEventListItem, const TickType_t xItemValue)
  2822. {
  2823. struct ListItem_t * const pxIndex;
  2824. struct List_t * const pxList;
  2825. struct List_t * const pxList;
  2826. struct TCB_t * pxUnblockedTCB;
  2827. long unsigned int uxSchedulerSuspended.109_1;
  2828. long unsigned int _2;
  2829. struct xLIST_ITEM * _3;
  2830. struct xLIST_ITEM * _4;
  2831. struct xLIST_ITEM * _5;
  2832. struct xLIST_ITEM * _6;
  2833. struct ListItem_t * _7;
  2834. struct xLIST_ITEM * _8;
  2835. long unsigned int _9;
  2836. long unsigned int _10;
  2837. struct xLIST_ITEM * _11;
  2838. struct xLIST_ITEM * _12;
  2839. struct xLIST_ITEM * _13;
  2840. struct xLIST_ITEM * _14;
  2841. struct ListItem_t * _15;
  2842. struct ListItem_t * _16;
  2843. struct xLIST_ITEM * _17;
  2844. long unsigned int _18;
  2845. long unsigned int _19;
  2846. long unsigned int _20;
  2847. long unsigned int uxTopReadyPriority.110_21;
  2848. long unsigned int _22;
  2849. long unsigned int _23;
  2850. struct xLIST_ITEM * _24;
  2851. struct xLIST_ITEM * _25;
  2852. struct ListItem_t * _26;
  2853. struct ListItem_t * _27;
  2854. long unsigned int _28;
  2855. struct List_t * _29;
  2856. long unsigned int _30;
  2857. long unsigned int _31;
  2858. long unsigned int _32;
  2859. long unsigned int _33;
  2860. struct TCB_t * pxCurrentTCB.111_34;
  2861. long unsigned int _35;
  2862. <bb 2> :
  2863. # DEBUG BEGIN_STMT
  2864. # DEBUG BEGIN_STMT
  2865. uxSchedulerSuspended.109_1 ={v} uxSchedulerSuspended;
  2866. if (uxSchedulerSuspended.109_1 == 0)
  2867. goto <bb 3>; [INV]
  2868. else
  2869. goto <bb 5>; [INV]
  2870. <bb 3> :
  2871. # DEBUG BEGIN_STMT
  2872. vPortRaiseBASEPRI ();
  2873. <bb 4> :
  2874. # DEBUG BEGIN_STMT
  2875. # DEBUG BEGIN_STMT
  2876. # DEBUG BEGIN_STMT
  2877. goto <bb 4>; [INV]
  2878. <bb 5> :
  2879. # DEBUG BEGIN_STMT
  2880. # DEBUG BEGIN_STMT
  2881. _2 = xItemValue_41(D) | 2147483648;
  2882. pxEventListItem_42(D)->xItemValue = _2;
  2883. # DEBUG BEGIN_STMT
  2884. pxUnblockedTCB_44 = pxEventListItem_42(D)->pvOwner;
  2885. # DEBUG pxUnblockedTCB => pxUnblockedTCB_44
  2886. # DEBUG BEGIN_STMT
  2887. if (pxUnblockedTCB_44 == 0B)
  2888. goto <bb 6>; [INV]
  2889. else
  2890. goto <bb 8>; [INV]
  2891. <bb 6> :
  2892. # DEBUG BEGIN_STMT
  2893. vPortRaiseBASEPRI ();
  2894. <bb 7> :
  2895. # DEBUG BEGIN_STMT
  2896. # DEBUG BEGIN_STMT
  2897. # DEBUG BEGIN_STMT
  2898. goto <bb 7>; [INV]
  2899. <bb 8> :
  2900. # DEBUG BEGIN_STMT
  2901. # DEBUG BEGIN_STMT
  2902. pxList_45 = pxEventListItem_42(D)->pvContainer;
  2903. # DEBUG pxList => pxList_45
  2904. # DEBUG BEGIN_STMT
  2905. _3 = pxEventListItem_42(D)->pxNext;
  2906. _4 = pxEventListItem_42(D)->pxPrevious;
  2907. _3->pxPrevious = _4;
  2908. # DEBUG BEGIN_STMT
  2909. _5 = pxEventListItem_42(D)->pxPrevious;
  2910. _6 = pxEventListItem_42(D)->pxNext;
  2911. _5->pxNext = _6;
  2912. # DEBUG BEGIN_STMT
  2913. _7 = pxList_45->pxIndex;
  2914. if (pxEventListItem_42(D) == _7)
  2915. goto <bb 9>; [INV]
  2916. else
  2917. goto <bb 10>; [INV]
  2918. <bb 9> :
  2919. # DEBUG BEGIN_STMT
  2920. _8 = pxEventListItem_42(D)->pxPrevious;
  2921. pxList_45->pxIndex = _8;
  2922. <bb 10> :
  2923. # DEBUG BEGIN_STMT
  2924. pxEventListItem_42(D)->pvContainer = 0B;
  2925. # DEBUG BEGIN_STMT
  2926. _9 ={v} pxList_45->uxNumberOfItems;
  2927. _10 = _9 + 4294967295;
  2928. pxList_45->uxNumberOfItems ={v} _10;
  2929. # DEBUG BEGIN_STMT
  2930. # DEBUG BEGIN_STMT
  2931. pxList_51 = pxUnblockedTCB_44->xStateListItem.pvContainer;
  2932. # DEBUG pxList => pxList_51
  2933. # DEBUG BEGIN_STMT
  2934. _11 = pxUnblockedTCB_44->xStateListItem.pxNext;
  2935. _12 = pxUnblockedTCB_44->xStateListItem.pxPrevious;
  2936. _11->pxPrevious = _12;
  2937. # DEBUG BEGIN_STMT
  2938. _13 = pxUnblockedTCB_44->xStateListItem.pxPrevious;
  2939. _14 = pxUnblockedTCB_44->xStateListItem.pxNext;
  2940. _13->pxNext = _14;
  2941. # DEBUG BEGIN_STMT
  2942. _15 = pxList_51->pxIndex;
  2943. _16 = &pxUnblockedTCB_44->xStateListItem;
  2944. if (_15 == _16)
  2945. goto <bb 11>; [INV]
  2946. else
  2947. goto <bb 12>; [INV]
  2948. <bb 11> :
  2949. # DEBUG BEGIN_STMT
  2950. _17 = pxUnblockedTCB_44->xStateListItem.pxPrevious;
  2951. pxList_51->pxIndex = _17;
  2952. <bb 12> :
  2953. # DEBUG BEGIN_STMT
  2954. pxUnblockedTCB_44->xStateListItem.pvContainer = 0B;
  2955. # DEBUG BEGIN_STMT
  2956. _18 ={v} pxList_51->uxNumberOfItems;
  2957. _19 = _18 + 4294967295;
  2958. pxList_51->uxNumberOfItems ={v} _19;
  2959. # DEBUG BEGIN_STMT
  2960. # DEBUG BEGIN_STMT
  2961. # DEBUG BEGIN_STMT
  2962. _20 = pxUnblockedTCB_44->uxPriority;
  2963. uxTopReadyPriority.110_21 ={v} uxTopReadyPriority;
  2964. if (_20 > uxTopReadyPriority.110_21)
  2965. goto <bb 13>; [INV]
  2966. else
  2967. goto <bb 14>; [INV]
  2968. <bb 13> :
  2969. # DEBUG BEGIN_STMT
  2970. _22 = pxUnblockedTCB_44->uxPriority;
  2971. uxTopReadyPriority ={v} _22;
  2972. <bb 14> :
  2973. # DEBUG BEGIN_STMT
  2974. # DEBUG BEGIN_STMT
  2975. _23 = pxUnblockedTCB_44->uxPriority;
  2976. pxIndex_58 = pxReadyTasksLists[_23].pxIndex;
  2977. # DEBUG pxIndex => pxIndex_58
  2978. # DEBUG BEGIN_STMT
  2979. # DEBUG BEGIN_STMT
  2980. # DEBUG BEGIN_STMT
  2981. pxUnblockedTCB_44->xStateListItem.pxNext = pxIndex_58;
  2982. # DEBUG BEGIN_STMT
  2983. _24 = pxIndex_58->pxPrevious;
  2984. pxUnblockedTCB_44->xStateListItem.pxPrevious = _24;
  2985. # DEBUG BEGIN_STMT
  2986. _25 = pxIndex_58->pxPrevious;
  2987. _26 = &pxUnblockedTCB_44->xStateListItem;
  2988. _25->pxNext = _26;
  2989. # DEBUG BEGIN_STMT
  2990. _27 = &pxUnblockedTCB_44->xStateListItem;
  2991. pxIndex_58->pxPrevious = _27;
  2992. # DEBUG BEGIN_STMT
  2993. _28 = pxUnblockedTCB_44->uxPriority;
  2994. _29 = &pxReadyTasksLists[_28];
  2995. pxUnblockedTCB_44->xStateListItem.pvContainer = _29;
  2996. # DEBUG BEGIN_STMT
  2997. _30 = pxUnblockedTCB_44->uxPriority;
  2998. _31 ={v} pxReadyTasksLists[_30].uxNumberOfItems;
  2999. _32 = _31 + 1;
  3000. pxReadyTasksLists[_30].uxNumberOfItems ={v} _32;
  3001. # DEBUG BEGIN_STMT
  3002. # DEBUG BEGIN_STMT
  3003. # DEBUG BEGIN_STMT
  3004. _33 = pxUnblockedTCB_44->uxPriority;
  3005. pxCurrentTCB.111_34 ={v} pxCurrentTCB;
  3006. _35 = pxCurrentTCB.111_34->uxPriority;
  3007. if (_33 > _35)
  3008. goto <bb 15>; [INV]
  3009. else
  3010. goto <bb 16>; [INV]
  3011. <bb 15> :
  3012. # DEBUG BEGIN_STMT
  3013. xYieldPending ={v} 1;
  3014. <bb 16> :
  3015. return;
  3016. }
  3017. xTaskRemoveFromEventList (const struct List_t * const pxEventList)
  3018. {
  3019. struct ListItem_t * const pxIndex;
  3020. struct ListItem_t * const pxIndex;
  3021. struct List_t * const pxList;
  3022. struct List_t * const pxList;
  3023. BaseType_t xReturn;
  3024. struct TCB_t * pxUnblockedTCB;
  3025. struct xLIST_ITEM * _1;
  3026. struct xLIST_ITEM * _2;
  3027. struct xLIST_ITEM * _3;
  3028. struct xLIST_ITEM * _4;
  3029. struct xLIST_ITEM * _5;
  3030. struct ListItem_t * _6;
  3031. struct ListItem_t * _7;
  3032. struct xLIST_ITEM * _8;
  3033. long unsigned int _9;
  3034. long unsigned int _10;
  3035. long unsigned int uxSchedulerSuspended.106_11;
  3036. struct xLIST_ITEM * _12;
  3037. struct xLIST_ITEM * _13;
  3038. struct xLIST_ITEM * _14;
  3039. struct xLIST_ITEM * _15;
  3040. struct ListItem_t * _16;
  3041. struct ListItem_t * _17;
  3042. struct xLIST_ITEM * _18;
  3043. long unsigned int _19;
  3044. long unsigned int _20;
  3045. long unsigned int _21;
  3046. long unsigned int uxTopReadyPriority.107_22;
  3047. long unsigned int _23;
  3048. long unsigned int _24;
  3049. struct xLIST_ITEM * _25;
  3050. struct xLIST_ITEM * _26;
  3051. struct ListItem_t * _27;
  3052. struct ListItem_t * _28;
  3053. long unsigned int _29;
  3054. struct List_t * _30;
  3055. long unsigned int _31;
  3056. long unsigned int _32;
  3057. long unsigned int _33;
  3058. struct xLIST_ITEM * _34;
  3059. struct xLIST_ITEM * _35;
  3060. struct ListItem_t * _36;
  3061. struct ListItem_t * _37;
  3062. long unsigned int _38;
  3063. long unsigned int _39;
  3064. long unsigned int _40;
  3065. struct TCB_t * pxCurrentTCB.108_41;
  3066. long unsigned int _42;
  3067. BaseType_t _82;
  3068. <bb 2> :
  3069. # DEBUG BEGIN_STMT
  3070. # DEBUG BEGIN_STMT
  3071. # DEBUG BEGIN_STMT
  3072. _1 = pxEventList_50(D)->xListEnd.pxNext;
  3073. pxUnblockedTCB_51 = _1->pvOwner;
  3074. # DEBUG pxUnblockedTCB => pxUnblockedTCB_51
  3075. # DEBUG BEGIN_STMT
  3076. if (pxUnblockedTCB_51 == 0B)
  3077. goto <bb 3>; [INV]
  3078. else
  3079. goto <bb 5>; [INV]
  3080. <bb 3> :
  3081. # DEBUG BEGIN_STMT
  3082. vPortRaiseBASEPRI ();
  3083. <bb 4> :
  3084. # DEBUG BEGIN_STMT
  3085. # DEBUG BEGIN_STMT
  3086. # DEBUG BEGIN_STMT
  3087. goto <bb 4>; [INV]
  3088. <bb 5> :
  3089. # DEBUG BEGIN_STMT
  3090. # DEBUG BEGIN_STMT
  3091. pxList_52 = pxUnblockedTCB_51->xEventListItem.pvContainer;
  3092. # DEBUG pxList => pxList_52
  3093. # DEBUG BEGIN_STMT
  3094. _2 = pxUnblockedTCB_51->xEventListItem.pxNext;
  3095. _3 = pxUnblockedTCB_51->xEventListItem.pxPrevious;
  3096. _2->pxPrevious = _3;
  3097. # DEBUG BEGIN_STMT
  3098. _4 = pxUnblockedTCB_51->xEventListItem.pxPrevious;
  3099. _5 = pxUnblockedTCB_51->xEventListItem.pxNext;
  3100. _4->pxNext = _5;
  3101. # DEBUG BEGIN_STMT
  3102. _6 = pxList_52->pxIndex;
  3103. _7 = &pxUnblockedTCB_51->xEventListItem;
  3104. if (_6 == _7)
  3105. goto <bb 6>; [INV]
  3106. else
  3107. goto <bb 7>; [INV]
  3108. <bb 6> :
  3109. # DEBUG BEGIN_STMT
  3110. _8 = pxUnblockedTCB_51->xEventListItem.pxPrevious;
  3111. pxList_52->pxIndex = _8;
  3112. <bb 7> :
  3113. # DEBUG BEGIN_STMT
  3114. pxUnblockedTCB_51->xEventListItem.pvContainer = 0B;
  3115. # DEBUG BEGIN_STMT
  3116. _9 ={v} pxList_52->uxNumberOfItems;
  3117. _10 = _9 + 4294967295;
  3118. pxList_52->uxNumberOfItems ={v} _10;
  3119. # DEBUG BEGIN_STMT
  3120. # DEBUG BEGIN_STMT
  3121. uxSchedulerSuspended.106_11 ={v} uxSchedulerSuspended;
  3122. if (uxSchedulerSuspended.106_11 == 0)
  3123. goto <bb 8>; [INV]
  3124. else
  3125. goto <bb 13>; [INV]
  3126. <bb 8> :
  3127. # DEBUG BEGIN_STMT
  3128. pxList_65 = pxUnblockedTCB_51->xStateListItem.pvContainer;
  3129. # DEBUG pxList => pxList_65
  3130. # DEBUG BEGIN_STMT
  3131. _12 = pxUnblockedTCB_51->xStateListItem.pxNext;
  3132. _13 = pxUnblockedTCB_51->xStateListItem.pxPrevious;
  3133. _12->pxPrevious = _13;
  3134. # DEBUG BEGIN_STMT
  3135. _14 = pxUnblockedTCB_51->xStateListItem.pxPrevious;
  3136. _15 = pxUnblockedTCB_51->xStateListItem.pxNext;
  3137. _14->pxNext = _15;
  3138. # DEBUG BEGIN_STMT
  3139. _16 = pxList_65->pxIndex;
  3140. _17 = &pxUnblockedTCB_51->xStateListItem;
  3141. if (_16 == _17)
  3142. goto <bb 9>; [INV]
  3143. else
  3144. goto <bb 10>; [INV]
  3145. <bb 9> :
  3146. # DEBUG BEGIN_STMT
  3147. _18 = pxUnblockedTCB_51->xStateListItem.pxPrevious;
  3148. pxList_65->pxIndex = _18;
  3149. <bb 10> :
  3150. # DEBUG BEGIN_STMT
  3151. pxUnblockedTCB_51->xStateListItem.pvContainer = 0B;
  3152. # DEBUG BEGIN_STMT
  3153. _19 ={v} pxList_65->uxNumberOfItems;
  3154. _20 = _19 + 4294967295;
  3155. pxList_65->uxNumberOfItems ={v} _20;
  3156. # DEBUG BEGIN_STMT
  3157. # DEBUG BEGIN_STMT
  3158. # DEBUG BEGIN_STMT
  3159. _21 = pxUnblockedTCB_51->uxPriority;
  3160. uxTopReadyPriority.107_22 ={v} uxTopReadyPriority;
  3161. if (_21 > uxTopReadyPriority.107_22)
  3162. goto <bb 11>; [INV]
  3163. else
  3164. goto <bb 12>; [INV]
  3165. <bb 11> :
  3166. # DEBUG BEGIN_STMT
  3167. _23 = pxUnblockedTCB_51->uxPriority;
  3168. uxTopReadyPriority ={v} _23;
  3169. <bb 12> :
  3170. # DEBUG BEGIN_STMT
  3171. # DEBUG BEGIN_STMT
  3172. _24 = pxUnblockedTCB_51->uxPriority;
  3173. pxIndex_72 = pxReadyTasksLists[_24].pxIndex;
  3174. # DEBUG pxIndex => pxIndex_72
  3175. # DEBUG BEGIN_STMT
  3176. # DEBUG BEGIN_STMT
  3177. # DEBUG BEGIN_STMT
  3178. pxUnblockedTCB_51->xStateListItem.pxNext = pxIndex_72;
  3179. # DEBUG BEGIN_STMT
  3180. _25 = pxIndex_72->pxPrevious;
  3181. pxUnblockedTCB_51->xStateListItem.pxPrevious = _25;
  3182. # DEBUG BEGIN_STMT
  3183. _26 = pxIndex_72->pxPrevious;
  3184. _27 = &pxUnblockedTCB_51->xStateListItem;
  3185. _26->pxNext = _27;
  3186. # DEBUG BEGIN_STMT
  3187. _28 = &pxUnblockedTCB_51->xStateListItem;
  3188. pxIndex_72->pxPrevious = _28;
  3189. # DEBUG BEGIN_STMT
  3190. _29 = pxUnblockedTCB_51->uxPriority;
  3191. _30 = &pxReadyTasksLists[_29];
  3192. pxUnblockedTCB_51->xStateListItem.pvContainer = _30;
  3193. # DEBUG BEGIN_STMT
  3194. _31 = pxUnblockedTCB_51->uxPriority;
  3195. _32 ={v} pxReadyTasksLists[_31].uxNumberOfItems;
  3196. _33 = _32 + 1;
  3197. pxReadyTasksLists[_31].uxNumberOfItems ={v} _33;
  3198. # DEBUG BEGIN_STMT
  3199. # DEBUG BEGIN_STMT
  3200. goto <bb 14>; [INV]
  3201. <bb 13> :
  3202. # DEBUG BEGIN_STMT
  3203. pxIndex_58 = xPendingReadyList.pxIndex;
  3204. # DEBUG pxIndex => pxIndex_58
  3205. # DEBUG BEGIN_STMT
  3206. # DEBUG BEGIN_STMT
  3207. # DEBUG BEGIN_STMT
  3208. pxUnblockedTCB_51->xEventListItem.pxNext = pxIndex_58;
  3209. # DEBUG BEGIN_STMT
  3210. _34 = pxIndex_58->pxPrevious;
  3211. pxUnblockedTCB_51->xEventListItem.pxPrevious = _34;
  3212. # DEBUG BEGIN_STMT
  3213. _35 = pxIndex_58->pxPrevious;
  3214. _36 = &pxUnblockedTCB_51->xEventListItem;
  3215. _35->pxNext = _36;
  3216. # DEBUG BEGIN_STMT
  3217. _37 = &pxUnblockedTCB_51->xEventListItem;
  3218. pxIndex_58->pxPrevious = _37;
  3219. # DEBUG BEGIN_STMT
  3220. pxUnblockedTCB_51->xEventListItem.pvContainer = &xPendingReadyList;
  3221. # DEBUG BEGIN_STMT
  3222. _38 ={v} xPendingReadyList.uxNumberOfItems;
  3223. _39 = _38 + 1;
  3224. xPendingReadyList.uxNumberOfItems ={v} _39;
  3225. <bb 14> :
  3226. # DEBUG BEGIN_STMT
  3227. # DEBUG BEGIN_STMT
  3228. _40 = pxUnblockedTCB_51->uxPriority;
  3229. pxCurrentTCB.108_41 ={v} pxCurrentTCB;
  3230. _42 = pxCurrentTCB.108_41->uxPriority;
  3231. if (_40 > _42)
  3232. goto <bb 15>; [INV]
  3233. else
  3234. goto <bb 16>; [INV]
  3235. <bb 15> :
  3236. # DEBUG BEGIN_STMT
  3237. xReturn_80 = 1;
  3238. # DEBUG xReturn => xReturn_80
  3239. # DEBUG BEGIN_STMT
  3240. xYieldPending ={v} 1;
  3241. goto <bb 17>; [INV]
  3242. <bb 16> :
  3243. # DEBUG BEGIN_STMT
  3244. xReturn_79 = 0;
  3245. # DEBUG xReturn => xReturn_79
  3246. <bb 17> :
  3247. # xReturn_43 = PHI <xReturn_80(15), xReturn_79(16)>
  3248. # DEBUG xReturn => xReturn_43
  3249. # DEBUG BEGIN_STMT
  3250. _82 = xReturn_43;
  3251. return _82;
  3252. }
  3253. vTaskPlaceOnEventListRestricted (struct List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely)
  3254. {
  3255. struct ListItem_t * const pxIndex;
  3256. struct TCB_t * pxCurrentTCB.101_1;
  3257. struct TCB_t * pxCurrentTCB.102_2;
  3258. struct xLIST_ITEM * _3;
  3259. struct TCB_t * pxCurrentTCB.103_4;
  3260. struct xLIST_ITEM * _5;
  3261. struct ListItem_t * _6;
  3262. struct TCB_t * pxCurrentTCB.104_7;
  3263. struct ListItem_t * _8;
  3264. struct TCB_t * pxCurrentTCB.105_9;
  3265. long unsigned int _10;
  3266. long unsigned int _11;
  3267. <bb 2> :
  3268. # DEBUG BEGIN_STMT
  3269. if (pxEventList_13(D) == 0B)
  3270. goto <bb 3>; [INV]
  3271. else
  3272. goto <bb 5>; [INV]
  3273. <bb 3> :
  3274. # DEBUG BEGIN_STMT
  3275. vPortRaiseBASEPRI ();
  3276. <bb 4> :
  3277. # DEBUG BEGIN_STMT
  3278. # DEBUG BEGIN_STMT
  3279. # DEBUG BEGIN_STMT
  3280. goto <bb 4>; [INV]
  3281. <bb 5> :
  3282. # DEBUG BEGIN_STMT
  3283. # DEBUG BEGIN_STMT
  3284. pxIndex_15 = pxEventList_13(D)->pxIndex;
  3285. # DEBUG pxIndex => pxIndex_15
  3286. # DEBUG BEGIN_STMT
  3287. # DEBUG BEGIN_STMT
  3288. # DEBUG BEGIN_STMT
  3289. pxCurrentTCB.101_1 ={v} pxCurrentTCB;
  3290. pxCurrentTCB.101_1->xEventListItem.pxNext = pxIndex_15;
  3291. # DEBUG BEGIN_STMT
  3292. pxCurrentTCB.102_2 ={v} pxCurrentTCB;
  3293. _3 = pxIndex_15->pxPrevious;
  3294. pxCurrentTCB.102_2->xEventListItem.pxPrevious = _3;
  3295. # DEBUG BEGIN_STMT
  3296. pxCurrentTCB.103_4 ={v} pxCurrentTCB;
  3297. _5 = pxIndex_15->pxPrevious;
  3298. _6 = &pxCurrentTCB.103_4->xEventListItem;
  3299. _5->pxNext = _6;
  3300. # DEBUG BEGIN_STMT
  3301. pxCurrentTCB.104_7 ={v} pxCurrentTCB;
  3302. _8 = &pxCurrentTCB.104_7->xEventListItem;
  3303. pxIndex_15->pxPrevious = _8;
  3304. # DEBUG BEGIN_STMT
  3305. pxCurrentTCB.105_9 ={v} pxCurrentTCB;
  3306. pxCurrentTCB.105_9->xEventListItem.pvContainer = pxEventList_13(D);
  3307. # DEBUG BEGIN_STMT
  3308. _10 ={v} pxEventList_13(D)->uxNumberOfItems;
  3309. _11 = _10 + 1;
  3310. pxEventList_13(D)->uxNumberOfItems ={v} _11;
  3311. # DEBUG BEGIN_STMT
  3312. # DEBUG BEGIN_STMT
  3313. if (xWaitIndefinitely_22(D) != 0)
  3314. goto <bb 6>; [INV]
  3315. else
  3316. goto <bb 7>; [INV]
  3317. <bb 6> :
  3318. # DEBUG BEGIN_STMT
  3319. xTicksToWait_24 = 4294967295;
  3320. # DEBUG xTicksToWait => xTicksToWait_24
  3321. <bb 7> :
  3322. # xTicksToWait_12 = PHI <xTicksToWait_23(D)(5), xTicksToWait_24(6)>
  3323. # DEBUG xTicksToWait => xTicksToWait_12
  3324. # DEBUG BEGIN_STMT
  3325. # DEBUG BEGIN_STMT
  3326. prvAddCurrentTaskToDelayedList (xTicksToWait_12, xWaitIndefinitely_22(D));
  3327. return;
  3328. }
  3329. vTaskPlaceOnUnorderedEventList (struct List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait)
  3330. {
  3331. struct ListItem_t * const pxIndex;
  3332. long unsigned int uxSchedulerSuspended.94_1;
  3333. struct TCB_t * pxCurrentTCB.95_2;
  3334. long unsigned int _3;
  3335. struct TCB_t * pxCurrentTCB.96_4;
  3336. struct TCB_t * pxCurrentTCB.97_5;
  3337. struct xLIST_ITEM * _6;
  3338. struct TCB_t * pxCurrentTCB.98_7;
  3339. struct xLIST_ITEM * _8;
  3340. struct ListItem_t * _9;
  3341. struct TCB_t * pxCurrentTCB.99_10;
  3342. struct ListItem_t * _11;
  3343. struct TCB_t * pxCurrentTCB.100_12;
  3344. long unsigned int _13;
  3345. long unsigned int _14;
  3346. <bb 2> :
  3347. # DEBUG BEGIN_STMT
  3348. if (pxEventList_15(D) == 0B)
  3349. goto <bb 3>; [INV]
  3350. else
  3351. goto <bb 5>; [INV]
  3352. <bb 3> :
  3353. # DEBUG BEGIN_STMT
  3354. vPortRaiseBASEPRI ();
  3355. <bb 4> :
  3356. # DEBUG BEGIN_STMT
  3357. # DEBUG BEGIN_STMT
  3358. # DEBUG BEGIN_STMT
  3359. goto <bb 4>; [INV]
  3360. <bb 5> :
  3361. # DEBUG BEGIN_STMT
  3362. # DEBUG BEGIN_STMT
  3363. uxSchedulerSuspended.94_1 ={v} uxSchedulerSuspended;
  3364. if (uxSchedulerSuspended.94_1 == 0)
  3365. goto <bb 6>; [INV]
  3366. else
  3367. goto <bb 8>; [INV]
  3368. <bb 6> :
  3369. # DEBUG BEGIN_STMT
  3370. vPortRaiseBASEPRI ();
  3371. <bb 7> :
  3372. # DEBUG BEGIN_STMT
  3373. # DEBUG BEGIN_STMT
  3374. # DEBUG BEGIN_STMT
  3375. goto <bb 7>; [INV]
  3376. <bb 8> :
  3377. # DEBUG BEGIN_STMT
  3378. # DEBUG BEGIN_STMT
  3379. pxCurrentTCB.95_2 ={v} pxCurrentTCB;
  3380. _3 = xItemValue_17(D) | 2147483648;
  3381. pxCurrentTCB.95_2->xEventListItem.xItemValue = _3;
  3382. # DEBUG BEGIN_STMT
  3383. pxIndex_19 = pxEventList_15(D)->pxIndex;
  3384. # DEBUG pxIndex => pxIndex_19
  3385. # DEBUG BEGIN_STMT
  3386. # DEBUG BEGIN_STMT
  3387. # DEBUG BEGIN_STMT
  3388. pxCurrentTCB.96_4 ={v} pxCurrentTCB;
  3389. pxCurrentTCB.96_4->xEventListItem.pxNext = pxIndex_19;
  3390. # DEBUG BEGIN_STMT
  3391. pxCurrentTCB.97_5 ={v} pxCurrentTCB;
  3392. _6 = pxIndex_19->pxPrevious;
  3393. pxCurrentTCB.97_5->xEventListItem.pxPrevious = _6;
  3394. # DEBUG BEGIN_STMT
  3395. pxCurrentTCB.98_7 ={v} pxCurrentTCB;
  3396. _8 = pxIndex_19->pxPrevious;
  3397. _9 = &pxCurrentTCB.98_7->xEventListItem;
  3398. _8->pxNext = _9;
  3399. # DEBUG BEGIN_STMT
  3400. pxCurrentTCB.99_10 ={v} pxCurrentTCB;
  3401. _11 = &pxCurrentTCB.99_10->xEventListItem;
  3402. pxIndex_19->pxPrevious = _11;
  3403. # DEBUG BEGIN_STMT
  3404. pxCurrentTCB.100_12 ={v} pxCurrentTCB;
  3405. pxCurrentTCB.100_12->xEventListItem.pvContainer = pxEventList_15(D);
  3406. # DEBUG BEGIN_STMT
  3407. _13 ={v} pxEventList_15(D)->uxNumberOfItems;
  3408. _14 = _13 + 1;
  3409. pxEventList_15(D)->uxNumberOfItems ={v} _14;
  3410. # DEBUG BEGIN_STMT
  3411. # DEBUG BEGIN_STMT
  3412. prvAddCurrentTaskToDelayedList (xTicksToWait_26(D), 1);
  3413. return;
  3414. }
  3415. vTaskPlaceOnEventList (struct List_t * const pxEventList, const TickType_t xTicksToWait)
  3416. {
  3417. struct TCB_t * pxCurrentTCB.93_1;
  3418. struct ListItem_t * _2;
  3419. <bb 2> :
  3420. # DEBUG BEGIN_STMT
  3421. if (pxEventList_3(D) == 0B)
  3422. goto <bb 3>; [INV]
  3423. else
  3424. goto <bb 5>; [INV]
  3425. <bb 3> :
  3426. # DEBUG BEGIN_STMT
  3427. vPortRaiseBASEPRI ();
  3428. <bb 4> :
  3429. # DEBUG BEGIN_STMT
  3430. # DEBUG BEGIN_STMT
  3431. # DEBUG BEGIN_STMT
  3432. goto <bb 4>; [INV]
  3433. <bb 5> :
  3434. # DEBUG BEGIN_STMT
  3435. # DEBUG BEGIN_STMT
  3436. pxCurrentTCB.93_1 ={v} pxCurrentTCB;
  3437. _2 = &pxCurrentTCB.93_1->xEventListItem;
  3438. vListInsert (pxEventList_3(D), _2);
  3439. # DEBUG BEGIN_STMT
  3440. prvAddCurrentTaskToDelayedList (xTicksToWait_6(D), 1);
  3441. return;
  3442. }
  3443. __attribute__((used))
  3444. vTaskSwitchContext ()
  3445. {
  3446. struct List_t * const pxConstList;
  3447. UBaseType_t uxTopPriority;
  3448. long unsigned int uxSchedulerSuspended.92_1;
  3449. long unsigned int _2;
  3450. struct ListItem_t * _3;
  3451. struct xLIST_ITEM * _4;
  3452. struct ListItem_t * _5;
  3453. struct MiniListItem_t * _6;
  3454. struct ListItem_t * _7;
  3455. struct xLIST_ITEM * _8;
  3456. struct ListItem_t * _9;
  3457. void * _10;
  3458. <bb 2> :
  3459. # DEBUG BEGIN_STMT
  3460. uxSchedulerSuspended.92_1 ={v} uxSchedulerSuspended;
  3461. if (uxSchedulerSuspended.92_1 != 0)
  3462. goto <bb 3>; [INV]
  3463. else
  3464. goto <bb 4>; [INV]
  3465. <bb 3> :
  3466. # DEBUG BEGIN_STMT
  3467. xYieldPending ={v} 1;
  3468. goto <bb 13>; [INV]
  3469. <bb 4> :
  3470. # DEBUG BEGIN_STMT
  3471. xYieldPending ={v} 0;
  3472. # DEBUG BEGIN_STMT
  3473. # DEBUG BEGIN_STMT
  3474. # DEBUG BEGIN_STMT
  3475. uxTopPriority_16 ={v} uxTopReadyPriority;
  3476. # DEBUG uxTopPriority => uxTopPriority_16
  3477. # DEBUG BEGIN_STMT
  3478. goto <bb 9>; [INV]
  3479. <bb 5> :
  3480. # DEBUG BEGIN_STMT
  3481. if (uxTopPriority_11 == 0)
  3482. goto <bb 6>; [INV]
  3483. else
  3484. goto <bb 8>; [INV]
  3485. <bb 6> :
  3486. # DEBUG BEGIN_STMT
  3487. vPortRaiseBASEPRI ();
  3488. <bb 7> :
  3489. # DEBUG BEGIN_STMT
  3490. # DEBUG BEGIN_STMT
  3491. # DEBUG BEGIN_STMT
  3492. goto <bb 7>; [INV]
  3493. <bb 8> :
  3494. # DEBUG BEGIN_STMT
  3495. # DEBUG BEGIN_STMT
  3496. uxTopPriority_22 = uxTopPriority_11 + 4294967295;
  3497. # DEBUG uxTopPriority => uxTopPriority_22
  3498. <bb 9> :
  3499. # uxTopPriority_11 = PHI <uxTopPriority_16(4), uxTopPriority_22(8)>
  3500. # DEBUG uxTopPriority => uxTopPriority_11
  3501. # DEBUG BEGIN_STMT
  3502. _2 ={v} pxReadyTasksLists[uxTopPriority_11].uxNumberOfItems;
  3503. if (_2 == 0)
  3504. goto <bb 5>; [INV]
  3505. else
  3506. goto <bb 10>; [INV]
  3507. <bb 10> :
  3508. # DEBUG BEGIN_STMT
  3509. pxConstList_17 = &pxReadyTasksLists[uxTopPriority_11];
  3510. # DEBUG pxConstList => pxConstList_17
  3511. # DEBUG BEGIN_STMT
  3512. _3 = pxConstList_17->pxIndex;
  3513. _4 = _3->pxNext;
  3514. pxConstList_17->pxIndex = _4;
  3515. # DEBUG BEGIN_STMT
  3516. _5 = pxConstList_17->pxIndex;
  3517. _6 = &pxConstList_17->xListEnd;
  3518. if (_5 == _6)
  3519. goto <bb 11>; [INV]
  3520. else
  3521. goto <bb 12>; [INV]
  3522. <bb 11> :
  3523. # DEBUG BEGIN_STMT
  3524. _7 = pxConstList_17->pxIndex;
  3525. _8 = _7->pxNext;
  3526. pxConstList_17->pxIndex = _8;
  3527. <bb 12> :
  3528. # DEBUG BEGIN_STMT
  3529. _9 = pxConstList_17->pxIndex;
  3530. _10 = _9->pvOwner;
  3531. pxCurrentTCB ={v} _10;
  3532. # DEBUG BEGIN_STMT
  3533. # DEBUG BEGIN_STMT
  3534. uxTopReadyPriority ={v} uxTopPriority_11;
  3535. <bb 13> :
  3536. # DEBUG BEGIN_STMT
  3537. # DEBUG BEGIN_STMT
  3538. return;
  3539. }
  3540. xTaskIncrementTick ()
  3541. {
  3542. struct ListItem_t * const pxIndex;
  3543. struct List_t * const pxList;
  3544. struct List_t * const pxList;
  3545. struct List_t * pxTemp;
  3546. const TickType_t xConstTickCount;
  3547. BaseType_t xSwitchRequired;
  3548. TickType_t xItemValue;
  3549. struct TCB_t * pxTCB;
  3550. long unsigned int uxSchedulerSuspended.79_1;
  3551. long unsigned int xTickCount.80_2;
  3552. struct List_t * pxDelayedTaskList.81_3;
  3553. long unsigned int _4;
  3554. struct List_t * pxOverflowDelayedTaskList.82_5;
  3555. long int xNumOfOverflows.83_6;
  3556. long int _7;
  3557. long unsigned int xNextTaskUnblockTime.84_8;
  3558. struct List_t * pxDelayedTaskList.85_9;
  3559. long unsigned int _10;
  3560. struct List_t * pxDelayedTaskList.86_11;
  3561. struct xLIST_ITEM * _12;
  3562. struct xLIST_ITEM * _13;
  3563. struct xLIST_ITEM * _14;
  3564. struct xLIST_ITEM * _15;
  3565. struct xLIST_ITEM * _16;
  3566. struct ListItem_t * _17;
  3567. struct ListItem_t * _18;
  3568. struct xLIST_ITEM * _19;
  3569. long unsigned int _20;
  3570. long unsigned int _21;
  3571. struct xLIST * _22;
  3572. struct xLIST_ITEM * _23;
  3573. struct xLIST_ITEM * _24;
  3574. struct xLIST_ITEM * _25;
  3575. struct xLIST_ITEM * _26;
  3576. struct ListItem_t * _27;
  3577. struct ListItem_t * _28;
  3578. struct xLIST_ITEM * _29;
  3579. long unsigned int _30;
  3580. long unsigned int _31;
  3581. long unsigned int _32;
  3582. long unsigned int uxTopReadyPriority.87_33;
  3583. long unsigned int _34;
  3584. long unsigned int _35;
  3585. struct xLIST_ITEM * _36;
  3586. struct xLIST_ITEM * _37;
  3587. struct ListItem_t * _38;
  3588. struct ListItem_t * _39;
  3589. long unsigned int _40;
  3590. struct List_t * _41;
  3591. long unsigned int _42;
  3592. long unsigned int _43;
  3593. long unsigned int _44;
  3594. long unsigned int _45;
  3595. struct TCB_t * pxCurrentTCB.88_46;
  3596. long unsigned int _47;
  3597. struct TCB_t * pxCurrentTCB.89_48;
  3598. long unsigned int _49;
  3599. long unsigned int _50;
  3600. long int xYieldPending.90_51;
  3601. long unsigned int xPendedTicks.91_52;
  3602. long unsigned int _53;
  3603. BaseType_t _104;
  3604. <bb 2> :
  3605. # DEBUG BEGIN_STMT
  3606. # DEBUG BEGIN_STMT
  3607. # DEBUG BEGIN_STMT
  3608. xSwitchRequired_66 = 0;
  3609. # DEBUG xSwitchRequired => xSwitchRequired_66
  3610. # DEBUG BEGIN_STMT
  3611. # DEBUG BEGIN_STMT
  3612. uxSchedulerSuspended.79_1 ={v} uxSchedulerSuspended;
  3613. if (uxSchedulerSuspended.79_1 == 0)
  3614. goto <bb 3>; [INV]
  3615. else
  3616. goto <bb 27>; [INV]
  3617. <bb 3> :
  3618. # DEBUG BEGIN_STMT
  3619. xTickCount.80_2 ={v} xTickCount;
  3620. xConstTickCount_69 = xTickCount.80_2 + 1;
  3621. # DEBUG xConstTickCount => xConstTickCount_69
  3622. # DEBUG BEGIN_STMT
  3623. xTickCount ={v} xConstTickCount_69;
  3624. # DEBUG BEGIN_STMT
  3625. if (xConstTickCount_69 == 0)
  3626. goto <bb 4>; [INV]
  3627. else
  3628. goto <bb 8>; [INV]
  3629. <bb 4> :
  3630. # DEBUG BEGIN_STMT
  3631. # DEBUG BEGIN_STMT
  3632. pxDelayedTaskList.81_3 ={v} pxDelayedTaskList;
  3633. _4 ={v} pxDelayedTaskList.81_3->uxNumberOfItems;
  3634. if (_4 != 0)
  3635. goto <bb 5>; [INV]
  3636. else
  3637. goto <bb 7>; [INV]
  3638. <bb 5> :
  3639. # DEBUG BEGIN_STMT
  3640. vPortRaiseBASEPRI ();
  3641. <bb 6> :
  3642. # DEBUG BEGIN_STMT
  3643. # DEBUG BEGIN_STMT
  3644. # DEBUG BEGIN_STMT
  3645. goto <bb 6>; [INV]
  3646. <bb 7> :
  3647. # DEBUG BEGIN_STMT
  3648. # DEBUG BEGIN_STMT
  3649. pxTemp_71 ={v} pxDelayedTaskList;
  3650. # DEBUG pxTemp => pxTemp_71
  3651. # DEBUG BEGIN_STMT
  3652. pxOverflowDelayedTaskList.82_5 ={v} pxOverflowDelayedTaskList;
  3653. pxDelayedTaskList ={v} pxOverflowDelayedTaskList.82_5;
  3654. # DEBUG BEGIN_STMT
  3655. pxOverflowDelayedTaskList ={v} pxTemp_71;
  3656. # DEBUG BEGIN_STMT
  3657. xNumOfOverflows.83_6 ={v} xNumOfOverflows;
  3658. _7 = xNumOfOverflows.83_6 + 1;
  3659. xNumOfOverflows ={v} _7;
  3660. # DEBUG BEGIN_STMT
  3661. prvResetNextTaskUnblockTime ();
  3662. # DEBUG BEGIN_STMT
  3663. <bb 8> :
  3664. # DEBUG BEGIN_STMT
  3665. # DEBUG BEGIN_STMT
  3666. xNextTaskUnblockTime.84_8 ={v} xNextTaskUnblockTime;
  3667. if (xConstTickCount_69 >= xNextTaskUnblockTime.84_8)
  3668. goto <bb 9>; [INV]
  3669. else
  3670. goto <bb 23>; [INV]
  3671. <bb 9> :
  3672. # xSwitchRequired_54 = PHI <xSwitchRequired_66(8), xSwitchRequired_99(22), xSwitchRequired_54(21)>
  3673. # DEBUG xSwitchRequired => xSwitchRequired_54
  3674. # DEBUG BEGIN_STMT
  3675. # DEBUG BEGIN_STMT
  3676. pxDelayedTaskList.85_9 ={v} pxDelayedTaskList;
  3677. _10 ={v} pxDelayedTaskList.85_9->uxNumberOfItems;
  3678. if (_10 == 0)
  3679. goto <bb 10>; [INV]
  3680. else
  3681. goto <bb 11>; [INV]
  3682. <bb 10> :
  3683. # DEBUG BEGIN_STMT
  3684. xNextTaskUnblockTime ={v} 4294967295;
  3685. # DEBUG BEGIN_STMT
  3686. goto <bb 23>; [INV]
  3687. <bb 11> :
  3688. # DEBUG BEGIN_STMT
  3689. pxDelayedTaskList.86_11 ={v} pxDelayedTaskList;
  3690. _12 = pxDelayedTaskList.86_11->xListEnd.pxNext;
  3691. pxTCB_77 = _12->pvOwner;
  3692. # DEBUG pxTCB => pxTCB_77
  3693. # DEBUG BEGIN_STMT
  3694. xItemValue_78 = pxTCB_77->xStateListItem.xItemValue;
  3695. # DEBUG xItemValue => xItemValue_78
  3696. # DEBUG BEGIN_STMT
  3697. if (xConstTickCount_69 < xItemValue_78)
  3698. goto <bb 12>; [INV]
  3699. else
  3700. goto <bb 13>; [INV]
  3701. <bb 12> :
  3702. # DEBUG BEGIN_STMT
  3703. xNextTaskUnblockTime ={v} xItemValue_78;
  3704. # DEBUG BEGIN_STMT
  3705. goto <bb 23>; [INV]
  3706. <bb 13> :
  3707. # DEBUG BEGIN_STMT
  3708. # DEBUG BEGIN_STMT
  3709. pxList_79 = pxTCB_77->xStateListItem.pvContainer;
  3710. # DEBUG pxList => pxList_79
  3711. # DEBUG BEGIN_STMT
  3712. _13 = pxTCB_77->xStateListItem.pxNext;
  3713. _14 = pxTCB_77->xStateListItem.pxPrevious;
  3714. _13->pxPrevious = _14;
  3715. # DEBUG BEGIN_STMT
  3716. _15 = pxTCB_77->xStateListItem.pxPrevious;
  3717. _16 = pxTCB_77->xStateListItem.pxNext;
  3718. _15->pxNext = _16;
  3719. # DEBUG BEGIN_STMT
  3720. _17 = pxList_79->pxIndex;
  3721. _18 = &pxTCB_77->xStateListItem;
  3722. if (_17 == _18)
  3723. goto <bb 14>; [INV]
  3724. else
  3725. goto <bb 15>; [INV]
  3726. <bb 14> :
  3727. # DEBUG BEGIN_STMT
  3728. _19 = pxTCB_77->xStateListItem.pxPrevious;
  3729. pxList_79->pxIndex = _19;
  3730. <bb 15> :
  3731. # DEBUG BEGIN_STMT
  3732. pxTCB_77->xStateListItem.pvContainer = 0B;
  3733. # DEBUG BEGIN_STMT
  3734. _20 ={v} pxList_79->uxNumberOfItems;
  3735. _21 = _20 + 4294967295;
  3736. pxList_79->uxNumberOfItems ={v} _21;
  3737. # DEBUG BEGIN_STMT
  3738. # DEBUG BEGIN_STMT
  3739. _22 = pxTCB_77->xEventListItem.pvContainer;
  3740. if (_22 != 0B)
  3741. goto <bb 16>; [INV]
  3742. else
  3743. goto <bb 19>; [INV]
  3744. <bb 16> :
  3745. # DEBUG BEGIN_STMT
  3746. pxList_85 = pxTCB_77->xEventListItem.pvContainer;
  3747. # DEBUG pxList => pxList_85
  3748. # DEBUG BEGIN_STMT
  3749. _23 = pxTCB_77->xEventListItem.pxNext;
  3750. _24 = pxTCB_77->xEventListItem.pxPrevious;
  3751. _23->pxPrevious = _24;
  3752. # DEBUG BEGIN_STMT
  3753. _25 = pxTCB_77->xEventListItem.pxPrevious;
  3754. _26 = pxTCB_77->xEventListItem.pxNext;
  3755. _25->pxNext = _26;
  3756. # DEBUG BEGIN_STMT
  3757. _27 = pxList_85->pxIndex;
  3758. _28 = &pxTCB_77->xEventListItem;
  3759. if (_27 == _28)
  3760. goto <bb 17>; [INV]
  3761. else
  3762. goto <bb 18>; [INV]
  3763. <bb 17> :
  3764. # DEBUG BEGIN_STMT
  3765. _29 = pxTCB_77->xEventListItem.pxPrevious;
  3766. pxList_85->pxIndex = _29;
  3767. <bb 18> :
  3768. # DEBUG BEGIN_STMT
  3769. pxTCB_77->xEventListItem.pvContainer = 0B;
  3770. # DEBUG BEGIN_STMT
  3771. _30 ={v} pxList_85->uxNumberOfItems;
  3772. _31 = _30 + 4294967295;
  3773. pxList_85->uxNumberOfItems ={v} _31;
  3774. # DEBUG BEGIN_STMT
  3775. <bb 19> :
  3776. # DEBUG BEGIN_STMT
  3777. # DEBUG BEGIN_STMT
  3778. # DEBUG BEGIN_STMT
  3779. _32 = pxTCB_77->uxPriority;
  3780. uxTopReadyPriority.87_33 ={v} uxTopReadyPriority;
  3781. if (_32 > uxTopReadyPriority.87_33)
  3782. goto <bb 20>; [INV]
  3783. else
  3784. goto <bb 21>; [INV]
  3785. <bb 20> :
  3786. # DEBUG BEGIN_STMT
  3787. _34 = pxTCB_77->uxPriority;
  3788. uxTopReadyPriority ={v} _34;
  3789. <bb 21> :
  3790. # DEBUG BEGIN_STMT
  3791. # DEBUG BEGIN_STMT
  3792. _35 = pxTCB_77->uxPriority;
  3793. pxIndex_92 = pxReadyTasksLists[_35].pxIndex;
  3794. # DEBUG pxIndex => pxIndex_92
  3795. # DEBUG BEGIN_STMT
  3796. # DEBUG BEGIN_STMT
  3797. # DEBUG BEGIN_STMT
  3798. pxTCB_77->xStateListItem.pxNext = pxIndex_92;
  3799. # DEBUG BEGIN_STMT
  3800. _36 = pxIndex_92->pxPrevious;
  3801. pxTCB_77->xStateListItem.pxPrevious = _36;
  3802. # DEBUG BEGIN_STMT
  3803. _37 = pxIndex_92->pxPrevious;
  3804. _38 = &pxTCB_77->xStateListItem;
  3805. _37->pxNext = _38;
  3806. # DEBUG BEGIN_STMT
  3807. _39 = &pxTCB_77->xStateListItem;
  3808. pxIndex_92->pxPrevious = _39;
  3809. # DEBUG BEGIN_STMT
  3810. _40 = pxTCB_77->uxPriority;
  3811. _41 = &pxReadyTasksLists[_40];
  3812. pxTCB_77->xStateListItem.pvContainer = _41;
  3813. # DEBUG BEGIN_STMT
  3814. _42 = pxTCB_77->uxPriority;
  3815. _43 ={v} pxReadyTasksLists[_42].uxNumberOfItems;
  3816. _44 = _43 + 1;
  3817. pxReadyTasksLists[_42].uxNumberOfItems ={v} _44;
  3818. # DEBUG BEGIN_STMT
  3819. # DEBUG BEGIN_STMT
  3820. # DEBUG BEGIN_STMT
  3821. _45 = pxTCB_77->uxPriority;
  3822. pxCurrentTCB.88_46 ={v} pxCurrentTCB;
  3823. _47 = pxCurrentTCB.88_46->uxPriority;
  3824. if (_45 >= _47)
  3825. goto <bb 22>; [INV]
  3826. else
  3827. goto <bb 9>; [INV]
  3828. <bb 22> :
  3829. # DEBUG BEGIN_STMT
  3830. xSwitchRequired_99 = 1;
  3831. # DEBUG xSwitchRequired => xSwitchRequired_99
  3832. goto <bb 9>; [INV]
  3833. <bb 23> :
  3834. # xSwitchRequired_55 = PHI <xSwitchRequired_66(8), xSwitchRequired_54(10), xSwitchRequired_54(12)>
  3835. # DEBUG xSwitchRequired => xSwitchRequired_55
  3836. # DEBUG BEGIN_STMT
  3837. pxCurrentTCB.89_48 ={v} pxCurrentTCB;
  3838. _49 = pxCurrentTCB.89_48->uxPriority;
  3839. _50 ={v} pxReadyTasksLists[_49].uxNumberOfItems;
  3840. if (_50 > 1)
  3841. goto <bb 24>; [INV]
  3842. else
  3843. goto <bb 25>; [INV]
  3844. <bb 24> :
  3845. # DEBUG BEGIN_STMT
  3846. xSwitchRequired_102 = 1;
  3847. # DEBUG xSwitchRequired => xSwitchRequired_102
  3848. <bb 25> :
  3849. # xSwitchRequired_56 = PHI <xSwitchRequired_55(23), xSwitchRequired_102(24)>
  3850. # DEBUG xSwitchRequired => xSwitchRequired_56
  3851. # DEBUG BEGIN_STMT
  3852. # DEBUG BEGIN_STMT
  3853. xYieldPending.90_51 ={v} xYieldPending;
  3854. if (xYieldPending.90_51 != 0)
  3855. goto <bb 26>; [INV]
  3856. else
  3857. goto <bb 28>; [INV]
  3858. <bb 26> :
  3859. # DEBUG BEGIN_STMT
  3860. xSwitchRequired_103 = 1;
  3861. # DEBUG xSwitchRequired => xSwitchRequired_103
  3862. goto <bb 28>; [INV]
  3863. <bb 27> :
  3864. # DEBUG BEGIN_STMT
  3865. xPendedTicks.91_52 ={v} xPendedTicks;
  3866. _53 = xPendedTicks.91_52 + 1;
  3867. xPendedTicks ={v} _53;
  3868. <bb 28> :
  3869. # xSwitchRequired_57 = PHI <xSwitchRequired_103(26), xSwitchRequired_66(27), xSwitchRequired_56(25)>
  3870. # DEBUG xSwitchRequired => xSwitchRequired_57
  3871. # DEBUG BEGIN_STMT
  3872. _104 = xSwitchRequired_57;
  3873. return _104;
  3874. }
  3875. xTaskAbortDelay (struct tskTaskControlBlock * xTask)
  3876. {
  3877. struct ListItem_t * const pxIndex;
  3878. BaseType_t xReturn;
  3879. struct TCB_t * pxTCB;
  3880. <unnamed type> _1;
  3881. struct ListItem_t * _2;
  3882. struct xLIST * _3;
  3883. struct ListItem_t * _4;
  3884. long unsigned int _5;
  3885. long unsigned int uxTopReadyPriority.77_6;
  3886. long unsigned int _7;
  3887. long unsigned int _8;
  3888. struct xLIST_ITEM * _9;
  3889. struct xLIST_ITEM * _10;
  3890. struct ListItem_t * _11;
  3891. struct ListItem_t * _12;
  3892. long unsigned int _13;
  3893. struct List_t * _14;
  3894. long unsigned int _15;
  3895. long unsigned int _16;
  3896. long unsigned int _17;
  3897. long unsigned int _18;
  3898. struct TCB_t * pxCurrentTCB.78_19;
  3899. long unsigned int _20;
  3900. BaseType_t _47;
  3901. <bb 2> :
  3902. # DEBUG BEGIN_STMT
  3903. pxTCB_26 = xTask_25(D);
  3904. # DEBUG pxTCB => pxTCB_26
  3905. # DEBUG BEGIN_STMT
  3906. # DEBUG BEGIN_STMT
  3907. if (pxTCB_26 == 0B)
  3908. goto <bb 3>; [INV]
  3909. else
  3910. goto <bb 5>; [INV]
  3911. <bb 3> :
  3912. # DEBUG BEGIN_STMT
  3913. vPortRaiseBASEPRI ();
  3914. <bb 4> :
  3915. # DEBUG BEGIN_STMT
  3916. # DEBUG BEGIN_STMT
  3917. # DEBUG BEGIN_STMT
  3918. goto <bb 4>; [INV]
  3919. <bb 5> :
  3920. # DEBUG BEGIN_STMT
  3921. # DEBUG BEGIN_STMT
  3922. vTaskSuspendAll ();
  3923. # DEBUG BEGIN_STMT
  3924. _1 = eTaskGetState (xTask_25(D));
  3925. if (_1 == 2)
  3926. goto <bb 6>; [INV]
  3927. else
  3928. goto <bb 12>; [INV]
  3929. <bb 6> :
  3930. # DEBUG BEGIN_STMT
  3931. xReturn_31 = 1;
  3932. # DEBUG xReturn => xReturn_31
  3933. # DEBUG BEGIN_STMT
  3934. _2 = &pxTCB_26->xStateListItem;
  3935. uxListRemove (_2);
  3936. # DEBUG BEGIN_STMT
  3937. vPortEnterCritical ();
  3938. # DEBUG BEGIN_STMT
  3939. _3 = pxTCB_26->xEventListItem.pvContainer;
  3940. if (_3 != 0B)
  3941. goto <bb 7>; [INV]
  3942. else
  3943. goto <bb 8>; [INV]
  3944. <bb 7> :
  3945. # DEBUG BEGIN_STMT
  3946. _4 = &pxTCB_26->xEventListItem;
  3947. uxListRemove (_4);
  3948. # DEBUG BEGIN_STMT
  3949. pxTCB_26->ucDelayAborted = 1;
  3950. <bb 8> :
  3951. # DEBUG BEGIN_STMT
  3952. # DEBUG BEGIN_STMT
  3953. vPortExitCritical ();
  3954. # DEBUG BEGIN_STMT
  3955. # DEBUG BEGIN_STMT
  3956. _5 = pxTCB_26->uxPriority;
  3957. uxTopReadyPriority.77_6 ={v} uxTopReadyPriority;
  3958. if (_5 > uxTopReadyPriority.77_6)
  3959. goto <bb 9>; [INV]
  3960. else
  3961. goto <bb 10>; [INV]
  3962. <bb 9> :
  3963. # DEBUG BEGIN_STMT
  3964. _7 = pxTCB_26->uxPriority;
  3965. uxTopReadyPriority ={v} _7;
  3966. <bb 10> :
  3967. # DEBUG BEGIN_STMT
  3968. # DEBUG BEGIN_STMT
  3969. _8 = pxTCB_26->uxPriority;
  3970. pxIndex_38 = pxReadyTasksLists[_8].pxIndex;
  3971. # DEBUG pxIndex => pxIndex_38
  3972. # DEBUG BEGIN_STMT
  3973. # DEBUG BEGIN_STMT
  3974. # DEBUG BEGIN_STMT
  3975. pxTCB_26->xStateListItem.pxNext = pxIndex_38;
  3976. # DEBUG BEGIN_STMT
  3977. _9 = pxIndex_38->pxPrevious;
  3978. pxTCB_26->xStateListItem.pxPrevious = _9;
  3979. # DEBUG BEGIN_STMT
  3980. _10 = pxIndex_38->pxPrevious;
  3981. _11 = &pxTCB_26->xStateListItem;
  3982. _10->pxNext = _11;
  3983. # DEBUG BEGIN_STMT
  3984. _12 = &pxTCB_26->xStateListItem;
  3985. pxIndex_38->pxPrevious = _12;
  3986. # DEBUG BEGIN_STMT
  3987. _13 = pxTCB_26->uxPriority;
  3988. _14 = &pxReadyTasksLists[_13];
  3989. pxTCB_26->xStateListItem.pvContainer = _14;
  3990. # DEBUG BEGIN_STMT
  3991. _15 = pxTCB_26->uxPriority;
  3992. _16 ={v} pxReadyTasksLists[_15].uxNumberOfItems;
  3993. _17 = _16 + 1;
  3994. pxReadyTasksLists[_15].uxNumberOfItems ={v} _17;
  3995. # DEBUG BEGIN_STMT
  3996. # DEBUG BEGIN_STMT
  3997. # DEBUG BEGIN_STMT
  3998. _18 = pxTCB_26->uxPriority;
  3999. pxCurrentTCB.78_19 ={v} pxCurrentTCB;
  4000. _20 = pxCurrentTCB.78_19->uxPriority;
  4001. if (_18 > _20)
  4002. goto <bb 11>; [INV]
  4003. else
  4004. goto <bb 13>; [INV]
  4005. <bb 11> :
  4006. # DEBUG BEGIN_STMT
  4007. xYieldPending ={v} 1;
  4008. goto <bb 13>; [INV]
  4009. <bb 12> :
  4010. # DEBUG BEGIN_STMT
  4011. xReturn_30 = 0;
  4012. # DEBUG xReturn => xReturn_30
  4013. <bb 13> :
  4014. # xReturn_21 = PHI <xReturn_31(11), xReturn_30(12), xReturn_31(10)>
  4015. # DEBUG xReturn => xReturn_21
  4016. # DEBUG BEGIN_STMT
  4017. xTaskResumeAll ();
  4018. # DEBUG BEGIN_STMT
  4019. _47 = xReturn_21;
  4020. return _47;
  4021. }
  4022. xTaskCatchUpTicks (TickType_t xTicksToCatchUp)
  4023. {
  4024. BaseType_t xYieldOccurred;
  4025. long unsigned int uxSchedulerSuspended.75_1;
  4026. long unsigned int xPendedTicks.76_2;
  4027. long unsigned int _3;
  4028. BaseType_t _10;
  4029. <bb 2> :
  4030. # DEBUG BEGIN_STMT
  4031. # DEBUG BEGIN_STMT
  4032. uxSchedulerSuspended.75_1 ={v} uxSchedulerSuspended;
  4033. if (uxSchedulerSuspended.75_1 != 0)
  4034. goto <bb 3>; [INV]
  4035. else
  4036. goto <bb 5>; [INV]
  4037. <bb 3> :
  4038. # DEBUG BEGIN_STMT
  4039. vPortRaiseBASEPRI ();
  4040. <bb 4> :
  4041. # DEBUG BEGIN_STMT
  4042. # DEBUG BEGIN_STMT
  4043. # DEBUG BEGIN_STMT
  4044. goto <bb 4>; [INV]
  4045. <bb 5> :
  4046. # DEBUG BEGIN_STMT
  4047. # DEBUG BEGIN_STMT
  4048. vTaskSuspendAll ();
  4049. # DEBUG BEGIN_STMT
  4050. xPendedTicks.76_2 ={v} xPendedTicks;
  4051. _3 = xTicksToCatchUp_6(D) + xPendedTicks.76_2;
  4052. xPendedTicks ={v} _3;
  4053. # DEBUG BEGIN_STMT
  4054. xYieldOccurred_9 = xTaskResumeAll ();
  4055. # DEBUG xYieldOccurred => xYieldOccurred_9
  4056. # DEBUG BEGIN_STMT
  4057. _10 = xYieldOccurred_9;
  4058. return _10;
  4059. }
  4060. uxTaskGetSystemState (struct TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime)
  4061. {
  4062. UBaseType_t uxQueue;
  4063. UBaseType_t uxTask;
  4064. long unsigned int uxCurrentNumberOfTasks.72_1;
  4065. long unsigned int _2;
  4066. struct TaskStatus_t * _3;
  4067. struct List_t * _4;
  4068. long unsigned int _5;
  4069. struct TaskStatus_t * _6;
  4070. struct List_t * pxDelayedTaskList.73_7;
  4071. long unsigned int _8;
  4072. struct TaskStatus_t * _9;
  4073. struct List_t * pxOverflowDelayedTaskList.74_10;
  4074. long unsigned int _11;
  4075. struct TaskStatus_t * _12;
  4076. long unsigned int _13;
  4077. struct TaskStatus_t * _14;
  4078. long unsigned int _28;
  4079. long unsigned int _31;
  4080. long unsigned int _34;
  4081. long unsigned int _37;
  4082. long unsigned int _40;
  4083. UBaseType_t _45;
  4084. <bb 2> :
  4085. # DEBUG BEGIN_STMT
  4086. uxTask_20 = 0;
  4087. # DEBUG uxTask => uxTask_20
  4088. uxQueue_21 = 5;
  4089. # DEBUG uxQueue => uxQueue_21
  4090. # DEBUG BEGIN_STMT
  4091. vTaskSuspendAll ();
  4092. # DEBUG BEGIN_STMT
  4093. uxCurrentNumberOfTasks.72_1 ={v} uxCurrentNumberOfTasks;
  4094. if (uxArraySize_24(D) >= uxCurrentNumberOfTasks.72_1)
  4095. goto <bb 3>; [INV]
  4096. else
  4097. goto <bb 6>; [INV]
  4098. <bb 3> :
  4099. # uxTask_15 = PHI <uxTask_20(2), uxTask_29(3)>
  4100. # uxQueue_17 = PHI <uxQueue_21(2), uxQueue_25(3)>
  4101. # DEBUG uxQueue => uxQueue_17
  4102. # DEBUG uxTask => uxTask_15
  4103. # DEBUG BEGIN_STMT
  4104. # DEBUG BEGIN_STMT
  4105. uxQueue_25 = uxQueue_17 + 4294967295;
  4106. # DEBUG uxQueue => uxQueue_25
  4107. # DEBUG BEGIN_STMT
  4108. _2 = uxTask_15 * 36;
  4109. _3 = pxTaskStatusArray_26(D) + _2;
  4110. _4 = &pxReadyTasksLists[uxQueue_25];
  4111. _28 = prvListTasksWithinSingleList (_3, _4, 1);
  4112. uxTask_29 = _28 + uxTask_15;
  4113. # DEBUG uxTask => uxTask_29
  4114. # DEBUG BEGIN_STMT
  4115. if (uxQueue_25 != 0)
  4116. goto <bb 3>; [INV]
  4117. else
  4118. goto <bb 4>; [INV]
  4119. <bb 4> :
  4120. # DEBUG BEGIN_STMT
  4121. _5 = uxTask_29 * 36;
  4122. _6 = pxTaskStatusArray_26(D) + _5;
  4123. pxDelayedTaskList.73_7 ={v} pxDelayedTaskList;
  4124. _31 = prvListTasksWithinSingleList (_6, pxDelayedTaskList.73_7, 2);
  4125. uxTask_32 = _31 + uxTask_29;
  4126. # DEBUG uxTask => uxTask_32
  4127. # DEBUG BEGIN_STMT
  4128. _8 = uxTask_32 * 36;
  4129. _9 = pxTaskStatusArray_26(D) + _8;
  4130. pxOverflowDelayedTaskList.74_10 ={v} pxOverflowDelayedTaskList;
  4131. _34 = prvListTasksWithinSingleList (_9, pxOverflowDelayedTaskList.74_10, 2);
  4132. uxTask_35 = _34 + uxTask_32;
  4133. # DEBUG uxTask => uxTask_35
  4134. # DEBUG BEGIN_STMT
  4135. _11 = uxTask_35 * 36;
  4136. _12 = pxTaskStatusArray_26(D) + _11;
  4137. _37 = prvListTasksWithinSingleList (_12, &xTasksWaitingTermination, 4);
  4138. uxTask_38 = _37 + uxTask_35;
  4139. # DEBUG uxTask => uxTask_38
  4140. # DEBUG BEGIN_STMT
  4141. _13 = uxTask_38 * 36;
  4142. _14 = pxTaskStatusArray_26(D) + _13;
  4143. _40 = prvListTasksWithinSingleList (_14, &xSuspendedTaskList, 3);
  4144. uxTask_41 = _40 + uxTask_38;
  4145. # DEBUG uxTask => uxTask_41
  4146. # DEBUG BEGIN_STMT
  4147. if (pulTotalRunTime_42(D) != 0B)
  4148. goto <bb 5>; [INV]
  4149. else
  4150. goto <bb 6>; [INV]
  4151. <bb 5> :
  4152. # DEBUG BEGIN_STMT
  4153. *pulTotalRunTime_42(D) = 0;
  4154. <bb 6> :
  4155. # uxTask_16 = PHI <uxTask_20(2), uxTask_41(5), uxTask_41(4)>
  4156. # DEBUG uxTask => uxTask_16
  4157. # DEBUG BEGIN_STMT
  4158. # DEBUG BEGIN_STMT
  4159. xTaskResumeAll ();
  4160. # DEBUG BEGIN_STMT
  4161. _45 = uxTask_16;
  4162. return _45;
  4163. }
  4164. xTaskGetHandle (const char * pcNameToQuery)
  4165. {
  4166. struct TCB_t * pxTCB;
  4167. UBaseType_t uxQueue;
  4168. unsigned int _1;
  4169. struct List_t * _2;
  4170. struct List_t * pxDelayedTaskList.70_3;
  4171. struct List_t * pxOverflowDelayedTaskList.71_4;
  4172. struct tskTaskControlBlock * _31;
  4173. <bb 2> :
  4174. # DEBUG BEGIN_STMT
  4175. uxQueue_15 = 5;
  4176. # DEBUG uxQueue => uxQueue_15
  4177. # DEBUG BEGIN_STMT
  4178. # DEBUG BEGIN_STMT
  4179. _1 = strlen (pcNameToQuery_17(D));
  4180. if (_1 > 9)
  4181. goto <bb 3>; [INV]
  4182. else
  4183. goto <bb 5>; [INV]
  4184. <bb 3> :
  4185. # DEBUG BEGIN_STMT
  4186. vPortRaiseBASEPRI ();
  4187. <bb 4> :
  4188. # DEBUG BEGIN_STMT
  4189. # DEBUG BEGIN_STMT
  4190. # DEBUG BEGIN_STMT
  4191. goto <bb 4>; [INV]
  4192. <bb 5> :
  4193. # DEBUG BEGIN_STMT
  4194. # DEBUG BEGIN_STMT
  4195. vTaskSuspendAll ();
  4196. <bb 6> :
  4197. # uxQueue_5 = PHI <uxQueue_15(5), uxQueue_19(7)>
  4198. # DEBUG uxQueue => uxQueue_5
  4199. # DEBUG BEGIN_STMT
  4200. # DEBUG BEGIN_STMT
  4201. uxQueue_19 = uxQueue_5 + 4294967295;
  4202. # DEBUG uxQueue => uxQueue_19
  4203. # DEBUG BEGIN_STMT
  4204. _2 = &pxReadyTasksLists[uxQueue_19];
  4205. pxTCB_21 = prvSearchForNameWithinSingleList (_2, pcNameToQuery_17(D));
  4206. # DEBUG pxTCB => pxTCB_21
  4207. # DEBUG BEGIN_STMT
  4208. if (pxTCB_21 != 0B)
  4209. goto <bb 8>; [INV]
  4210. else
  4211. goto <bb 7>; [INV]
  4212. <bb 7> :
  4213. # DEBUG BEGIN_STMT
  4214. if (uxQueue_19 != 0)
  4215. goto <bb 6>; [INV]
  4216. else
  4217. goto <bb 8>; [INV]
  4218. <bb 8> :
  4219. # DEBUG BEGIN_STMT
  4220. if (pxTCB_21 == 0B)
  4221. goto <bb 9>; [INV]
  4222. else
  4223. goto <bb 10>; [INV]
  4224. <bb 9> :
  4225. # DEBUG BEGIN_STMT
  4226. pxDelayedTaskList.70_3 ={v} pxDelayedTaskList;
  4227. pxTCB_23 = prvSearchForNameWithinSingleList (pxDelayedTaskList.70_3, pcNameToQuery_17(D));
  4228. # DEBUG pxTCB => pxTCB_23
  4229. <bb 10> :
  4230. # pxTCB_6 = PHI <pxTCB_21(8), pxTCB_23(9)>
  4231. # DEBUG pxTCB => pxTCB_6
  4232. # DEBUG BEGIN_STMT
  4233. if (pxTCB_6 == 0B)
  4234. goto <bb 11>; [INV]
  4235. else
  4236. goto <bb 12>; [INV]
  4237. <bb 11> :
  4238. # DEBUG BEGIN_STMT
  4239. pxOverflowDelayedTaskList.71_4 ={v} pxOverflowDelayedTaskList;
  4240. pxTCB_25 = prvSearchForNameWithinSingleList (pxOverflowDelayedTaskList.71_4, pcNameToQuery_17(D));
  4241. # DEBUG pxTCB => pxTCB_25
  4242. <bb 12> :
  4243. # pxTCB_7 = PHI <pxTCB_6(10), pxTCB_25(11)>
  4244. # DEBUG pxTCB => pxTCB_7
  4245. # DEBUG BEGIN_STMT
  4246. if (pxTCB_7 == 0B)
  4247. goto <bb 13>; [INV]
  4248. else
  4249. goto <bb 14>; [INV]
  4250. <bb 13> :
  4251. # DEBUG BEGIN_STMT
  4252. pxTCB_27 = prvSearchForNameWithinSingleList (&xSuspendedTaskList, pcNameToQuery_17(D));
  4253. # DEBUG pxTCB => pxTCB_27
  4254. <bb 14> :
  4255. # pxTCB_8 = PHI <pxTCB_7(12), pxTCB_27(13)>
  4256. # DEBUG pxTCB => pxTCB_8
  4257. # DEBUG BEGIN_STMT
  4258. if (pxTCB_8 == 0B)
  4259. goto <bb 15>; [INV]
  4260. else
  4261. goto <bb 16>; [INV]
  4262. <bb 15> :
  4263. # DEBUG BEGIN_STMT
  4264. pxTCB_29 = prvSearchForNameWithinSingleList (&xTasksWaitingTermination, pcNameToQuery_17(D));
  4265. # DEBUG pxTCB => pxTCB_29
  4266. <bb 16> :
  4267. # pxTCB_9 = PHI <pxTCB_8(14), pxTCB_29(15)>
  4268. # DEBUG pxTCB => pxTCB_9
  4269. # DEBUG BEGIN_STMT
  4270. xTaskResumeAll ();
  4271. # DEBUG BEGIN_STMT
  4272. _31 = pxTCB_9;
  4273. return _31;
  4274. }
  4275. prvSearchForNameWithinSingleList (struct List_t * pxList, const char * pcNameToQuery)
  4276. {
  4277. struct List_t * const pxConstList;
  4278. struct List_t * const pxConstList;
  4279. BaseType_t xBreakLoop;
  4280. char cNextChar;
  4281. UBaseType_t x;
  4282. struct TCB_t * pxReturn;
  4283. struct TCB_t * pxFirstTCB;
  4284. struct TCB_t * pxNextTCB;
  4285. long unsigned int _1;
  4286. struct ListItem_t * _2;
  4287. struct xLIST_ITEM * _3;
  4288. struct ListItem_t * _4;
  4289. struct MiniListItem_t * _5;
  4290. struct ListItem_t * _6;
  4291. struct xLIST_ITEM * _7;
  4292. struct ListItem_t * _8;
  4293. struct ListItem_t * _9;
  4294. struct xLIST_ITEM * _10;
  4295. struct ListItem_t * _11;
  4296. struct MiniListItem_t * _12;
  4297. struct ListItem_t * _13;
  4298. struct xLIST_ITEM * _14;
  4299. struct ListItem_t * _15;
  4300. const char * _16;
  4301. char _17;
  4302. struct TCB_t * _49;
  4303. <bb 2> :
  4304. # DEBUG BEGIN_STMT
  4305. pxReturn_30 = 0B;
  4306. # DEBUG pxReturn => pxReturn_30
  4307. # DEBUG BEGIN_STMT
  4308. # DEBUG BEGIN_STMT
  4309. # DEBUG BEGIN_STMT
  4310. # DEBUG BEGIN_STMT
  4311. _1 ={v} pxList_32(D)->uxNumberOfItems;
  4312. if (_1 != 0)
  4313. goto <bb 3>; [INV]
  4314. else
  4315. goto <bb 18>; [INV]
  4316. <bb 3> :
  4317. # DEBUG BEGIN_STMT
  4318. pxConstList_33 = pxList_32(D);
  4319. # DEBUG pxConstList => pxConstList_33
  4320. # DEBUG BEGIN_STMT
  4321. _2 = pxConstList_33->pxIndex;
  4322. _3 = _2->pxNext;
  4323. pxConstList_33->pxIndex = _3;
  4324. # DEBUG BEGIN_STMT
  4325. _4 = pxConstList_33->pxIndex;
  4326. _5 = &pxConstList_33->xListEnd;
  4327. if (_4 == _5)
  4328. goto <bb 4>; [INV]
  4329. else
  4330. goto <bb 5>; [INV]
  4331. <bb 4> :
  4332. # DEBUG BEGIN_STMT
  4333. _6 = pxConstList_33->pxIndex;
  4334. _7 = _6->pxNext;
  4335. pxConstList_33->pxIndex = _7;
  4336. <bb 5> :
  4337. # DEBUG BEGIN_STMT
  4338. _8 = pxConstList_33->pxIndex;
  4339. pxFirstTCB_36 = _8->pvOwner;
  4340. # DEBUG pxFirstTCB => pxFirstTCB_36
  4341. <bb 6> :
  4342. # pxReturn_18 = PHI <pxReturn_30(5), pxReturn_21(17)>
  4343. # DEBUG pxReturn => pxReturn_18
  4344. # DEBUG BEGIN_STMT
  4345. # DEBUG BEGIN_STMT
  4346. # DEBUG BEGIN_STMT
  4347. pxConstList_37 = pxList_32(D);
  4348. # DEBUG pxConstList => pxConstList_37
  4349. # DEBUG BEGIN_STMT
  4350. _9 = pxConstList_37->pxIndex;
  4351. _10 = _9->pxNext;
  4352. pxConstList_37->pxIndex = _10;
  4353. # DEBUG BEGIN_STMT
  4354. _11 = pxConstList_37->pxIndex;
  4355. _12 = &pxConstList_37->xListEnd;
  4356. if (_11 == _12)
  4357. goto <bb 7>; [INV]
  4358. else
  4359. goto <bb 8>; [INV]
  4360. <bb 7> :
  4361. # DEBUG BEGIN_STMT
  4362. _13 = pxConstList_37->pxIndex;
  4363. _14 = _13->pxNext;
  4364. pxConstList_37->pxIndex = _14;
  4365. <bb 8> :
  4366. # DEBUG BEGIN_STMT
  4367. _15 = pxConstList_37->pxIndex;
  4368. pxNextTCB_40 = _15->pvOwner;
  4369. # DEBUG pxNextTCB => pxNextTCB_40
  4370. # DEBUG BEGIN_STMT
  4371. # DEBUG BEGIN_STMT
  4372. xBreakLoop_41 = 0;
  4373. # DEBUG xBreakLoop => xBreakLoop_41
  4374. # DEBUG BEGIN_STMT
  4375. x_42 = 0;
  4376. # DEBUG x => x_42
  4377. goto <bb 15>; [INV]
  4378. <bb 9> :
  4379. # DEBUG BEGIN_STMT
  4380. cNextChar_43 = pxNextTCB_40->pcTaskName[x_23];
  4381. # DEBUG cNextChar => cNextChar_43
  4382. # DEBUG BEGIN_STMT
  4383. _16 = pcNameToQuery_44(D) + x_23;
  4384. _17 = *_16;
  4385. if (cNextChar_43 != _17)
  4386. goto <bb 10>; [INV]
  4387. else
  4388. goto <bb 11>; [INV]
  4389. <bb 10> :
  4390. # DEBUG BEGIN_STMT
  4391. xBreakLoop_47 = 1;
  4392. # DEBUG xBreakLoop => xBreakLoop_47
  4393. goto <bb 13>; [INV]
  4394. <bb 11> :
  4395. # DEBUG BEGIN_STMT
  4396. if (cNextChar_43 == 0)
  4397. goto <bb 12>; [INV]
  4398. else
  4399. goto <bb 13>; [INV]
  4400. <bb 12> :
  4401. # DEBUG BEGIN_STMT
  4402. pxReturn_45 = pxNextTCB_40;
  4403. # DEBUG pxReturn => pxReturn_45
  4404. # DEBUG BEGIN_STMT
  4405. xBreakLoop_46 = 1;
  4406. # DEBUG xBreakLoop => xBreakLoop_46
  4407. <bb 13> :
  4408. # pxReturn_19 = PHI <pxReturn_20(10), pxReturn_20(11), pxReturn_45(12)>
  4409. # xBreakLoop_24 = PHI <xBreakLoop_47(10), xBreakLoop_25(11), xBreakLoop_46(12)>
  4410. # DEBUG xBreakLoop => xBreakLoop_24
  4411. # DEBUG pxReturn => pxReturn_19
  4412. # DEBUG BEGIN_STMT
  4413. # DEBUG BEGIN_STMT
  4414. if (xBreakLoop_24 != 0)
  4415. goto <bb 16>; [INV]
  4416. else
  4417. goto <bb 14>; [INV]
  4418. <bb 14> :
  4419. # DEBUG BEGIN_STMT
  4420. x_48 = x_23 + 1;
  4421. # DEBUG x => x_48
  4422. <bb 15> :
  4423. # pxReturn_20 = PHI <pxReturn_18(8), pxReturn_19(14)>
  4424. # x_23 = PHI <x_42(8), x_48(14)>
  4425. # xBreakLoop_25 = PHI <xBreakLoop_41(8), xBreakLoop_24(14)>
  4426. # DEBUG xBreakLoop => xBreakLoop_25
  4427. # DEBUG x => x_23
  4428. # DEBUG pxReturn => pxReturn_20
  4429. # DEBUG BEGIN_STMT
  4430. if (x_23 <= 9)
  4431. goto <bb 9>; [INV]
  4432. else
  4433. goto <bb 16>; [INV]
  4434. <bb 16> :
  4435. # pxReturn_21 = PHI <pxReturn_19(13), pxReturn_20(15)>
  4436. # DEBUG pxReturn => pxReturn_21
  4437. # DEBUG BEGIN_STMT
  4438. if (pxReturn_21 != 0B)
  4439. goto <bb 18>; [INV]
  4440. else
  4441. goto <bb 17>; [INV]
  4442. <bb 17> :
  4443. # DEBUG BEGIN_STMT
  4444. if (pxNextTCB_40 != pxFirstTCB_36)
  4445. goto <bb 6>; [INV]
  4446. else
  4447. goto <bb 18>; [INV]
  4448. <bb 18> :
  4449. # pxReturn_22 = PHI <pxReturn_30(2), pxReturn_21(17), pxReturn_21(16)>
  4450. # DEBUG pxReturn => pxReturn_22
  4451. # DEBUG BEGIN_STMT
  4452. # DEBUG BEGIN_STMT
  4453. _49 = pxReturn_22;
  4454. return _49;
  4455. }
  4456. pcTaskGetName (struct tskTaskControlBlock * xTaskToQuery)
  4457. {
  4458. struct TCB_t * pxTCB;
  4459. struct TCB_t * iftmp.69_1;
  4460. struct TCB_t * iftmp.69_3;
  4461. struct TCB_t * iftmp.69_5;
  4462. char * _7;
  4463. <bb 2> :
  4464. # DEBUG BEGIN_STMT
  4465. # DEBUG BEGIN_STMT
  4466. if (xTaskToQuery_2(D) == 0B)
  4467. goto <bb 3>; [INV]
  4468. else
  4469. goto <bb 4>; [INV]
  4470. <bb 3> :
  4471. iftmp.69_5 ={v} pxCurrentTCB;
  4472. goto <bb 5>; [INV]
  4473. <bb 4> :
  4474. iftmp.69_3 = xTaskToQuery_2(D);
  4475. <bb 5> :
  4476. # iftmp.69_1 = PHI <iftmp.69_5(3), iftmp.69_3(4)>
  4477. pxTCB_6 = iftmp.69_1;
  4478. # DEBUG pxTCB => pxTCB_6
  4479. # DEBUG BEGIN_STMT
  4480. if (pxTCB_6 == 0B)
  4481. goto <bb 6>; [INV]
  4482. else
  4483. goto <bb 8>; [INV]
  4484. <bb 6> :
  4485. # DEBUG BEGIN_STMT
  4486. vPortRaiseBASEPRI ();
  4487. <bb 7> :
  4488. # DEBUG BEGIN_STMT
  4489. # DEBUG BEGIN_STMT
  4490. # DEBUG BEGIN_STMT
  4491. goto <bb 7>; [INV]
  4492. <bb 8> :
  4493. # DEBUG BEGIN_STMT
  4494. # DEBUG BEGIN_STMT
  4495. _7 = &pxTCB_6->pcTaskName[0];
  4496. return _7;
  4497. }
  4498. uxTaskGetNumberOfTasks ()
  4499. {
  4500. UBaseType_t _2;
  4501. <bb 2> :
  4502. # DEBUG BEGIN_STMT
  4503. _2 ={v} uxCurrentNumberOfTasks;
  4504. return _2;
  4505. }
  4506. xTaskGetTickCountFromISR ()
  4507. {
  4508. UBaseType_t uxSavedInterruptStatus;
  4509. TickType_t xReturn;
  4510. TickType_t _5;
  4511. <bb 2> :
  4512. # DEBUG BEGIN_STMT
  4513. # DEBUG BEGIN_STMT
  4514. # DEBUG BEGIN_STMT
  4515. vPortValidateInterruptPriority ();
  4516. # DEBUG BEGIN_STMT
  4517. uxSavedInterruptStatus_3 = 0;
  4518. # DEBUG uxSavedInterruptStatus => uxSavedInterruptStatus_3
  4519. # DEBUG BEGIN_STMT
  4520. xReturn_4 ={v} xTickCount;
  4521. # DEBUG xReturn => xReturn_4
  4522. # DEBUG BEGIN_STMT
  4523. # DEBUG BEGIN_STMT
  4524. _5 = xReturn_4;
  4525. return _5;
  4526. }
  4527. xTaskGetTickCount ()
  4528. {
  4529. TickType_t xTicks;
  4530. TickType_t _3;
  4531. <bb 2> :
  4532. # DEBUG BEGIN_STMT
  4533. # DEBUG BEGIN_STMT
  4534. # DEBUG BEGIN_STMT
  4535. xTicks_2 ={v} xTickCount;
  4536. # DEBUG xTicks => xTicks_2
  4537. # DEBUG BEGIN_STMT
  4538. # DEBUG BEGIN_STMT
  4539. _3 = xTicks_2;
  4540. return _3;
  4541. }
  4542. xTaskResumeAll ()
  4543. {
  4544. TickType_t xPendedCounts;
  4545. struct ListItem_t * const pxIndex;
  4546. struct List_t * const pxList;
  4547. struct List_t * const pxList;
  4548. BaseType_t xAlreadyYielded;
  4549. struct TCB_t * pxTCB;
  4550. long unsigned int uxSchedulerSuspended.62_1;
  4551. long unsigned int uxSchedulerSuspended.63_2;
  4552. long unsigned int _3;
  4553. long unsigned int uxSchedulerSuspended.64_4;
  4554. long unsigned int uxCurrentNumberOfTasks.65_5;
  4555. struct xLIST_ITEM * _6;
  4556. struct xLIST_ITEM * _7;
  4557. struct xLIST_ITEM * _8;
  4558. struct xLIST_ITEM * _9;
  4559. struct xLIST_ITEM * _10;
  4560. struct ListItem_t * _11;
  4561. struct ListItem_t * _12;
  4562. struct xLIST_ITEM * _13;
  4563. long unsigned int _14;
  4564. long unsigned int _15;
  4565. struct xLIST_ITEM * _16;
  4566. struct xLIST_ITEM * _17;
  4567. struct xLIST_ITEM * _18;
  4568. struct xLIST_ITEM * _19;
  4569. struct ListItem_t * _20;
  4570. struct ListItem_t * _21;
  4571. struct xLIST_ITEM * _22;
  4572. long unsigned int _23;
  4573. long unsigned int _24;
  4574. long unsigned int _25;
  4575. long unsigned int uxTopReadyPriority.66_26;
  4576. long unsigned int _27;
  4577. long unsigned int _28;
  4578. struct xLIST_ITEM * _29;
  4579. struct xLIST_ITEM * _30;
  4580. struct ListItem_t * _31;
  4581. struct ListItem_t * _32;
  4582. long unsigned int _33;
  4583. struct List_t * _34;
  4584. long unsigned int _35;
  4585. long unsigned int _36;
  4586. long unsigned int _37;
  4587. long unsigned int _38;
  4588. struct TCB_t * pxCurrentTCB.67_39;
  4589. long unsigned int _40;
  4590. long unsigned int _41;
  4591. long int _42;
  4592. long int xYieldPending.68_43;
  4593. volatile uint32_t * _44;
  4594. BaseType_t _96;
  4595. <bb 2> :
  4596. # DEBUG BEGIN_STMT
  4597. pxTCB_57 = 0B;
  4598. # DEBUG pxTCB => pxTCB_57
  4599. # DEBUG BEGIN_STMT
  4600. xAlreadyYielded_58 = 0;
  4601. # DEBUG xAlreadyYielded => xAlreadyYielded_58
  4602. # DEBUG BEGIN_STMT
  4603. uxSchedulerSuspended.62_1 ={v} uxSchedulerSuspended;
  4604. if (uxSchedulerSuspended.62_1 == 0)
  4605. goto <bb 3>; [INV]
  4606. else
  4607. goto <bb 5>; [INV]
  4608. <bb 3> :
  4609. # DEBUG BEGIN_STMT
  4610. vPortRaiseBASEPRI ();
  4611. <bb 4> :
  4612. # DEBUG BEGIN_STMT
  4613. # DEBUG BEGIN_STMT
  4614. # DEBUG BEGIN_STMT
  4615. goto <bb 4>; [INV]
  4616. <bb 5> :
  4617. # DEBUG BEGIN_STMT
  4618. # DEBUG BEGIN_STMT
  4619. vPortEnterCritical ();
  4620. # DEBUG BEGIN_STMT
  4621. uxSchedulerSuspended.63_2 ={v} uxSchedulerSuspended;
  4622. _3 = uxSchedulerSuspended.63_2 + 4294967295;
  4623. uxSchedulerSuspended ={v} _3;
  4624. # DEBUG BEGIN_STMT
  4625. uxSchedulerSuspended.64_4 ={v} uxSchedulerSuspended;
  4626. if (uxSchedulerSuspended.64_4 == 0)
  4627. goto <bb 6>; [INV]
  4628. else
  4629. goto <bb 25>; [INV]
  4630. <bb 6> :
  4631. # DEBUG BEGIN_STMT
  4632. uxCurrentNumberOfTasks.65_5 ={v} uxCurrentNumberOfTasks;
  4633. if (uxCurrentNumberOfTasks.65_5 != 0)
  4634. goto <bb 15>; [INV]
  4635. else
  4636. goto <bb 25>; [INV]
  4637. <bb 7> :
  4638. # DEBUG BEGIN_STMT
  4639. _6 = xPendingReadyList.xListEnd.pxNext;
  4640. pxTCB_72 = _6->pvOwner;
  4641. # DEBUG pxTCB => pxTCB_72
  4642. # DEBUG BEGIN_STMT
  4643. pxList_73 = pxTCB_72->xEventListItem.pvContainer;
  4644. # DEBUG pxList => pxList_73
  4645. # DEBUG BEGIN_STMT
  4646. _7 = pxTCB_72->xEventListItem.pxNext;
  4647. _8 = pxTCB_72->xEventListItem.pxPrevious;
  4648. _7->pxPrevious = _8;
  4649. # DEBUG BEGIN_STMT
  4650. _9 = pxTCB_72->xEventListItem.pxPrevious;
  4651. _10 = pxTCB_72->xEventListItem.pxNext;
  4652. _9->pxNext = _10;
  4653. # DEBUG BEGIN_STMT
  4654. _11 = pxList_73->pxIndex;
  4655. _12 = &pxTCB_72->xEventListItem;
  4656. if (_11 == _12)
  4657. goto <bb 8>; [INV]
  4658. else
  4659. goto <bb 9>; [INV]
  4660. <bb 8> :
  4661. # DEBUG BEGIN_STMT
  4662. _13 = pxTCB_72->xEventListItem.pxPrevious;
  4663. pxList_73->pxIndex = _13;
  4664. <bb 9> :
  4665. # DEBUG BEGIN_STMT
  4666. pxTCB_72->xEventListItem.pvContainer = 0B;
  4667. # DEBUG BEGIN_STMT
  4668. _14 ={v} pxList_73->uxNumberOfItems;
  4669. _15 = _14 + 4294967295;
  4670. pxList_73->uxNumberOfItems ={v} _15;
  4671. # DEBUG BEGIN_STMT
  4672. # DEBUG BEGIN_STMT
  4673. __asm__ __volatile__("" : : : "memory");
  4674. # DEBUG BEGIN_STMT
  4675. pxList_80 = pxTCB_72->xStateListItem.pvContainer;
  4676. # DEBUG pxList => pxList_80
  4677. # DEBUG BEGIN_STMT
  4678. _16 = pxTCB_72->xStateListItem.pxNext;
  4679. _17 = pxTCB_72->xStateListItem.pxPrevious;
  4680. _16->pxPrevious = _17;
  4681. # DEBUG BEGIN_STMT
  4682. _18 = pxTCB_72->xStateListItem.pxPrevious;
  4683. _19 = pxTCB_72->xStateListItem.pxNext;
  4684. _18->pxNext = _19;
  4685. # DEBUG BEGIN_STMT
  4686. _20 = pxList_80->pxIndex;
  4687. _21 = &pxTCB_72->xStateListItem;
  4688. if (_20 == _21)
  4689. goto <bb 10>; [INV]
  4690. else
  4691. goto <bb 11>; [INV]
  4692. <bb 10> :
  4693. # DEBUG BEGIN_STMT
  4694. _22 = pxTCB_72->xStateListItem.pxPrevious;
  4695. pxList_80->pxIndex = _22;
  4696. <bb 11> :
  4697. # DEBUG BEGIN_STMT
  4698. pxTCB_72->xStateListItem.pvContainer = 0B;
  4699. # DEBUG BEGIN_STMT
  4700. _23 ={v} pxList_80->uxNumberOfItems;
  4701. _24 = _23 + 4294967295;
  4702. pxList_80->uxNumberOfItems ={v} _24;
  4703. # DEBUG BEGIN_STMT
  4704. # DEBUG BEGIN_STMT
  4705. # DEBUG BEGIN_STMT
  4706. _25 = pxTCB_72->uxPriority;
  4707. uxTopReadyPriority.66_26 ={v} uxTopReadyPriority;
  4708. if (_25 > uxTopReadyPriority.66_26)
  4709. goto <bb 12>; [INV]
  4710. else
  4711. goto <bb 13>; [INV]
  4712. <bb 12> :
  4713. # DEBUG BEGIN_STMT
  4714. _27 = pxTCB_72->uxPriority;
  4715. uxTopReadyPriority ={v} _27;
  4716. <bb 13> :
  4717. # DEBUG BEGIN_STMT
  4718. # DEBUG BEGIN_STMT
  4719. _28 = pxTCB_72->uxPriority;
  4720. pxIndex_87 = pxReadyTasksLists[_28].pxIndex;
  4721. # DEBUG pxIndex => pxIndex_87
  4722. # DEBUG BEGIN_STMT
  4723. # DEBUG BEGIN_STMT
  4724. # DEBUG BEGIN_STMT
  4725. pxTCB_72->xStateListItem.pxNext = pxIndex_87;
  4726. # DEBUG BEGIN_STMT
  4727. _29 = pxIndex_87->pxPrevious;
  4728. pxTCB_72->xStateListItem.pxPrevious = _29;
  4729. # DEBUG BEGIN_STMT
  4730. _30 = pxIndex_87->pxPrevious;
  4731. _31 = &pxTCB_72->xStateListItem;
  4732. _30->pxNext = _31;
  4733. # DEBUG BEGIN_STMT
  4734. _32 = &pxTCB_72->xStateListItem;
  4735. pxIndex_87->pxPrevious = _32;
  4736. # DEBUG BEGIN_STMT
  4737. _33 = pxTCB_72->uxPriority;
  4738. _34 = &pxReadyTasksLists[_33];
  4739. pxTCB_72->xStateListItem.pvContainer = _34;
  4740. # DEBUG BEGIN_STMT
  4741. _35 = pxTCB_72->uxPriority;
  4742. _36 ={v} pxReadyTasksLists[_35].uxNumberOfItems;
  4743. _37 = _36 + 1;
  4744. pxReadyTasksLists[_35].uxNumberOfItems ={v} _37;
  4745. # DEBUG BEGIN_STMT
  4746. # DEBUG BEGIN_STMT
  4747. # DEBUG BEGIN_STMT
  4748. _38 = pxTCB_72->uxPriority;
  4749. pxCurrentTCB.67_39 ={v} pxCurrentTCB;
  4750. _40 = pxCurrentTCB.67_39->uxPriority;
  4751. if (_38 >= _40)
  4752. goto <bb 14>; [INV]
  4753. else
  4754. goto <bb 15>; [INV]
  4755. <bb 14> :
  4756. # DEBUG BEGIN_STMT
  4757. xYieldPending ={v} 1;
  4758. <bb 15> :
  4759. # pxTCB_45 = PHI <pxTCB_57(6), pxTCB_72(13), pxTCB_72(14)>
  4760. # DEBUG pxTCB => pxTCB_45
  4761. # DEBUG BEGIN_STMT
  4762. # DEBUG BEGIN_STMT
  4763. _41 ={v} xPendingReadyList.uxNumberOfItems;
  4764. if (_41 != 0)
  4765. goto <bb 7>; [INV]
  4766. else
  4767. goto <bb 16>; [INV]
  4768. <bb 16> :
  4769. # DEBUG BEGIN_STMT
  4770. if (pxTCB_45 != 0B)
  4771. goto <bb 17>; [INV]
  4772. else
  4773. goto <bb 18>; [INV]
  4774. <bb 17> :
  4775. # DEBUG BEGIN_STMT
  4776. prvResetNextTaskUnblockTime ();
  4777. <bb 18> :
  4778. # DEBUG BEGIN_STMT
  4779. xPendedCounts_63 ={v} xPendedTicks;
  4780. # DEBUG xPendedCounts => xPendedCounts_63
  4781. # DEBUG BEGIN_STMT
  4782. if (xPendedCounts_63 != 0)
  4783. goto <bb 19>; [INV]
  4784. else
  4785. goto <bb 23>; [INV]
  4786. <bb 19> :
  4787. # xPendedCounts_47 = PHI <xPendedCounts_63(18), xPendedCounts_66(21)>
  4788. # DEBUG xPendedCounts => xPendedCounts_47
  4789. # DEBUG BEGIN_STMT
  4790. # DEBUG BEGIN_STMT
  4791. _42 = xTaskIncrementTick ();
  4792. if (_42 != 0)
  4793. goto <bb 20>; [INV]
  4794. else
  4795. goto <bb 21>; [INV]
  4796. <bb 20> :
  4797. # DEBUG BEGIN_STMT
  4798. xYieldPending ={v} 1;
  4799. <bb 21> :
  4800. # DEBUG BEGIN_STMT
  4801. # DEBUG BEGIN_STMT
  4802. xPendedCounts_66 = xPendedCounts_47 + 4294967295;
  4803. # DEBUG xPendedCounts => xPendedCounts_66
  4804. # DEBUG BEGIN_STMT
  4805. if (xPendedCounts_66 != 0)
  4806. goto <bb 19>; [INV]
  4807. else
  4808. goto <bb 22>; [INV]
  4809. <bb 22> :
  4810. # DEBUG BEGIN_STMT
  4811. xPendedTicks ={v} 0;
  4812. <bb 23> :
  4813. # DEBUG BEGIN_STMT
  4814. # DEBUG BEGIN_STMT
  4815. xYieldPending.68_43 ={v} xYieldPending;
  4816. if (xYieldPending.68_43 != 0)
  4817. goto <bb 24>; [INV]
  4818. else
  4819. goto <bb 25>; [INV]
  4820. <bb 24> :
  4821. # DEBUG BEGIN_STMT
  4822. xAlreadyYielded_68 = 1;
  4823. # DEBUG xAlreadyYielded => xAlreadyYielded_68
  4824. # DEBUG BEGIN_STMT
  4825. _44 = 3758157060B;
  4826. *_44 ={v} 268435456;
  4827. # DEBUG BEGIN_STMT
  4828. __asm__ __volatile__("dsb" : : : "memory");
  4829. # DEBUG BEGIN_STMT
  4830. __asm__ __volatile__("isb");
  4831. # DEBUG BEGIN_STMT
  4832. <bb 25> :
  4833. # xAlreadyYielded_46 = PHI <xAlreadyYielded_58(5), xAlreadyYielded_58(23), xAlreadyYielded_58(6), xAlreadyYielded_68(24)>
  4834. # DEBUG xAlreadyYielded => xAlreadyYielded_46
  4835. # DEBUG BEGIN_STMT
  4836. # DEBUG BEGIN_STMT
  4837. vPortExitCritical ();
  4838. # DEBUG BEGIN_STMT
  4839. _96 = xAlreadyYielded_46;
  4840. return _96;
  4841. }
  4842. vTaskSuspendAll ()
  4843. {
  4844. long unsigned int uxSchedulerSuspended.61_1;
  4845. long unsigned int _2;
  4846. <bb 2> :
  4847. # DEBUG BEGIN_STMT
  4848. # DEBUG BEGIN_STMT
  4849. uxSchedulerSuspended.61_1 ={v} uxSchedulerSuspended;
  4850. _2 = uxSchedulerSuspended.61_1 + 1;
  4851. uxSchedulerSuspended ={v} _2;
  4852. # DEBUG BEGIN_STMT
  4853. __asm__ __volatile__("" : : : "memory");
  4854. return;
  4855. }
  4856. vTaskEndScheduler ()
  4857. {
  4858. <bb 2> :
  4859. # DEBUG BEGIN_STMT
  4860. vPortRaiseBASEPRI ();
  4861. # DEBUG BEGIN_STMT
  4862. xSchedulerRunning ={v} 0;
  4863. # DEBUG BEGIN_STMT
  4864. vPortEndScheduler ();
  4865. return;
  4866. }
  4867. vTaskStartScheduler ()
  4868. {
  4869. BaseType_t xReturn;
  4870. long int _1;
  4871. long unsigned int vol.57_16;
  4872. <bb 2> :
  4873. # DEBUG BEGIN_STMT
  4874. # DEBUG BEGIN_STMT
  4875. xReturn_7 = xTaskCreate (prvIdleTask, "IDLE", 90, 0B, 0, &xIdleTaskHandle);
  4876. # DEBUG xReturn => xReturn_7
  4877. # DEBUG BEGIN_STMT
  4878. if (xReturn_7 == 1)
  4879. goto <bb 3>; [INV]
  4880. else
  4881. goto <bb 4>; [INV]
  4882. <bb 3> :
  4883. # DEBUG BEGIN_STMT
  4884. xReturn_9 = xTimerCreateTimerTask ();
  4885. # DEBUG xReturn => xReturn_9
  4886. <bb 4> :
  4887. # xReturn_2 = PHI <xReturn_7(2), xReturn_9(3)>
  4888. # DEBUG xReturn => xReturn_2
  4889. # DEBUG BEGIN_STMT
  4890. # DEBUG BEGIN_STMT
  4891. if (xReturn_2 == 1)
  4892. goto <bb 5>; [INV]
  4893. else
  4894. goto <bb 6>; [INV]
  4895. <bb 5> :
  4896. # DEBUG BEGIN_STMT
  4897. vPortRaiseBASEPRI ();
  4898. # DEBUG BEGIN_STMT
  4899. xNextTaskUnblockTime ={v} 4294967295;
  4900. # DEBUG BEGIN_STMT
  4901. xSchedulerRunning ={v} 1;
  4902. # DEBUG BEGIN_STMT
  4903. xTickCount ={v} 0;
  4904. # DEBUG BEGIN_STMT
  4905. # DEBUG BEGIN_STMT
  4906. # DEBUG BEGIN_STMT
  4907. _1 = xPortStartScheduler ();
  4908. goto <bb 9>; [INV]
  4909. <bb 6> :
  4910. # DEBUG BEGIN_STMT
  4911. if (xReturn_2 == -1)
  4912. goto <bb 7>; [INV]
  4913. else
  4914. goto <bb 9>; [INV]
  4915. <bb 7> :
  4916. # DEBUG BEGIN_STMT
  4917. vPortRaiseBASEPRI ();
  4918. <bb 8> :
  4919. # DEBUG BEGIN_STMT
  4920. # DEBUG BEGIN_STMT
  4921. # DEBUG BEGIN_STMT
  4922. goto <bb 8>; [INV]
  4923. <bb 9> :
  4924. # DEBUG BEGIN_STMT
  4925. # DEBUG BEGIN_STMT
  4926. # DEBUG BEGIN_STMT
  4927. vol.57_16 ={v} uxTopUsedPriority;
  4928. return;
  4929. }
  4930. xTaskResumeFromISR (struct tskTaskControlBlock * xTaskToResume)
  4931. {
  4932. struct ListItem_t * const pxIndex;
  4933. UBaseType_t uxSavedInterruptStatus;
  4934. struct TCB_t * const pxTCB;
  4935. BaseType_t xYieldRequired;
  4936. long int _1;
  4937. long unsigned int uxSchedulerSuspended.54_2;
  4938. long unsigned int _3;
  4939. struct TCB_t * pxCurrentTCB.55_4;
  4940. long unsigned int _5;
  4941. struct ListItem_t * _6;
  4942. long unsigned int _7;
  4943. long unsigned int uxTopReadyPriority.56_8;
  4944. long unsigned int _9;
  4945. long unsigned int _10;
  4946. struct xLIST_ITEM * _11;
  4947. struct xLIST_ITEM * _12;
  4948. struct ListItem_t * _13;
  4949. struct ListItem_t * _14;
  4950. long unsigned int _15;
  4951. struct List_t * _16;
  4952. long unsigned int _17;
  4953. long unsigned int _18;
  4954. long unsigned int _19;
  4955. struct ListItem_t * _20;
  4956. BaseType_t _47;
  4957. <bb 2> :
  4958. # DEBUG BEGIN_STMT
  4959. xYieldRequired_26 = 0;
  4960. # DEBUG xYieldRequired => xYieldRequired_26
  4961. # DEBUG BEGIN_STMT
  4962. pxTCB_28 = xTaskToResume_27(D);
  4963. # DEBUG pxTCB => pxTCB_28
  4964. # DEBUG BEGIN_STMT
  4965. # DEBUG BEGIN_STMT
  4966. if (xTaskToResume_27(D) == 0B)
  4967. goto <bb 3>; [INV]
  4968. else
  4969. goto <bb 5>; [INV]
  4970. <bb 3> :
  4971. # DEBUG BEGIN_STMT
  4972. vPortRaiseBASEPRI ();
  4973. <bb 4> :
  4974. # DEBUG BEGIN_STMT
  4975. # DEBUG BEGIN_STMT
  4976. # DEBUG BEGIN_STMT
  4977. goto <bb 4>; [INV]
  4978. <bb 5> :
  4979. # DEBUG BEGIN_STMT
  4980. # DEBUG BEGIN_STMT
  4981. vPortValidateInterruptPriority ();
  4982. # DEBUG BEGIN_STMT
  4983. uxSavedInterruptStatus_32 = ulPortRaiseBASEPRI ();
  4984. # DEBUG uxSavedInterruptStatus => uxSavedInterruptStatus_32
  4985. # DEBUG BEGIN_STMT
  4986. _1 = prvTaskIsTaskSuspended (pxTCB_28);
  4987. if (_1 != 0)
  4988. goto <bb 6>; [INV]
  4989. else
  4990. goto <bb 13>; [INV]
  4991. <bb 6> :
  4992. # DEBUG BEGIN_STMT
  4993. # DEBUG BEGIN_STMT
  4994. uxSchedulerSuspended.54_2 ={v} uxSchedulerSuspended;
  4995. if (uxSchedulerSuspended.54_2 == 0)
  4996. goto <bb 7>; [INV]
  4997. else
  4998. goto <bb 12>; [INV]
  4999. <bb 7> :
  5000. # DEBUG BEGIN_STMT
  5001. _3 = pxTCB_28->uxPriority;
  5002. pxCurrentTCB.55_4 ={v} pxCurrentTCB;
  5003. _5 = pxCurrentTCB.55_4->uxPriority;
  5004. if (_3 >= _5)
  5005. goto <bb 8>; [INV]
  5006. else
  5007. goto <bb 9>; [INV]
  5008. <bb 8> :
  5009. # DEBUG BEGIN_STMT
  5010. xYieldRequired_35 = 1;
  5011. # DEBUG xYieldRequired => xYieldRequired_35
  5012. # DEBUG BEGIN_STMT
  5013. xYieldPending ={v} 1;
  5014. <bb 9> :
  5015. # xYieldRequired_21 = PHI <xYieldRequired_26(7), xYieldRequired_35(8)>
  5016. # DEBUG xYieldRequired => xYieldRequired_21
  5017. # DEBUG BEGIN_STMT
  5018. # DEBUG BEGIN_STMT
  5019. _6 = &pxTCB_28->xStateListItem;
  5020. uxListRemove (_6);
  5021. # DEBUG BEGIN_STMT
  5022. # DEBUG BEGIN_STMT
  5023. _7 = pxTCB_28->uxPriority;
  5024. uxTopReadyPriority.56_8 ={v} uxTopReadyPriority;
  5025. if (_7 > uxTopReadyPriority.56_8)
  5026. goto <bb 10>; [INV]
  5027. else
  5028. goto <bb 11>; [INV]
  5029. <bb 10> :
  5030. # DEBUG BEGIN_STMT
  5031. _9 = pxTCB_28->uxPriority;
  5032. uxTopReadyPriority ={v} _9;
  5033. <bb 11> :
  5034. # DEBUG BEGIN_STMT
  5035. # DEBUG BEGIN_STMT
  5036. _10 = pxTCB_28->uxPriority;
  5037. pxIndex_39 = pxReadyTasksLists[_10].pxIndex;
  5038. # DEBUG pxIndex => pxIndex_39
  5039. # DEBUG BEGIN_STMT
  5040. # DEBUG BEGIN_STMT
  5041. # DEBUG BEGIN_STMT
  5042. pxTCB_28->xStateListItem.pxNext = pxIndex_39;
  5043. # DEBUG BEGIN_STMT
  5044. _11 = pxIndex_39->pxPrevious;
  5045. pxTCB_28->xStateListItem.pxPrevious = _11;
  5046. # DEBUG BEGIN_STMT
  5047. _12 = pxIndex_39->pxPrevious;
  5048. _13 = &pxTCB_28->xStateListItem;
  5049. _12->pxNext = _13;
  5050. # DEBUG BEGIN_STMT
  5051. _14 = &pxTCB_28->xStateListItem;
  5052. pxIndex_39->pxPrevious = _14;
  5053. # DEBUG BEGIN_STMT
  5054. _15 = pxTCB_28->uxPriority;
  5055. _16 = &pxReadyTasksLists[_15];
  5056. pxTCB_28->xStateListItem.pvContainer = _16;
  5057. # DEBUG BEGIN_STMT
  5058. _17 = pxTCB_28->uxPriority;
  5059. _18 ={v} pxReadyTasksLists[_17].uxNumberOfItems;
  5060. _19 = _18 + 1;
  5061. pxReadyTasksLists[_17].uxNumberOfItems ={v} _19;
  5062. # DEBUG BEGIN_STMT
  5063. # DEBUG BEGIN_STMT
  5064. goto <bb 13>; [INV]
  5065. <bb 12> :
  5066. # DEBUG BEGIN_STMT
  5067. _20 = &pxTCB_28->xEventListItem;
  5068. vListInsertEnd (&xPendingReadyList, _20);
  5069. <bb 13> :
  5070. # xYieldRequired_22 = PHI <xYieldRequired_26(5), xYieldRequired_26(12), xYieldRequired_21(11)>
  5071. # DEBUG xYieldRequired => xYieldRequired_22
  5072. # DEBUG BEGIN_STMT
  5073. # DEBUG BEGIN_STMT
  5074. vPortSetBASEPRI (uxSavedInterruptStatus_32);
  5075. # DEBUG BEGIN_STMT
  5076. _47 = xYieldRequired_22;
  5077. return _47;
  5078. }
  5079. vTaskResume (struct tskTaskControlBlock * xTaskToResume)
  5080. {
  5081. struct ListItem_t * const pxIndex;
  5082. struct TCB_t * const pxTCB;
  5083. struct TCB_t * pxCurrentTCB.51_1;
  5084. long int _2;
  5085. struct ListItem_t * _3;
  5086. long unsigned int _4;
  5087. long unsigned int uxTopReadyPriority.52_5;
  5088. long unsigned int _6;
  5089. long unsigned int _7;
  5090. struct xLIST_ITEM * _8;
  5091. struct xLIST_ITEM * _9;
  5092. struct ListItem_t * _10;
  5093. struct ListItem_t * _11;
  5094. long unsigned int _12;
  5095. struct List_t * _13;
  5096. long unsigned int _14;
  5097. long unsigned int _15;
  5098. long unsigned int _16;
  5099. long unsigned int _17;
  5100. struct TCB_t * pxCurrentTCB.53_18;
  5101. long unsigned int _19;
  5102. volatile uint32_t * _20;
  5103. <bb 2> :
  5104. # DEBUG BEGIN_STMT
  5105. pxTCB_25 = xTaskToResume_24(D);
  5106. # DEBUG pxTCB => pxTCB_25
  5107. # DEBUG BEGIN_STMT
  5108. if (xTaskToResume_24(D) == 0B)
  5109. goto <bb 3>; [INV]
  5110. else
  5111. goto <bb 5>; [INV]
  5112. <bb 3> :
  5113. # DEBUG BEGIN_STMT
  5114. vPortRaiseBASEPRI ();
  5115. <bb 4> :
  5116. # DEBUG BEGIN_STMT
  5117. # DEBUG BEGIN_STMT
  5118. # DEBUG BEGIN_STMT
  5119. goto <bb 4>; [INV]
  5120. <bb 5> :
  5121. # DEBUG BEGIN_STMT
  5122. # DEBUG BEGIN_STMT
  5123. pxCurrentTCB.51_1 ={v} pxCurrentTCB;
  5124. if (pxTCB_25 != pxCurrentTCB.51_1)
  5125. goto <bb 6>; [INV]
  5126. else
  5127. goto <bb 13>; [INV]
  5128. <bb 6> :
  5129. if (pxTCB_25 != 0B)
  5130. goto <bb 7>; [INV]
  5131. else
  5132. goto <bb 13>; [INV]
  5133. <bb 7> :
  5134. # DEBUG BEGIN_STMT
  5135. vPortEnterCritical ();
  5136. # DEBUG BEGIN_STMT
  5137. _2 = prvTaskIsTaskSuspended (pxTCB_25);
  5138. if (_2 != 0)
  5139. goto <bb 8>; [INV]
  5140. else
  5141. goto <bb 12>; [INV]
  5142. <bb 8> :
  5143. # DEBUG BEGIN_STMT
  5144. # DEBUG BEGIN_STMT
  5145. _3 = &pxTCB_25->xStateListItem;
  5146. uxListRemove (_3);
  5147. # DEBUG BEGIN_STMT
  5148. # DEBUG BEGIN_STMT
  5149. _4 = pxTCB_25->uxPriority;
  5150. uxTopReadyPriority.52_5 ={v} uxTopReadyPriority;
  5151. if (_4 > uxTopReadyPriority.52_5)
  5152. goto <bb 9>; [INV]
  5153. else
  5154. goto <bb 10>; [INV]
  5155. <bb 9> :
  5156. # DEBUG BEGIN_STMT
  5157. _6 = pxTCB_25->uxPriority;
  5158. uxTopReadyPriority ={v} _6;
  5159. <bb 10> :
  5160. # DEBUG BEGIN_STMT
  5161. # DEBUG BEGIN_STMT
  5162. _7 = pxTCB_25->uxPriority;
  5163. pxIndex_31 = pxReadyTasksLists[_7].pxIndex;
  5164. # DEBUG pxIndex => pxIndex_31
  5165. # DEBUG BEGIN_STMT
  5166. # DEBUG BEGIN_STMT
  5167. # DEBUG BEGIN_STMT
  5168. pxTCB_25->xStateListItem.pxNext = pxIndex_31;
  5169. # DEBUG BEGIN_STMT
  5170. _8 = pxIndex_31->pxPrevious;
  5171. pxTCB_25->xStateListItem.pxPrevious = _8;
  5172. # DEBUG BEGIN_STMT
  5173. _9 = pxIndex_31->pxPrevious;
  5174. _10 = &pxTCB_25->xStateListItem;
  5175. _9->pxNext = _10;
  5176. # DEBUG BEGIN_STMT
  5177. _11 = &pxTCB_25->xStateListItem;
  5178. pxIndex_31->pxPrevious = _11;
  5179. # DEBUG BEGIN_STMT
  5180. _12 = pxTCB_25->uxPriority;
  5181. _13 = &pxReadyTasksLists[_12];
  5182. pxTCB_25->xStateListItem.pvContainer = _13;
  5183. # DEBUG BEGIN_STMT
  5184. _14 = pxTCB_25->uxPriority;
  5185. _15 ={v} pxReadyTasksLists[_14].uxNumberOfItems;
  5186. _16 = _15 + 1;
  5187. pxReadyTasksLists[_14].uxNumberOfItems ={v} _16;
  5188. # DEBUG BEGIN_STMT
  5189. # DEBUG BEGIN_STMT
  5190. # DEBUG BEGIN_STMT
  5191. _17 = pxTCB_25->uxPriority;
  5192. pxCurrentTCB.53_18 ={v} pxCurrentTCB;
  5193. _19 = pxCurrentTCB.53_18->uxPriority;
  5194. if (_17 >= _19)
  5195. goto <bb 11>; [INV]
  5196. else
  5197. goto <bb 12>; [INV]
  5198. <bb 11> :
  5199. # DEBUG BEGIN_STMT
  5200. _20 = 3758157060B;
  5201. *_20 ={v} 268435456;
  5202. # DEBUG BEGIN_STMT
  5203. __asm__ __volatile__("dsb" : : : "memory");
  5204. # DEBUG BEGIN_STMT
  5205. __asm__ __volatile__("isb");
  5206. # DEBUG BEGIN_STMT
  5207. <bb 12> :
  5208. # DEBUG BEGIN_STMT
  5209. # DEBUG BEGIN_STMT
  5210. vPortExitCritical ();
  5211. <bb 13> :
  5212. # DEBUG BEGIN_STMT
  5213. return;
  5214. }
  5215. prvTaskIsTaskSuspended (struct tskTaskControlBlock * const xTask)
  5216. {
  5217. const struct TCB_t * const pxTCB;
  5218. BaseType_t xReturn;
  5219. struct xLIST * _1;
  5220. struct xLIST * _2;
  5221. struct xLIST * _3;
  5222. BaseType_t _10;
  5223. <bb 2> :
  5224. # DEBUG BEGIN_STMT
  5225. xReturn_5 = 0;
  5226. # DEBUG xReturn => xReturn_5
  5227. # DEBUG BEGIN_STMT
  5228. pxTCB_7 = xTask_6(D);
  5229. # DEBUG pxTCB => pxTCB_7
  5230. # DEBUG BEGIN_STMT
  5231. if (xTask_6(D) == 0B)
  5232. goto <bb 3>; [INV]
  5233. else
  5234. goto <bb 5>; [INV]
  5235. <bb 3> :
  5236. # DEBUG BEGIN_STMT
  5237. vPortRaiseBASEPRI ();
  5238. <bb 4> :
  5239. # DEBUG BEGIN_STMT
  5240. # DEBUG BEGIN_STMT
  5241. # DEBUG BEGIN_STMT
  5242. goto <bb 4>; [INV]
  5243. <bb 5> :
  5244. # DEBUG BEGIN_STMT
  5245. # DEBUG BEGIN_STMT
  5246. _1 = pxTCB_7->xStateListItem.pvContainer;
  5247. if (_1 == &xSuspendedTaskList)
  5248. goto <bb 6>; [INV]
  5249. else
  5250. goto <bb 9>; [INV]
  5251. <bb 6> :
  5252. # DEBUG BEGIN_STMT
  5253. _2 = pxTCB_7->xEventListItem.pvContainer;
  5254. if (_2 != &xPendingReadyList)
  5255. goto <bb 7>; [INV]
  5256. else
  5257. goto <bb 9>; [INV]
  5258. <bb 7> :
  5259. # DEBUG BEGIN_STMT
  5260. _3 = pxTCB_7->xEventListItem.pvContainer;
  5261. if (_3 == 0B)
  5262. goto <bb 8>; [INV]
  5263. else
  5264. goto <bb 9>; [INV]
  5265. <bb 8> :
  5266. # DEBUG BEGIN_STMT
  5267. xReturn_9 = 1;
  5268. # DEBUG xReturn => xReturn_9
  5269. <bb 9> :
  5270. # xReturn_4 = PHI <xReturn_5(5), xReturn_9(8), xReturn_5(6), xReturn_5(7)>
  5271. # DEBUG xReturn => xReturn_4
  5272. # DEBUG BEGIN_STMT
  5273. # DEBUG BEGIN_STMT
  5274. _10 = xReturn_4;
  5275. return _10;
  5276. }
  5277. vTaskSuspend (struct tskTaskControlBlock * xTaskToSuspend)
  5278. {
  5279. BaseType_t x;
  5280. struct TCB_t * pxTCB;
  5281. struct ListItem_t * _1;
  5282. long unsigned int _2;
  5283. struct xLIST * _3;
  5284. struct ListItem_t * _4;
  5285. struct ListItem_t * _5;
  5286. unsigned char _6;
  5287. long int xSchedulerRunning.46_7;
  5288. struct TCB_t * pxCurrentTCB.47_8;
  5289. long int xSchedulerRunning.48_9;
  5290. long unsigned int uxSchedulerSuspended.49_10;
  5291. volatile uint32_t * _11;
  5292. long unsigned int _12;
  5293. long unsigned int uxCurrentNumberOfTasks.50_13;
  5294. struct TCB_t * iftmp.45_15;
  5295. struct TCB_t * iftmp.45_24;
  5296. struct TCB_t * iftmp.45_25;
  5297. <bb 2> :
  5298. # DEBUG BEGIN_STMT
  5299. # DEBUG BEGIN_STMT
  5300. vPortEnterCritical ();
  5301. # DEBUG BEGIN_STMT
  5302. if (xTaskToSuspend_23(D) == 0B)
  5303. goto <bb 3>; [INV]
  5304. else
  5305. goto <bb 4>; [INV]
  5306. <bb 3> :
  5307. iftmp.45_25 ={v} pxCurrentTCB;
  5308. goto <bb 5>; [INV]
  5309. <bb 4> :
  5310. iftmp.45_24 = xTaskToSuspend_23(D);
  5311. <bb 5> :
  5312. # iftmp.45_15 = PHI <iftmp.45_25(3), iftmp.45_24(4)>
  5313. pxTCB_26 = iftmp.45_15;
  5314. # DEBUG pxTCB => pxTCB_26
  5315. # DEBUG BEGIN_STMT
  5316. # DEBUG BEGIN_STMT
  5317. _1 = &pxTCB_26->xStateListItem;
  5318. _2 = uxListRemove (_1);
  5319. # DEBUG BEGIN_STMT
  5320. # DEBUG BEGIN_STMT
  5321. _3 = pxTCB_26->xEventListItem.pvContainer;
  5322. if (_3 != 0B)
  5323. goto <bb 6>; [INV]
  5324. else
  5325. goto <bb 7>; [INV]
  5326. <bb 6> :
  5327. # DEBUG BEGIN_STMT
  5328. _4 = &pxTCB_26->xEventListItem;
  5329. uxListRemove (_4);
  5330. <bb 7> :
  5331. # DEBUG BEGIN_STMT
  5332. # DEBUG BEGIN_STMT
  5333. _5 = &pxTCB_26->xStateListItem;
  5334. vListInsertEnd (&xSuspendedTaskList, _5);
  5335. # DEBUG BEGIN_STMT
  5336. # DEBUG BEGIN_STMT
  5337. x_30 = 0;
  5338. # DEBUG x => x_30
  5339. goto <bb 11>; [INV]
  5340. <bb 8> :
  5341. # DEBUG BEGIN_STMT
  5342. _6 ={v} pxTCB_26->ucNotifyState[x_14];
  5343. if (_6 == 1)
  5344. goto <bb 9>; [INV]
  5345. else
  5346. goto <bb 10>; [INV]
  5347. <bb 9> :
  5348. # DEBUG BEGIN_STMT
  5349. pxTCB_26->ucNotifyState[x_14] ={v} 0;
  5350. <bb 10> :
  5351. # DEBUG BEGIN_STMT
  5352. x_42 = x_14 + 1;
  5353. # DEBUG x => x_42
  5354. <bb 11> :
  5355. # x_14 = PHI <x_30(7), x_42(10)>
  5356. # DEBUG x => x_14
  5357. # DEBUG BEGIN_STMT
  5358. if (x_14 <= 0)
  5359. goto <bb 8>; [INV]
  5360. else
  5361. goto <bb 12>; [INV]
  5362. <bb 12> :
  5363. # DEBUG BEGIN_STMT
  5364. vPortExitCritical ();
  5365. # DEBUG BEGIN_STMT
  5366. xSchedulerRunning.46_7 ={v} xSchedulerRunning;
  5367. if (xSchedulerRunning.46_7 != 0)
  5368. goto <bb 13>; [INV]
  5369. else
  5370. goto <bb 14>; [INV]
  5371. <bb 13> :
  5372. # DEBUG BEGIN_STMT
  5373. vPortEnterCritical ();
  5374. # DEBUG BEGIN_STMT
  5375. prvResetNextTaskUnblockTime ();
  5376. # DEBUG BEGIN_STMT
  5377. vPortExitCritical ();
  5378. <bb 14> :
  5379. # DEBUG BEGIN_STMT
  5380. # DEBUG BEGIN_STMT
  5381. pxCurrentTCB.47_8 ={v} pxCurrentTCB;
  5382. if (pxTCB_26 == pxCurrentTCB.47_8)
  5383. goto <bb 15>; [INV]
  5384. else
  5385. goto <bb 23>; [INV]
  5386. <bb 15> :
  5387. # DEBUG BEGIN_STMT
  5388. xSchedulerRunning.48_9 ={v} xSchedulerRunning;
  5389. if (xSchedulerRunning.48_9 != 0)
  5390. goto <bb 16>; [INV]
  5391. else
  5392. goto <bb 20>; [INV]
  5393. <bb 16> :
  5394. # DEBUG BEGIN_STMT
  5395. uxSchedulerSuspended.49_10 ={v} uxSchedulerSuspended;
  5396. if (uxSchedulerSuspended.49_10 != 0)
  5397. goto <bb 17>; [INV]
  5398. else
  5399. goto <bb 19>; [INV]
  5400. <bb 17> :
  5401. # DEBUG BEGIN_STMT
  5402. vPortRaiseBASEPRI ();
  5403. <bb 18> :
  5404. # DEBUG BEGIN_STMT
  5405. # DEBUG BEGIN_STMT
  5406. # DEBUG BEGIN_STMT
  5407. goto <bb 18>; [INV]
  5408. <bb 19> :
  5409. # DEBUG BEGIN_STMT
  5410. # DEBUG BEGIN_STMT
  5411. _11 = 3758157060B;
  5412. *_11 ={v} 268435456;
  5413. # DEBUG BEGIN_STMT
  5414. __asm__ __volatile__("dsb" : : : "memory");
  5415. # DEBUG BEGIN_STMT
  5416. __asm__ __volatile__("isb");
  5417. # DEBUG BEGIN_STMT
  5418. goto <bb 23>; [INV]
  5419. <bb 20> :
  5420. # DEBUG BEGIN_STMT
  5421. _12 ={v} xSuspendedTaskList.uxNumberOfItems;
  5422. uxCurrentNumberOfTasks.50_13 ={v} uxCurrentNumberOfTasks;
  5423. if (_12 == uxCurrentNumberOfTasks.50_13)
  5424. goto <bb 21>; [INV]
  5425. else
  5426. goto <bb 22>; [INV]
  5427. <bb 21> :
  5428. # DEBUG BEGIN_STMT
  5429. pxCurrentTCB ={v} 0B;
  5430. goto <bb 23>; [INV]
  5431. <bb 22> :
  5432. # DEBUG BEGIN_STMT
  5433. vTaskSwitchContext ();
  5434. <bb 23> :
  5435. # DEBUG BEGIN_STMT
  5436. return;
  5437. }
  5438. vTaskPrioritySet (struct tskTaskControlBlock * xTask, UBaseType_t uxNewPriority)
  5439. {
  5440. struct ListItem_t * const pxIndex;
  5441. BaseType_t xYieldRequired;
  5442. UBaseType_t uxPriorityUsedOnEntry;
  5443. UBaseType_t uxCurrentBasePriority;
  5444. struct TCB_t * pxTCB;
  5445. struct TCB_t * pxCurrentTCB.41_1;
  5446. struct TCB_t * pxCurrentTCB.42_2;
  5447. long unsigned int _3;
  5448. struct TCB_t * pxCurrentTCB.43_4;
  5449. long unsigned int _5;
  5450. long unsigned int _6;
  5451. long unsigned int _7;
  5452. signed int _8;
  5453. long unsigned int _9;
  5454. struct xLIST * _10;
  5455. struct List_t * _11;
  5456. struct ListItem_t * _12;
  5457. long unsigned int _13;
  5458. long unsigned int _14;
  5459. long unsigned int uxTopReadyPriority.44_15;
  5460. long unsigned int _16;
  5461. long unsigned int _17;
  5462. struct xLIST_ITEM * _18;
  5463. struct xLIST_ITEM * _19;
  5464. struct ListItem_t * _20;
  5465. struct ListItem_t * _21;
  5466. long unsigned int _22;
  5467. struct List_t * _23;
  5468. long unsigned int _24;
  5469. long unsigned int _25;
  5470. long unsigned int _26;
  5471. volatile uint32_t * _27;
  5472. struct TCB_t * iftmp.40_30;
  5473. struct TCB_t * iftmp.40_42;
  5474. struct TCB_t * iftmp.40_43;
  5475. <bb 2> :
  5476. # DEBUG BEGIN_STMT
  5477. # DEBUG BEGIN_STMT
  5478. # DEBUG BEGIN_STMT
  5479. xYieldRequired_36 = 0;
  5480. # DEBUG xYieldRequired => xYieldRequired_36
  5481. # DEBUG BEGIN_STMT
  5482. if (uxNewPriority_37(D) > 4)
  5483. goto <bb 3>; [INV]
  5484. else
  5485. goto <bb 5>; [INV]
  5486. <bb 3> :
  5487. # DEBUG BEGIN_STMT
  5488. vPortRaiseBASEPRI ();
  5489. <bb 4> :
  5490. # DEBUG BEGIN_STMT
  5491. # DEBUG BEGIN_STMT
  5492. # DEBUG BEGIN_STMT
  5493. goto <bb 4>; [INV]
  5494. <bb 5> :
  5495. # DEBUG BEGIN_STMT
  5496. # DEBUG BEGIN_STMT
  5497. if (uxNewPriority_37(D) > 4)
  5498. goto <bb 6>; [INV]
  5499. else
  5500. goto <bb 7>; [INV]
  5501. <bb 6> :
  5502. # DEBUG BEGIN_STMT
  5503. uxNewPriority_38 = 4;
  5504. # DEBUG uxNewPriority => uxNewPriority_38
  5505. <bb 7> :
  5506. # uxNewPriority_28 = PHI <uxNewPriority_37(D)(5), uxNewPriority_38(6)>
  5507. # DEBUG uxNewPriority => uxNewPriority_28
  5508. # DEBUG BEGIN_STMT
  5509. # DEBUG BEGIN_STMT
  5510. vPortEnterCritical ();
  5511. # DEBUG BEGIN_STMT
  5512. if (xTask_41(D) == 0B)
  5513. goto <bb 8>; [INV]
  5514. else
  5515. goto <bb 9>; [INV]
  5516. <bb 8> :
  5517. iftmp.40_43 ={v} pxCurrentTCB;
  5518. goto <bb 10>; [INV]
  5519. <bb 9> :
  5520. iftmp.40_42 = xTask_41(D);
  5521. <bb 10> :
  5522. # iftmp.40_30 = PHI <iftmp.40_43(8), iftmp.40_42(9)>
  5523. pxTCB_44 = iftmp.40_30;
  5524. # DEBUG pxTCB => pxTCB_44
  5525. # DEBUG BEGIN_STMT
  5526. # DEBUG BEGIN_STMT
  5527. uxCurrentBasePriority_45 = pxTCB_44->uxBasePriority;
  5528. # DEBUG uxCurrentBasePriority => uxCurrentBasePriority_45
  5529. # DEBUG BEGIN_STMT
  5530. if (uxCurrentBasePriority_45 != uxNewPriority_28)
  5531. goto <bb 11>; [INV]
  5532. else
  5533. goto <bb 27>; [INV]
  5534. <bb 11> :
  5535. # DEBUG BEGIN_STMT
  5536. if (uxNewPriority_28 > uxCurrentBasePriority_45)
  5537. goto <bb 12>; [INV]
  5538. else
  5539. goto <bb 15>; [INV]
  5540. <bb 12> :
  5541. # DEBUG BEGIN_STMT
  5542. pxCurrentTCB.41_1 ={v} pxCurrentTCB;
  5543. if (pxTCB_44 != pxCurrentTCB.41_1)
  5544. goto <bb 13>; [INV]
  5545. else
  5546. goto <bb 17>; [INV]
  5547. <bb 13> :
  5548. # DEBUG BEGIN_STMT
  5549. pxCurrentTCB.42_2 ={v} pxCurrentTCB;
  5550. _3 = pxCurrentTCB.42_2->uxPriority;
  5551. if (uxNewPriority_28 >= _3)
  5552. goto <bb 14>; [INV]
  5553. else
  5554. goto <bb 17>; [INV]
  5555. <bb 14> :
  5556. # DEBUG BEGIN_STMT
  5557. xYieldRequired_47 = 1;
  5558. # DEBUG xYieldRequired => xYieldRequired_47
  5559. goto <bb 17>; [INV]
  5560. <bb 15> :
  5561. # DEBUG BEGIN_STMT
  5562. pxCurrentTCB.43_4 ={v} pxCurrentTCB;
  5563. if (pxTCB_44 == pxCurrentTCB.43_4)
  5564. goto <bb 16>; [INV]
  5565. else
  5566. goto <bb 17>; [INV]
  5567. <bb 16> :
  5568. # DEBUG BEGIN_STMT
  5569. xYieldRequired_46 = 1;
  5570. # DEBUG xYieldRequired => xYieldRequired_46
  5571. <bb 17> :
  5572. # xYieldRequired_29 = PHI <xYieldRequired_47(14), xYieldRequired_36(15), xYieldRequired_46(16), xYieldRequired_36(12), xYieldRequired_36(13)>
  5573. # DEBUG xYieldRequired => xYieldRequired_29
  5574. # DEBUG BEGIN_STMT
  5575. # DEBUG BEGIN_STMT
  5576. uxPriorityUsedOnEntry_48 = pxTCB_44->uxPriority;
  5577. # DEBUG uxPriorityUsedOnEntry => uxPriorityUsedOnEntry_48
  5578. # DEBUG BEGIN_STMT
  5579. _5 = pxTCB_44->uxBasePriority;
  5580. _6 = pxTCB_44->uxPriority;
  5581. if (_5 == _6)
  5582. goto <bb 18>; [INV]
  5583. else
  5584. goto <bb 19>; [INV]
  5585. <bb 18> :
  5586. # DEBUG BEGIN_STMT
  5587. pxTCB_44->uxPriority = uxNewPriority_28;
  5588. <bb 19> :
  5589. # DEBUG BEGIN_STMT
  5590. # DEBUG BEGIN_STMT
  5591. pxTCB_44->uxBasePriority = uxNewPriority_28;
  5592. # DEBUG BEGIN_STMT
  5593. _7 = pxTCB_44->xEventListItem.xItemValue;
  5594. _8 = (signed int) _7;
  5595. if (_8 >= 0)
  5596. goto <bb 20>; [INV]
  5597. else
  5598. goto <bb 21>; [INV]
  5599. <bb 20> :
  5600. # DEBUG BEGIN_STMT
  5601. _9 = 5 - uxNewPriority_28;
  5602. pxTCB_44->xEventListItem.xItemValue = _9;
  5603. <bb 21> :
  5604. # DEBUG BEGIN_STMT
  5605. # DEBUG BEGIN_STMT
  5606. _10 = pxTCB_44->xStateListItem.pvContainer;
  5607. _11 = &pxReadyTasksLists[uxPriorityUsedOnEntry_48];
  5608. if (_10 == _11)
  5609. goto <bb 22>; [INV]
  5610. else
  5611. goto <bb 25>; [INV]
  5612. <bb 22> :
  5613. # DEBUG BEGIN_STMT
  5614. _12 = &pxTCB_44->xStateListItem;
  5615. _13 = uxListRemove (_12);
  5616. # DEBUG BEGIN_STMT
  5617. # DEBUG BEGIN_STMT
  5618. # DEBUG BEGIN_STMT
  5619. _14 = pxTCB_44->uxPriority;
  5620. uxTopReadyPriority.44_15 ={v} uxTopReadyPriority;
  5621. if (_14 > uxTopReadyPriority.44_15)
  5622. goto <bb 23>; [INV]
  5623. else
  5624. goto <bb 24>; [INV]
  5625. <bb 23> :
  5626. # DEBUG BEGIN_STMT
  5627. _16 = pxTCB_44->uxPriority;
  5628. uxTopReadyPriority ={v} _16;
  5629. <bb 24> :
  5630. # DEBUG BEGIN_STMT
  5631. # DEBUG BEGIN_STMT
  5632. _17 = pxTCB_44->uxPriority;
  5633. pxIndex_54 = pxReadyTasksLists[_17].pxIndex;
  5634. # DEBUG pxIndex => pxIndex_54
  5635. # DEBUG BEGIN_STMT
  5636. # DEBUG BEGIN_STMT
  5637. # DEBUG BEGIN_STMT
  5638. pxTCB_44->xStateListItem.pxNext = pxIndex_54;
  5639. # DEBUG BEGIN_STMT
  5640. _18 = pxIndex_54->pxPrevious;
  5641. pxTCB_44->xStateListItem.pxPrevious = _18;
  5642. # DEBUG BEGIN_STMT
  5643. _19 = pxIndex_54->pxPrevious;
  5644. _20 = &pxTCB_44->xStateListItem;
  5645. _19->pxNext = _20;
  5646. # DEBUG BEGIN_STMT
  5647. _21 = &pxTCB_44->xStateListItem;
  5648. pxIndex_54->pxPrevious = _21;
  5649. # DEBUG BEGIN_STMT
  5650. _22 = pxTCB_44->uxPriority;
  5651. _23 = &pxReadyTasksLists[_22];
  5652. pxTCB_44->xStateListItem.pvContainer = _23;
  5653. # DEBUG BEGIN_STMT
  5654. _24 = pxTCB_44->uxPriority;
  5655. _25 ={v} pxReadyTasksLists[_24].uxNumberOfItems;
  5656. _26 = _25 + 1;
  5657. pxReadyTasksLists[_24].uxNumberOfItems ={v} _26;
  5658. # DEBUG BEGIN_STMT
  5659. # DEBUG BEGIN_STMT
  5660. <bb 25> :
  5661. # DEBUG BEGIN_STMT
  5662. # DEBUG BEGIN_STMT
  5663. if (xYieldRequired_29 != 0)
  5664. goto <bb 26>; [INV]
  5665. else
  5666. goto <bb 27>; [INV]
  5667. <bb 26> :
  5668. # DEBUG BEGIN_STMT
  5669. _27 = 3758157060B;
  5670. *_27 ={v} 268435456;
  5671. # DEBUG BEGIN_STMT
  5672. __asm__ __volatile__("dsb" : : : "memory");
  5673. # DEBUG BEGIN_STMT
  5674. __asm__ __volatile__("isb");
  5675. # DEBUG BEGIN_STMT
  5676. <bb 27> :
  5677. # DEBUG BEGIN_STMT
  5678. # DEBUG BEGIN_STMT
  5679. # DEBUG BEGIN_STMT
  5680. vPortExitCritical ();
  5681. return;
  5682. }
  5683. uxTaskPriorityGetFromISR (struct tskTaskControlBlock * const xTask)
  5684. {
  5685. UBaseType_t uxSavedInterruptState;
  5686. UBaseType_t uxReturn;
  5687. const struct TCB_t * pxTCB;
  5688. const struct TCB_t * iftmp.39_1;
  5689. const struct TCB_t * iftmp.39_7;
  5690. const struct TCB_t * iftmp.39_8;
  5691. UBaseType_t _12;
  5692. <bb 2> :
  5693. # DEBUG BEGIN_STMT
  5694. # DEBUG BEGIN_STMT
  5695. # DEBUG BEGIN_STMT
  5696. vPortValidateInterruptPriority ();
  5697. # DEBUG BEGIN_STMT
  5698. uxSavedInterruptState_5 = ulPortRaiseBASEPRI ();
  5699. # DEBUG uxSavedInterruptState => uxSavedInterruptState_5
  5700. # DEBUG BEGIN_STMT
  5701. if (xTask_6(D) == 0B)
  5702. goto <bb 3>; [INV]
  5703. else
  5704. goto <bb 4>; [INV]
  5705. <bb 3> :
  5706. iftmp.39_8 ={v} pxCurrentTCB;
  5707. goto <bb 5>; [INV]
  5708. <bb 4> :
  5709. iftmp.39_7 = xTask_6(D);
  5710. <bb 5> :
  5711. # iftmp.39_1 = PHI <iftmp.39_8(3), iftmp.39_7(4)>
  5712. pxTCB_9 = iftmp.39_1;
  5713. # DEBUG pxTCB => pxTCB_9
  5714. # DEBUG BEGIN_STMT
  5715. uxReturn_10 = pxTCB_9->uxPriority;
  5716. # DEBUG uxReturn => uxReturn_10
  5717. # DEBUG BEGIN_STMT
  5718. vPortSetBASEPRI (uxSavedInterruptState_5);
  5719. # DEBUG BEGIN_STMT
  5720. _12 = uxReturn_10;
  5721. return _12;
  5722. }
  5723. uxTaskPriorityGet (struct tskTaskControlBlock * const xTask)
  5724. {
  5725. UBaseType_t uxReturn;
  5726. const struct TCB_t * pxTCB;
  5727. const struct TCB_t * iftmp.38_1;
  5728. const struct TCB_t * iftmp.38_5;
  5729. const struct TCB_t * iftmp.38_6;
  5730. UBaseType_t _10;
  5731. <bb 2> :
  5732. # DEBUG BEGIN_STMT
  5733. # DEBUG BEGIN_STMT
  5734. # DEBUG BEGIN_STMT
  5735. vPortEnterCritical ();
  5736. # DEBUG BEGIN_STMT
  5737. if (xTask_4(D) == 0B)
  5738. goto <bb 3>; [INV]
  5739. else
  5740. goto <bb 4>; [INV]
  5741. <bb 3> :
  5742. iftmp.38_6 ={v} pxCurrentTCB;
  5743. goto <bb 5>; [INV]
  5744. <bb 4> :
  5745. iftmp.38_5 = xTask_4(D);
  5746. <bb 5> :
  5747. # iftmp.38_1 = PHI <iftmp.38_6(3), iftmp.38_5(4)>
  5748. pxTCB_7 = iftmp.38_1;
  5749. # DEBUG pxTCB => pxTCB_7
  5750. # DEBUG BEGIN_STMT
  5751. uxReturn_8 = pxTCB_7->uxPriority;
  5752. # DEBUG uxReturn => uxReturn_8
  5753. # DEBUG BEGIN_STMT
  5754. vPortExitCritical ();
  5755. # DEBUG BEGIN_STMT
  5756. _10 = uxReturn_8;
  5757. return _10;
  5758. }
  5759. eTaskGetState (struct tskTaskControlBlock * xTask)
  5760. {
  5761. BaseType_t x;
  5762. const struct TCB_t * const pxTCB;
  5763. const struct List_t * pxOverflowedDelayedList;
  5764. const struct List_t * pxDelayedList;
  5765. const struct List_t * pxStateList;
  5766. eTaskState eReturn;
  5767. struct TCB_t * pxCurrentTCB.37_1;
  5768. struct xLIST * _2;
  5769. unsigned char _3;
  5770. eTaskState _24;
  5771. <bb 2> :
  5772. # DEBUG BEGIN_STMT
  5773. # DEBUG BEGIN_STMT
  5774. # DEBUG BEGIN_STMT
  5775. pxTCB_8 = xTask_7(D);
  5776. # DEBUG pxTCB => pxTCB_8
  5777. # DEBUG BEGIN_STMT
  5778. if (pxTCB_8 == 0B)
  5779. goto <bb 3>; [INV]
  5780. else
  5781. goto <bb 5>; [INV]
  5782. <bb 3> :
  5783. # DEBUG BEGIN_STMT
  5784. vPortRaiseBASEPRI ();
  5785. <bb 4> :
  5786. # DEBUG BEGIN_STMT
  5787. # DEBUG BEGIN_STMT
  5788. # DEBUG BEGIN_STMT
  5789. goto <bb 4>; [INV]
  5790. <bb 5> :
  5791. # DEBUG BEGIN_STMT
  5792. # DEBUG BEGIN_STMT
  5793. pxCurrentTCB.37_1 ={v} pxCurrentTCB;
  5794. if (pxTCB_8 == pxCurrentTCB.37_1)
  5795. goto <bb 6>; [INV]
  5796. else
  5797. goto <bb 7>; [INV]
  5798. <bb 6> :
  5799. # DEBUG BEGIN_STMT
  5800. eReturn_23 = 0;
  5801. # DEBUG eReturn => eReturn_23
  5802. goto <bb 22>; [INV]
  5803. <bb 7> :
  5804. # DEBUG BEGIN_STMT
  5805. vPortEnterCritical ();
  5806. # DEBUG BEGIN_STMT
  5807. pxStateList_11 = pxTCB_8->xStateListItem.pvContainer;
  5808. # DEBUG pxStateList => pxStateList_11
  5809. # DEBUG BEGIN_STMT
  5810. pxDelayedList_12 ={v} pxDelayedTaskList;
  5811. # DEBUG pxDelayedList => pxDelayedList_12
  5812. # DEBUG BEGIN_STMT
  5813. pxOverflowedDelayedList_13 ={v} pxOverflowDelayedTaskList;
  5814. # DEBUG pxOverflowedDelayedList => pxOverflowedDelayedList_13
  5815. # DEBUG BEGIN_STMT
  5816. vPortExitCritical ();
  5817. # DEBUG BEGIN_STMT
  5818. if (pxStateList_11 == pxDelayedList_12)
  5819. goto <bb 9>; [INV]
  5820. else
  5821. goto <bb 8>; [INV]
  5822. <bb 8> :
  5823. if (pxStateList_11 == pxOverflowedDelayedList_13)
  5824. goto <bb 9>; [INV]
  5825. else
  5826. goto <bb 10>; [INV]
  5827. <bb 9> :
  5828. # DEBUG BEGIN_STMT
  5829. eReturn_22 = 2;
  5830. # DEBUG eReturn => eReturn_22
  5831. goto <bb 22>; [INV]
  5832. <bb 10> :
  5833. # DEBUG BEGIN_STMT
  5834. if (pxStateList_11 == &xSuspendedTaskList)
  5835. goto <bb 11>; [INV]
  5836. else
  5837. goto <bb 18>; [INV]
  5838. <bb 11> :
  5839. # DEBUG BEGIN_STMT
  5840. _2 = pxTCB_8->xEventListItem.pvContainer;
  5841. if (_2 == 0B)
  5842. goto <bb 12>; [INV]
  5843. else
  5844. goto <bb 17>; [INV]
  5845. <bb 12> :
  5846. # DEBUG BEGIN_STMT
  5847. # DEBUG BEGIN_STMT
  5848. eReturn_18 = 3;
  5849. # DEBUG eReturn => eReturn_18
  5850. # DEBUG BEGIN_STMT
  5851. x_19 = 0;
  5852. # DEBUG x => x_19
  5853. goto <bb 16>; [INV]
  5854. <bb 13> :
  5855. # DEBUG BEGIN_STMT
  5856. _3 ={v} pxTCB_8->ucNotifyState[x_5];
  5857. if (_3 == 1)
  5858. goto <bb 14>; [INV]
  5859. else
  5860. goto <bb 15>; [INV]
  5861. <bb 14> :
  5862. # DEBUG BEGIN_STMT
  5863. eReturn_21 = 2;
  5864. # DEBUG eReturn => eReturn_21
  5865. # DEBUG BEGIN_STMT
  5866. goto <bb 22>; [INV]
  5867. <bb 15> :
  5868. # DEBUG BEGIN_STMT
  5869. x_20 = x_5 + 1;
  5870. # DEBUG x => x_20
  5871. <bb 16> :
  5872. # x_5 = PHI <x_19(12), x_20(15)>
  5873. # DEBUG x => x_5
  5874. # DEBUG BEGIN_STMT
  5875. if (x_5 <= 0)
  5876. goto <bb 13>; [INV]
  5877. else
  5878. goto <bb 22>; [INV]
  5879. <bb 17> :
  5880. # DEBUG BEGIN_STMT
  5881. eReturn_17 = 2;
  5882. # DEBUG eReturn => eReturn_17
  5883. goto <bb 22>; [INV]
  5884. <bb 18> :
  5885. # DEBUG BEGIN_STMT
  5886. if (pxStateList_11 == &xTasksWaitingTermination)
  5887. goto <bb 20>; [INV]
  5888. else
  5889. goto <bb 19>; [INV]
  5890. <bb 19> :
  5891. if (pxStateList_11 == 0B)
  5892. goto <bb 20>; [INV]
  5893. else
  5894. goto <bb 21>; [INV]
  5895. <bb 20> :
  5896. # DEBUG BEGIN_STMT
  5897. eReturn_16 = 4;
  5898. # DEBUG eReturn => eReturn_16
  5899. goto <bb 22>; [INV]
  5900. <bb 21> :
  5901. # DEBUG BEGIN_STMT
  5902. eReturn_15 = 1;
  5903. # DEBUG eReturn => eReturn_15
  5904. <bb 22> :
  5905. # eReturn_4 = PHI <eReturn_23(6), eReturn_22(9), eReturn_17(17), eReturn_16(20), eReturn_15(21), eReturn_18(16), eReturn_21(14)>
  5906. # DEBUG eReturn => eReturn_4
  5907. # DEBUG BEGIN_STMT
  5908. _24 = eReturn_4;
  5909. return _24;
  5910. }
  5911. vTaskDelay (const TickType_t xTicksToDelay)
  5912. {
  5913. BaseType_t xAlreadyYielded;
  5914. long unsigned int uxSchedulerSuspended.36_1;
  5915. volatile uint32_t * _2;
  5916. <bb 2> :
  5917. # DEBUG BEGIN_STMT
  5918. xAlreadyYielded_6 = 0;
  5919. # DEBUG xAlreadyYielded => xAlreadyYielded_6
  5920. # DEBUG BEGIN_STMT
  5921. if (xTicksToDelay_7(D) != 0)
  5922. goto <bb 3>; [INV]
  5923. else
  5924. goto <bb 7>; [INV]
  5925. <bb 3> :
  5926. # DEBUG BEGIN_STMT
  5927. uxSchedulerSuspended.36_1 ={v} uxSchedulerSuspended;
  5928. if (uxSchedulerSuspended.36_1 != 0)
  5929. goto <bb 4>; [INV]
  5930. else
  5931. goto <bb 6>; [INV]
  5932. <bb 4> :
  5933. # DEBUG BEGIN_STMT
  5934. vPortRaiseBASEPRI ();
  5935. <bb 5> :
  5936. # DEBUG BEGIN_STMT
  5937. # DEBUG BEGIN_STMT
  5938. # DEBUG BEGIN_STMT
  5939. goto <bb 5>; [INV]
  5940. <bb 6> :
  5941. # DEBUG BEGIN_STMT
  5942. # DEBUG BEGIN_STMT
  5943. vTaskSuspendAll ();
  5944. # DEBUG BEGIN_STMT
  5945. # DEBUG BEGIN_STMT
  5946. prvAddCurrentTaskToDelayedList (xTicksToDelay_7(D), 0);
  5947. # DEBUG BEGIN_STMT
  5948. xAlreadyYielded_12 = xTaskResumeAll ();
  5949. # DEBUG xAlreadyYielded => xAlreadyYielded_12
  5950. <bb 7> :
  5951. # xAlreadyYielded_3 = PHI <xAlreadyYielded_6(2), xAlreadyYielded_12(6)>
  5952. # DEBUG xAlreadyYielded => xAlreadyYielded_3
  5953. # DEBUG BEGIN_STMT
  5954. # DEBUG BEGIN_STMT
  5955. if (xAlreadyYielded_3 == 0)
  5956. goto <bb 8>; [INV]
  5957. else
  5958. goto <bb 9>; [INV]
  5959. <bb 8> :
  5960. # DEBUG BEGIN_STMT
  5961. _2 = 3758157060B;
  5962. *_2 ={v} 268435456;
  5963. # DEBUG BEGIN_STMT
  5964. __asm__ __volatile__("dsb" : : : "memory");
  5965. # DEBUG BEGIN_STMT
  5966. __asm__ __volatile__("isb");
  5967. # DEBUG BEGIN_STMT
  5968. <bb 9> :
  5969. # DEBUG BEGIN_STMT
  5970. return;
  5971. }
  5972. xTaskDelayUntil (TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement)
  5973. {
  5974. const TickType_t xConstTickCount;
  5975. BaseType_t xShouldDelay;
  5976. BaseType_t xAlreadyYielded;
  5977. TickType_t xTimeToWake;
  5978. long unsigned int uxSchedulerSuspended.22_1;
  5979. long unsigned int _2;
  5980. long unsigned int _3;
  5981. long unsigned int _4;
  5982. long unsigned int _5;
  5983. long unsigned int _6;
  5984. volatile uint32_t * _7;
  5985. BaseType_t _27;
  5986. <bb 2> :
  5987. # DEBUG BEGIN_STMT
  5988. # DEBUG BEGIN_STMT
  5989. xShouldDelay_11 = 0;
  5990. # DEBUG xShouldDelay => xShouldDelay_11
  5991. # DEBUG BEGIN_STMT
  5992. if (pxPreviousWakeTime_12(D) == 0B)
  5993. goto <bb 3>; [INV]
  5994. else
  5995. goto <bb 5>; [INV]
  5996. <bb 3> :
  5997. # DEBUG BEGIN_STMT
  5998. vPortRaiseBASEPRI ();
  5999. <bb 4> :
  6000. # DEBUG BEGIN_STMT
  6001. # DEBUG BEGIN_STMT
  6002. # DEBUG BEGIN_STMT
  6003. goto <bb 4>; [INV]
  6004. <bb 5> :
  6005. # DEBUG BEGIN_STMT
  6006. # DEBUG BEGIN_STMT
  6007. if (xTimeIncrement_13(D) == 0)
  6008. goto <bb 6>; [INV]
  6009. else
  6010. goto <bb 8>; [INV]
  6011. <bb 6> :
  6012. # DEBUG BEGIN_STMT
  6013. vPortRaiseBASEPRI ();
  6014. <bb 7> :
  6015. # DEBUG BEGIN_STMT
  6016. # DEBUG BEGIN_STMT
  6017. # DEBUG BEGIN_STMT
  6018. goto <bb 7>; [INV]
  6019. <bb 8> :
  6020. # DEBUG BEGIN_STMT
  6021. # DEBUG BEGIN_STMT
  6022. uxSchedulerSuspended.22_1 ={v} uxSchedulerSuspended;
  6023. if (uxSchedulerSuspended.22_1 != 0)
  6024. goto <bb 9>; [INV]
  6025. else
  6026. goto <bb 11>; [INV]
  6027. <bb 9> :
  6028. # DEBUG BEGIN_STMT
  6029. vPortRaiseBASEPRI ();
  6030. <bb 10> :
  6031. # DEBUG BEGIN_STMT
  6032. # DEBUG BEGIN_STMT
  6033. # DEBUG BEGIN_STMT
  6034. goto <bb 10>; [INV]
  6035. <bb 11> :
  6036. # DEBUG BEGIN_STMT
  6037. # DEBUG BEGIN_STMT
  6038. vTaskSuspendAll ();
  6039. # DEBUG BEGIN_STMT
  6040. xConstTickCount_16 ={v} xTickCount;
  6041. # DEBUG xConstTickCount => xConstTickCount_16
  6042. # DEBUG BEGIN_STMT
  6043. _2 = *pxPreviousWakeTime_12(D);
  6044. xTimeToWake_17 = xTimeIncrement_13(D) + _2;
  6045. # DEBUG xTimeToWake => xTimeToWake_17
  6046. # DEBUG BEGIN_STMT
  6047. _3 = *pxPreviousWakeTime_12(D);
  6048. if (xConstTickCount_16 < _3)
  6049. goto <bb 12>; [INV]
  6050. else
  6051. goto <bb 15>; [INV]
  6052. <bb 12> :
  6053. # DEBUG BEGIN_STMT
  6054. _4 = *pxPreviousWakeTime_12(D);
  6055. if (xTimeToWake_17 < _4)
  6056. goto <bb 13>; [INV]
  6057. else
  6058. goto <bb 18>; [INV]
  6059. <bb 13> :
  6060. if (xTimeToWake_17 > xConstTickCount_16)
  6061. goto <bb 14>; [INV]
  6062. else
  6063. goto <bb 18>; [INV]
  6064. <bb 14> :
  6065. # DEBUG BEGIN_STMT
  6066. xShouldDelay_19 = 1;
  6067. # DEBUG xShouldDelay => xShouldDelay_19
  6068. goto <bb 18>; [INV]
  6069. <bb 15> :
  6070. # DEBUG BEGIN_STMT
  6071. _5 = *pxPreviousWakeTime_12(D);
  6072. if (xTimeToWake_17 < _5)
  6073. goto <bb 17>; [INV]
  6074. else
  6075. goto <bb 16>; [INV]
  6076. <bb 16> :
  6077. if (xTimeToWake_17 > xConstTickCount_16)
  6078. goto <bb 17>; [INV]
  6079. else
  6080. goto <bb 18>; [INV]
  6081. <bb 17> :
  6082. # DEBUG BEGIN_STMT
  6083. xShouldDelay_18 = 1;
  6084. # DEBUG xShouldDelay => xShouldDelay_18
  6085. <bb 18> :
  6086. # xShouldDelay_8 = PHI <xShouldDelay_11(13), xShouldDelay_11(16), xShouldDelay_18(17), xShouldDelay_11(12), xShouldDelay_19(14)>
  6087. # DEBUG xShouldDelay => xShouldDelay_8
  6088. # DEBUG BEGIN_STMT
  6089. *pxPreviousWakeTime_12(D) = xTimeToWake_17;
  6090. # DEBUG BEGIN_STMT
  6091. if (xShouldDelay_8 != 0)
  6092. goto <bb 19>; [INV]
  6093. else
  6094. goto <bb 20>; [INV]
  6095. <bb 19> :
  6096. # DEBUG BEGIN_STMT
  6097. # DEBUG BEGIN_STMT
  6098. _6 = xTimeToWake_17 - xConstTickCount_16;
  6099. prvAddCurrentTaskToDelayedList (_6, 0);
  6100. <bb 20> :
  6101. # DEBUG BEGIN_STMT
  6102. # DEBUG BEGIN_STMT
  6103. xAlreadyYielded_23 = xTaskResumeAll ();
  6104. # DEBUG xAlreadyYielded => xAlreadyYielded_23
  6105. # DEBUG BEGIN_STMT
  6106. if (xAlreadyYielded_23 == 0)
  6107. goto <bb 21>; [INV]
  6108. else
  6109. goto <bb 22>; [INV]
  6110. <bb 21> :
  6111. # DEBUG BEGIN_STMT
  6112. _7 = 3758157060B;
  6113. *_7 ={v} 268435456;
  6114. # DEBUG BEGIN_STMT
  6115. __asm__ __volatile__("dsb" : : : "memory");
  6116. # DEBUG BEGIN_STMT
  6117. __asm__ __volatile__("isb");
  6118. # DEBUG BEGIN_STMT
  6119. <bb 22> :
  6120. # DEBUG BEGIN_STMT
  6121. # DEBUG BEGIN_STMT
  6122. _27 = xShouldDelay_8;
  6123. return _27;
  6124. }
  6125. vTaskDelete (struct tskTaskControlBlock * xTaskToDelete)
  6126. {
  6127. struct TCB_t * pxTCB;
  6128. struct ListItem_t * _1;
  6129. long unsigned int _2;
  6130. struct xLIST * _3;
  6131. struct ListItem_t * _4;
  6132. long unsigned int uxTaskNumber.13_5;
  6133. long unsigned int _6;
  6134. struct TCB_t * pxCurrentTCB.14_7;
  6135. struct ListItem_t * _8;
  6136. long unsigned int uxDeletedTasksWaitingCleanUp.15_9;
  6137. long unsigned int _10;
  6138. long unsigned int uxCurrentNumberOfTasks.16_11;
  6139. long unsigned int _12;
  6140. long int xSchedulerRunning.17_13;
  6141. struct TCB_t * pxCurrentTCB.18_14;
  6142. long unsigned int uxSchedulerSuspended.19_15;
  6143. volatile uint32_t * _16;
  6144. struct TCB_t * iftmp.12_17;
  6145. struct TCB_t * iftmp.12_24;
  6146. struct TCB_t * iftmp.12_25;
  6147. <bb 2> :
  6148. # DEBUG BEGIN_STMT
  6149. # DEBUG BEGIN_STMT
  6150. vPortEnterCritical ();
  6151. # DEBUG BEGIN_STMT
  6152. if (xTaskToDelete_23(D) == 0B)
  6153. goto <bb 3>; [INV]
  6154. else
  6155. goto <bb 4>; [INV]
  6156. <bb 3> :
  6157. iftmp.12_25 ={v} pxCurrentTCB;
  6158. goto <bb 5>; [INV]
  6159. <bb 4> :
  6160. iftmp.12_24 = xTaskToDelete_23(D);
  6161. <bb 5> :
  6162. # iftmp.12_17 = PHI <iftmp.12_25(3), iftmp.12_24(4)>
  6163. pxTCB_26 = iftmp.12_17;
  6164. # DEBUG pxTCB => pxTCB_26
  6165. # DEBUG BEGIN_STMT
  6166. _1 = &pxTCB_26->xStateListItem;
  6167. _2 = uxListRemove (_1);
  6168. # DEBUG BEGIN_STMT
  6169. # DEBUG BEGIN_STMT
  6170. _3 = pxTCB_26->xEventListItem.pvContainer;
  6171. if (_3 != 0B)
  6172. goto <bb 6>; [INV]
  6173. else
  6174. goto <bb 7>; [INV]
  6175. <bb 6> :
  6176. # DEBUG BEGIN_STMT
  6177. _4 = &pxTCB_26->xEventListItem;
  6178. uxListRemove (_4);
  6179. <bb 7> :
  6180. # DEBUG BEGIN_STMT
  6181. # DEBUG BEGIN_STMT
  6182. uxTaskNumber.13_5 = uxTaskNumber;
  6183. _6 = uxTaskNumber.13_5 + 1;
  6184. uxTaskNumber = _6;
  6185. # DEBUG BEGIN_STMT
  6186. pxCurrentTCB.14_7 ={v} pxCurrentTCB;
  6187. if (pxTCB_26 == pxCurrentTCB.14_7)
  6188. goto <bb 8>; [INV]
  6189. else
  6190. goto <bb 9>; [INV]
  6191. <bb 8> :
  6192. # DEBUG BEGIN_STMT
  6193. _8 = &pxTCB_26->xStateListItem;
  6194. vListInsertEnd (&xTasksWaitingTermination, _8);
  6195. # DEBUG BEGIN_STMT
  6196. uxDeletedTasksWaitingCleanUp.15_9 ={v} uxDeletedTasksWaitingCleanUp;
  6197. _10 = uxDeletedTasksWaitingCleanUp.15_9 + 1;
  6198. uxDeletedTasksWaitingCleanUp ={v} _10;
  6199. # DEBUG BEGIN_STMT
  6200. # DEBUG BEGIN_STMT
  6201. goto <bb 10>; [INV]
  6202. <bb 9> :
  6203. # DEBUG BEGIN_STMT
  6204. uxCurrentNumberOfTasks.16_11 ={v} uxCurrentNumberOfTasks;
  6205. _12 = uxCurrentNumberOfTasks.16_11 + 4294967295;
  6206. uxCurrentNumberOfTasks ={v} _12;
  6207. # DEBUG BEGIN_STMT
  6208. # DEBUG BEGIN_STMT
  6209. prvDeleteTCB (pxTCB_26);
  6210. # DEBUG BEGIN_STMT
  6211. prvResetNextTaskUnblockTime ();
  6212. <bb 10> :
  6213. # DEBUG BEGIN_STMT
  6214. vPortExitCritical ();
  6215. # DEBUG BEGIN_STMT
  6216. xSchedulerRunning.17_13 ={v} xSchedulerRunning;
  6217. if (xSchedulerRunning.17_13 != 0)
  6218. goto <bb 11>; [INV]
  6219. else
  6220. goto <bb 16>; [INV]
  6221. <bb 11> :
  6222. # DEBUG BEGIN_STMT
  6223. pxCurrentTCB.18_14 ={v} pxCurrentTCB;
  6224. if (pxTCB_26 == pxCurrentTCB.18_14)
  6225. goto <bb 12>; [INV]
  6226. else
  6227. goto <bb 16>; [INV]
  6228. <bb 12> :
  6229. # DEBUG BEGIN_STMT
  6230. uxSchedulerSuspended.19_15 ={v} uxSchedulerSuspended;
  6231. if (uxSchedulerSuspended.19_15 != 0)
  6232. goto <bb 13>; [INV]
  6233. else
  6234. goto <bb 15>; [INV]
  6235. <bb 13> :
  6236. # DEBUG BEGIN_STMT
  6237. vPortRaiseBASEPRI ();
  6238. <bb 14> :
  6239. # DEBUG BEGIN_STMT
  6240. # DEBUG BEGIN_STMT
  6241. # DEBUG BEGIN_STMT
  6242. goto <bb 14>; [INV]
  6243. <bb 15> :
  6244. # DEBUG BEGIN_STMT
  6245. # DEBUG BEGIN_STMT
  6246. _16 = 3758157060B;
  6247. *_16 ={v} 268435456;
  6248. # DEBUG BEGIN_STMT
  6249. __asm__ __volatile__("dsb" : : : "memory");
  6250. # DEBUG BEGIN_STMT
  6251. __asm__ __volatile__("isb");
  6252. # DEBUG BEGIN_STMT
  6253. <bb 16> :
  6254. # DEBUG BEGIN_STMT
  6255. return;
  6256. }
  6257. prvAddNewTaskToReadyList (struct TCB_t * pxNewTCB)
  6258. {
  6259. struct ListItem_t * const pxIndex;
  6260. long unsigned int uxCurrentNumberOfTasks.2_1;
  6261. long unsigned int _2;
  6262. struct TCB_t * pxCurrentTCB.3_3;
  6263. long unsigned int uxCurrentNumberOfTasks.4_4;
  6264. long int xSchedulerRunning.5_5;
  6265. struct TCB_t * pxCurrentTCB.6_6;
  6266. long unsigned int _7;
  6267. long unsigned int _8;
  6268. long unsigned int uxTaskNumber.7_9;
  6269. long unsigned int _10;
  6270. long unsigned int uxTaskNumber.8_11;
  6271. long unsigned int _12;
  6272. long unsigned int uxTopReadyPriority.9_13;
  6273. long unsigned int _14;
  6274. long unsigned int _15;
  6275. struct xLIST_ITEM * _16;
  6276. struct xLIST_ITEM * _17;
  6277. struct ListItem_t * _18;
  6278. struct ListItem_t * _19;
  6279. long unsigned int _20;
  6280. struct List_t * _21;
  6281. long unsigned int _22;
  6282. long unsigned int _23;
  6283. long unsigned int _24;
  6284. long int xSchedulerRunning.10_25;
  6285. struct TCB_t * pxCurrentTCB.11_26;
  6286. long unsigned int _27;
  6287. long unsigned int _28;
  6288. volatile uint32_t * _29;
  6289. <bb 2> :
  6290. # DEBUG BEGIN_STMT
  6291. vPortEnterCritical ();
  6292. # DEBUG BEGIN_STMT
  6293. uxCurrentNumberOfTasks.2_1 ={v} uxCurrentNumberOfTasks;
  6294. _2 = uxCurrentNumberOfTasks.2_1 + 1;
  6295. uxCurrentNumberOfTasks ={v} _2;
  6296. # DEBUG BEGIN_STMT
  6297. pxCurrentTCB.3_3 ={v} pxCurrentTCB;
  6298. if (pxCurrentTCB.3_3 == 0B)
  6299. goto <bb 3>; [INV]
  6300. else
  6301. goto <bb 5>; [INV]
  6302. <bb 3> :
  6303. # DEBUG BEGIN_STMT
  6304. pxCurrentTCB ={v} pxNewTCB_36(D);
  6305. # DEBUG BEGIN_STMT
  6306. uxCurrentNumberOfTasks.4_4 ={v} uxCurrentNumberOfTasks;
  6307. if (uxCurrentNumberOfTasks.4_4 == 1)
  6308. goto <bb 4>; [INV]
  6309. else
  6310. goto <bb 8>; [INV]
  6311. <bb 4> :
  6312. # DEBUG BEGIN_STMT
  6313. prvInitialiseTaskLists ();
  6314. goto <bb 8>; [INV]
  6315. <bb 5> :
  6316. # DEBUG BEGIN_STMT
  6317. xSchedulerRunning.5_5 ={v} xSchedulerRunning;
  6318. if (xSchedulerRunning.5_5 == 0)
  6319. goto <bb 6>; [INV]
  6320. else
  6321. goto <bb 8>; [INV]
  6322. <bb 6> :
  6323. # DEBUG BEGIN_STMT
  6324. pxCurrentTCB.6_6 ={v} pxCurrentTCB;
  6325. _7 = pxCurrentTCB.6_6->uxPriority;
  6326. _8 = pxNewTCB_36(D)->uxPriority;
  6327. if (_7 <= _8)
  6328. goto <bb 7>; [INV]
  6329. else
  6330. goto <bb 8>; [INV]
  6331. <bb 7> :
  6332. # DEBUG BEGIN_STMT
  6333. pxCurrentTCB ={v} pxNewTCB_36(D);
  6334. <bb 8> :
  6335. # DEBUG BEGIN_STMT
  6336. # DEBUG BEGIN_STMT
  6337. uxTaskNumber.7_9 = uxTaskNumber;
  6338. _10 = uxTaskNumber.7_9 + 1;
  6339. uxTaskNumber = _10;
  6340. # DEBUG BEGIN_STMT
  6341. uxTaskNumber.8_11 = uxTaskNumber;
  6342. pxNewTCB_36(D)->uxTCBNumber = uxTaskNumber.8_11;
  6343. # DEBUG BEGIN_STMT
  6344. # DEBUG BEGIN_STMT
  6345. # DEBUG BEGIN_STMT
  6346. _12 = pxNewTCB_36(D)->uxPriority;
  6347. uxTopReadyPriority.9_13 ={v} uxTopReadyPriority;
  6348. if (_12 > uxTopReadyPriority.9_13)
  6349. goto <bb 9>; [INV]
  6350. else
  6351. goto <bb 10>; [INV]
  6352. <bb 9> :
  6353. # DEBUG BEGIN_STMT
  6354. _14 = pxNewTCB_36(D)->uxPriority;
  6355. uxTopReadyPriority ={v} _14;
  6356. <bb 10> :
  6357. # DEBUG BEGIN_STMT
  6358. # DEBUG BEGIN_STMT
  6359. _15 = pxNewTCB_36(D)->uxPriority;
  6360. pxIndex_43 = pxReadyTasksLists[_15].pxIndex;
  6361. # DEBUG pxIndex => pxIndex_43
  6362. # DEBUG BEGIN_STMT
  6363. # DEBUG BEGIN_STMT
  6364. # DEBUG BEGIN_STMT
  6365. pxNewTCB_36(D)->xStateListItem.pxNext = pxIndex_43;
  6366. # DEBUG BEGIN_STMT
  6367. _16 = pxIndex_43->pxPrevious;
  6368. pxNewTCB_36(D)->xStateListItem.pxPrevious = _16;
  6369. # DEBUG BEGIN_STMT
  6370. _17 = pxIndex_43->pxPrevious;
  6371. _18 = &pxNewTCB_36(D)->xStateListItem;
  6372. _17->pxNext = _18;
  6373. # DEBUG BEGIN_STMT
  6374. _19 = &pxNewTCB_36(D)->xStateListItem;
  6375. pxIndex_43->pxPrevious = _19;
  6376. # DEBUG BEGIN_STMT
  6377. _20 = pxNewTCB_36(D)->uxPriority;
  6378. _21 = &pxReadyTasksLists[_20];
  6379. pxNewTCB_36(D)->xStateListItem.pvContainer = _21;
  6380. # DEBUG BEGIN_STMT
  6381. _22 = pxNewTCB_36(D)->uxPriority;
  6382. _23 ={v} pxReadyTasksLists[_22].uxNumberOfItems;
  6383. _24 = _23 + 1;
  6384. pxReadyTasksLists[_22].uxNumberOfItems ={v} _24;
  6385. # DEBUG BEGIN_STMT
  6386. # DEBUG BEGIN_STMT
  6387. # DEBUG BEGIN_STMT
  6388. # DEBUG BEGIN_STMT
  6389. vPortExitCritical ();
  6390. # DEBUG BEGIN_STMT
  6391. xSchedulerRunning.10_25 ={v} xSchedulerRunning;
  6392. if (xSchedulerRunning.10_25 != 0)
  6393. goto <bb 11>; [INV]
  6394. else
  6395. goto <bb 13>; [INV]
  6396. <bb 11> :
  6397. # DEBUG BEGIN_STMT
  6398. pxCurrentTCB.11_26 ={v} pxCurrentTCB;
  6399. _27 = pxCurrentTCB.11_26->uxPriority;
  6400. _28 = pxNewTCB_36(D)->uxPriority;
  6401. if (_27 < _28)
  6402. goto <bb 12>; [INV]
  6403. else
  6404. goto <bb 13>; [INV]
  6405. <bb 12> :
  6406. # DEBUG BEGIN_STMT
  6407. _29 = 3758157060B;
  6408. *_29 ={v} 268435456;
  6409. # DEBUG BEGIN_STMT
  6410. __asm__ __volatile__("dsb" : : : "memory");
  6411. # DEBUG BEGIN_STMT
  6412. __asm__ __volatile__("isb");
  6413. # DEBUG BEGIN_STMT
  6414. <bb 13> :
  6415. # DEBUG BEGIN_STMT
  6416. return;
  6417. }
  6418. prvInitialiseNewTask (void (*TaskFunction_t) (void *) pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, struct tskTaskControlBlock * * const pxCreatedTask, struct TCB_t * pxNewTCB, const struct MemoryRegion_t * const xRegions)
  6419. {
  6420. UBaseType_t x;
  6421. StackType_t * pxTopOfStack;
  6422. StackType_t * _1;
  6423. unsigned int _2;
  6424. StackType_t * _3;
  6425. sizetype _4;
  6426. sizetype _5;
  6427. long unsigned int pxTopOfStack.0_6;
  6428. long unsigned int _7;
  6429. long unsigned int pxTopOfStack.1_8;
  6430. long unsigned int _9;
  6431. const char * _10;
  6432. char _11;
  6433. const char * _12;
  6434. char _13;
  6435. struct ListItem_t * _14;
  6436. struct ListItem_t * _15;
  6437. long unsigned int _16;
  6438. volatile uint32_t * _17;
  6439. volatile uint8_t * _18;
  6440. StackType_t * _19;
  6441. <bb 2> :
  6442. # DEBUG BEGIN_STMT
  6443. # DEBUG BEGIN_STMT
  6444. # DEBUG BEGIN_STMT
  6445. _1 = pxNewTCB_27(D)->pxStack;
  6446. _2 = ulStackDepth_28(D) * 4;
  6447. memset (_1, 165, _2);
  6448. # DEBUG BEGIN_STMT
  6449. _3 = pxNewTCB_27(D)->pxStack;
  6450. _4 = ulStackDepth_28(D) + 1073741823;
  6451. _5 = _4 * 4;
  6452. pxTopOfStack_30 = _3 + _5;
  6453. # DEBUG pxTopOfStack => pxTopOfStack_30
  6454. # DEBUG BEGIN_STMT
  6455. pxTopOfStack.0_6 = (long unsigned int) pxTopOfStack_30;
  6456. _7 = pxTopOfStack.0_6 & 4294967288;
  6457. pxTopOfStack_31 = (StackType_t *) _7;
  6458. # DEBUG pxTopOfStack => pxTopOfStack_31
  6459. # DEBUG BEGIN_STMT
  6460. pxTopOfStack.1_8 = (long unsigned int) pxTopOfStack_31;
  6461. _9 = pxTopOfStack.1_8 & 7;
  6462. if (_9 != 0)
  6463. goto <bb 3>; [INV]
  6464. else
  6465. goto <bb 5>; [INV]
  6466. <bb 3> :
  6467. # DEBUG BEGIN_STMT
  6468. vPortRaiseBASEPRI ();
  6469. <bb 4> :
  6470. # DEBUG BEGIN_STMT
  6471. # DEBUG BEGIN_STMT
  6472. # DEBUG BEGIN_STMT
  6473. goto <bb 4>; [INV]
  6474. <bb 5> :
  6475. # DEBUG BEGIN_STMT
  6476. # DEBUG BEGIN_STMT
  6477. if (pcName_32(D) != 0B)
  6478. goto <bb 6>; [INV]
  6479. else
  6480. goto <bb 11>; [INV]
  6481. <bb 6> :
  6482. # DEBUG BEGIN_STMT
  6483. x_34 = 0;
  6484. # DEBUG x => x_34
  6485. goto <bb 9>; [INV]
  6486. <bb 7> :
  6487. # DEBUG BEGIN_STMT
  6488. _10 = pcName_32(D) + x_21;
  6489. _11 = *_10;
  6490. pxNewTCB_27(D)->pcTaskName[x_21] = _11;
  6491. # DEBUG BEGIN_STMT
  6492. _12 = pcName_32(D) + x_21;
  6493. _13 = *_12;
  6494. if (_13 == 0)
  6495. goto <bb 10>; [INV]
  6496. else
  6497. goto <bb 8>; [INV]
  6498. <bb 8> :
  6499. # DEBUG BEGIN_STMT
  6500. # DEBUG BEGIN_STMT
  6501. x_36 = x_21 + 1;
  6502. # DEBUG x => x_36
  6503. <bb 9> :
  6504. # x_21 = PHI <x_34(6), x_36(8)>
  6505. # DEBUG x => x_21
  6506. # DEBUG BEGIN_STMT
  6507. if (x_21 <= 9)
  6508. goto <bb 7>; [INV]
  6509. else
  6510. goto <bb 10>; [INV]
  6511. <bb 10> :
  6512. # DEBUG BEGIN_STMT
  6513. pxNewTCB_27(D)->pcTaskName[9] = 0;
  6514. goto <bb 12>; [INV]
  6515. <bb 11> :
  6516. # DEBUG BEGIN_STMT
  6517. pxNewTCB_27(D)->pcTaskName[0] = 0;
  6518. <bb 12> :
  6519. # DEBUG BEGIN_STMT
  6520. if (uxPriority_38(D) > 4)
  6521. goto <bb 13>; [INV]
  6522. else
  6523. goto <bb 15>; [INV]
  6524. <bb 13> :
  6525. # DEBUG BEGIN_STMT
  6526. vPortRaiseBASEPRI ();
  6527. <bb 14> :
  6528. # DEBUG BEGIN_STMT
  6529. # DEBUG BEGIN_STMT
  6530. # DEBUG BEGIN_STMT
  6531. goto <bb 14>; [INV]
  6532. <bb 15> :
  6533. # DEBUG BEGIN_STMT
  6534. # DEBUG BEGIN_STMT
  6535. if (uxPriority_38(D) > 4)
  6536. goto <bb 16>; [INV]
  6537. else
  6538. goto <bb 17>; [INV]
  6539. <bb 16> :
  6540. # DEBUG BEGIN_STMT
  6541. uxPriority_39 = 4;
  6542. # DEBUG uxPriority => uxPriority_39
  6543. <bb 17> :
  6544. # uxPriority_20 = PHI <uxPriority_38(D)(15), uxPriority_39(16)>
  6545. # DEBUG uxPriority => uxPriority_20
  6546. # DEBUG BEGIN_STMT
  6547. # DEBUG BEGIN_STMT
  6548. pxNewTCB_27(D)->uxPriority = uxPriority_20;
  6549. # DEBUG BEGIN_STMT
  6550. pxNewTCB_27(D)->uxBasePriority = uxPriority_20;
  6551. # DEBUG BEGIN_STMT
  6552. pxNewTCB_27(D)->uxMutexesHeld = 0;
  6553. # DEBUG BEGIN_STMT
  6554. _14 = &pxNewTCB_27(D)->xStateListItem;
  6555. vListInitialiseItem (_14);
  6556. # DEBUG BEGIN_STMT
  6557. _15 = &pxNewTCB_27(D)->xEventListItem;
  6558. vListInitialiseItem (_15);
  6559. # DEBUG BEGIN_STMT
  6560. pxNewTCB_27(D)->xStateListItem.pvOwner = pxNewTCB_27(D);
  6561. # DEBUG BEGIN_STMT
  6562. _16 = 5 - uxPriority_20;
  6563. pxNewTCB_27(D)->xEventListItem.xItemValue = _16;
  6564. # DEBUG BEGIN_STMT
  6565. pxNewTCB_27(D)->xEventListItem.pvOwner = pxNewTCB_27(D);
  6566. # DEBUG BEGIN_STMT
  6567. # DEBUG BEGIN_STMT
  6568. _17 = &pxNewTCB_27(D)->ulNotifiedValue[0];
  6569. memset (_17, 0, 4);
  6570. # DEBUG BEGIN_STMT
  6571. _18 = &pxNewTCB_27(D)->ucNotifyState[0];
  6572. memset (_18, 0, 1);
  6573. # DEBUG BEGIN_STMT
  6574. pxNewTCB_27(D)->ucDelayAborted = 0;
  6575. # DEBUG BEGIN_STMT
  6576. _19 = pxPortInitialiseStack (pxTopOfStack_31, pxTaskCode_51(D), pvParameters_52(D));
  6577. pxNewTCB_27(D)->pxTopOfStack = _19;
  6578. # DEBUG BEGIN_STMT
  6579. if (pxCreatedTask_55(D) != 0B)
  6580. goto <bb 18>; [INV]
  6581. else
  6582. goto <bb 19>; [INV]
  6583. <bb 18> :
  6584. # DEBUG BEGIN_STMT
  6585. *pxCreatedTask_55(D) = pxNewTCB_27(D);
  6586. <bb 19> :
  6587. # DEBUG BEGIN_STMT
  6588. return;
  6589. }
  6590. xTaskCreate (void (*TaskFunction_t) (void *) pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, struct tskTaskControlBlock * * const pxCreatedTask)
  6591. {
  6592. StackType_t * pxStack;
  6593. BaseType_t xReturn;
  6594. struct TCB_t * pxNewTCB;
  6595. unsigned int _1;
  6596. unsigned int _2;
  6597. long unsigned int _3;
  6598. BaseType_t _26;
  6599. <bb 2> :
  6600. # DEBUG BEGIN_STMT
  6601. # DEBUG BEGIN_STMT
  6602. # DEBUG BEGIN_STMT
  6603. # DEBUG BEGIN_STMT
  6604. _1 = (unsigned int) usStackDepth_8(D);
  6605. _2 = _1 * 4;
  6606. pxStack_11 = pvPortMalloc (_2);
  6607. # DEBUG pxStack => pxStack_11
  6608. # DEBUG BEGIN_STMT
  6609. if (pxStack_11 != 0B)
  6610. goto <bb 3>; [INV]
  6611. else
  6612. goto <bb 6>; [INV]
  6613. <bb 3> :
  6614. # DEBUG BEGIN_STMT
  6615. pxNewTCB_14 = pvPortMalloc (88);
  6616. # DEBUG pxNewTCB => pxNewTCB_14
  6617. # DEBUG BEGIN_STMT
  6618. if (pxNewTCB_14 != 0B)
  6619. goto <bb 4>; [INV]
  6620. else
  6621. goto <bb 5>; [INV]
  6622. <bb 4> :
  6623. # DEBUG BEGIN_STMT
  6624. pxNewTCB_14->pxStack = pxStack_11;
  6625. goto <bb 7>; [INV]
  6626. <bb 5> :
  6627. # DEBUG BEGIN_STMT
  6628. vPortFree (pxStack_11);
  6629. goto <bb 7>; [INV]
  6630. <bb 6> :
  6631. # DEBUG BEGIN_STMT
  6632. pxNewTCB_12 = 0B;
  6633. # DEBUG pxNewTCB => pxNewTCB_12
  6634. <bb 7> :
  6635. # pxNewTCB_4 = PHI <pxNewTCB_14(5), pxNewTCB_12(6), pxNewTCB_14(4)>
  6636. # DEBUG pxNewTCB => pxNewTCB_4
  6637. # DEBUG BEGIN_STMT
  6638. if (pxNewTCB_4 != 0B)
  6639. goto <bb 8>; [INV]
  6640. else
  6641. goto <bb 9>; [INV]
  6642. <bb 8> :
  6643. # DEBUG BEGIN_STMT
  6644. _3 = (long unsigned int) usStackDepth_8(D);
  6645. prvInitialiseNewTask (pxTaskCode_18(D), pcName_19(D), _3, pvParameters_20(D), uxPriority_21(D), pxCreatedTask_22(D), pxNewTCB_4, 0B);
  6646. # DEBUG BEGIN_STMT
  6647. prvAddNewTaskToReadyList (pxNewTCB_4);
  6648. # DEBUG BEGIN_STMT
  6649. xReturn_25 = 1;
  6650. # DEBUG xReturn => xReturn_25
  6651. goto <bb 10>; [INV]
  6652. <bb 9> :
  6653. # DEBUG BEGIN_STMT
  6654. xReturn_17 = -1;
  6655. # DEBUG xReturn => xReturn_17
  6656. <bb 10> :
  6657. # xReturn_5 = PHI <xReturn_25(8), xReturn_17(9)>
  6658. # DEBUG xReturn => xReturn_5
  6659. # DEBUG BEGIN_STMT
  6660. _26 = xReturn_5;
  6661. return _26;
  6662. }
  6663. __attribute__((always_inline))
  6664. vPortSetBASEPRI (uint32_t ulNewMaskValue)
  6665. {
  6666. <bb 2> :
  6667. # DEBUG BEGIN_STMT
  6668. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue_2(D) : "memory");
  6669. return;
  6670. }
  6671. __attribute__((always_inline))
  6672. ulPortRaiseBASEPRI ()
  6673. {
  6674. uint32_t ulNewBASEPRI;
  6675. uint32_t ulOriginalBASEPRI;
  6676. uint32_t _5;
  6677. <bb 2> :
  6678. # DEBUG BEGIN_STMT
  6679. # DEBUG BEGIN_STMT
  6680. __asm__ __volatile__(" mrs %0, basepri
  6681. mov %1, %2
  6682. msr basepri, %1
  6683. isb
  6684. dsb
  6685. " : "=r" ulOriginalBASEPRI_3, "=r" ulNewBASEPRI_4 : "i" 16 : "memory");
  6686. # DEBUG ulNewBASEPRI => ulNewBASEPRI_4
  6687. # DEBUG ulOriginalBASEPRI => ulOriginalBASEPRI_3
  6688. # DEBUG BEGIN_STMT
  6689. _5 = ulOriginalBASEPRI_3;
  6690. return _5;
  6691. }
  6692. __attribute__((always_inline))
  6693. vPortRaiseBASEPRI ()
  6694. {
  6695. uint32_t ulNewBASEPRI;
  6696. <bb 2> :
  6697. # DEBUG BEGIN_STMT
  6698. # DEBUG BEGIN_STMT
  6699. __asm__ __volatile__(" mov %0, %1
  6700. msr basepri, %0
  6701. isb
  6702. dsb
  6703. " : "=r" ulNewBASEPRI_3 : "i" 16 : "memory");
  6704. # DEBUG ulNewBASEPRI => ulNewBASEPRI_3
  6705. return;
  6706. }