tasks.c.017i.build_ssa_passes 129 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410
  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. <bb 2> :
  7. # DEBUG BEGIN_STMT
  8. # DEBUG BEGIN_STMT
  9. xConstTickCount = xTickCount;
  10. # DEBUG BEGIN_STMT
  11. pxCurrentTCB.23_1 = pxCurrentTCB;
  12. pxCurrentTCB.23_1->ucDelayAborted = 0;
  13. # DEBUG BEGIN_STMT
  14. pxCurrentTCB.24_2 = pxCurrentTCB;
  15. _3 = &pxCurrentTCB.24_2->xStateListItem;
  16. _4 = uxListRemove (_3);
  17. # DEBUG BEGIN_STMT
  18. # DEBUG BEGIN_STMT
  19. if (xTicksToWait == 4294967295)
  20. goto <bb 3>; [INV]
  21. else
  22. goto <bb 5>; [INV]
  23. <bb 3> :
  24. if (xCanBlockIndefinitely != 0)
  25. goto <bb 4>; [INV]
  26. else
  27. goto <bb 5>; [INV]
  28. <bb 4> :
  29. # DEBUG BEGIN_STMT
  30. pxIndex = xSuspendedTaskList.pxIndex;
  31. # DEBUG BEGIN_STMT
  32. # DEBUG BEGIN_STMT
  33. # DEBUG BEGIN_STMT
  34. pxCurrentTCB.25_5 = pxCurrentTCB;
  35. pxCurrentTCB.25_5->xStateListItem.pxNext = pxIndex;
  36. # DEBUG BEGIN_STMT
  37. pxCurrentTCB.26_6 = pxCurrentTCB;
  38. _7 = pxIndex->pxPrevious;
  39. pxCurrentTCB.26_6->xStateListItem.pxPrevious = _7;
  40. # DEBUG BEGIN_STMT
  41. pxCurrentTCB.27_8 = pxCurrentTCB;
  42. _9 = pxIndex->pxPrevious;
  43. _10 = &pxCurrentTCB.27_8->xStateListItem;
  44. _9->pxNext = _10;
  45. # DEBUG BEGIN_STMT
  46. pxCurrentTCB.28_11 = pxCurrentTCB;
  47. _12 = &pxCurrentTCB.28_11->xStateListItem;
  48. pxIndex->pxPrevious = _12;
  49. # DEBUG BEGIN_STMT
  50. pxCurrentTCB.29_13 = pxCurrentTCB;
  51. pxCurrentTCB.29_13->xStateListItem.pvContainer = &xSuspendedTaskList;
  52. # DEBUG BEGIN_STMT
  53. _14 = xSuspendedTaskList.uxNumberOfItems;
  54. _15 = _14 + 1;
  55. xSuspendedTaskList.uxNumberOfItems = _15;
  56. # DEBUG BEGIN_STMT
  57. goto <bb 9>; [INV]
  58. <bb 5> :
  59. # DEBUG BEGIN_STMT
  60. xTimeToWake = xConstTickCount + xTicksToWait;
  61. # DEBUG BEGIN_STMT
  62. pxCurrentTCB.30_16 = pxCurrentTCB;
  63. pxCurrentTCB.30_16->xStateListItem.xItemValue = xTimeToWake;
  64. # DEBUG BEGIN_STMT
  65. if (xTimeToWake < xConstTickCount)
  66. goto <bb 6>; [INV]
  67. else
  68. goto <bb 7>; [INV]
  69. <bb 6> :
  70. # DEBUG BEGIN_STMT
  71. pxOverflowDelayedTaskList.31_17 = pxOverflowDelayedTaskList;
  72. pxCurrentTCB.32_18 = pxCurrentTCB;
  73. _19 = &pxCurrentTCB.32_18->xStateListItem;
  74. vListInsert (pxOverflowDelayedTaskList.31_17, _19);
  75. goto <bb 9>; [INV]
  76. <bb 7> :
  77. # DEBUG BEGIN_STMT
  78. pxDelayedTaskList.33_20 = pxDelayedTaskList;
  79. pxCurrentTCB.34_21 = pxCurrentTCB;
  80. _22 = &pxCurrentTCB.34_21->xStateListItem;
  81. vListInsert (pxDelayedTaskList.33_20, _22);
  82. # DEBUG BEGIN_STMT
  83. xNextTaskUnblockTime.35_23 = xNextTaskUnblockTime;
  84. if (xTimeToWake < xNextTaskUnblockTime.35_23)
  85. goto <bb 8>; [INV]
  86. else
  87. goto <bb 9>; [INV]
  88. <bb 8> :
  89. # DEBUG BEGIN_STMT
  90. xNextTaskUnblockTime = xTimeToWake;
  91. <bb 9> :
  92. # DEBUG BEGIN_STMT
  93. return;
  94. }
  95. ulTaskGenericNotifyValueClear (struct tskTaskControlBlock * xTask, UBaseType_t uxIndexToClear, uint32_t ulBitsToClear)
  96. {
  97. uint32_t ulReturn;
  98. struct TCB_t * pxTCB;
  99. uint32_t D.8233;
  100. struct TCB_t * iftmp.164;
  101. <bb 2> :
  102. # DEBUG BEGIN_STMT
  103. # DEBUG BEGIN_STMT
  104. # DEBUG BEGIN_STMT
  105. if (xTask == 0B)
  106. goto <bb 3>; [INV]
  107. else
  108. goto <bb 4>; [INV]
  109. <bb 3> :
  110. iftmp.164 = pxCurrentTCB;
  111. goto <bb 5>; [INV]
  112. <bb 4> :
  113. iftmp.164 = xTask;
  114. <bb 5> :
  115. pxTCB = iftmp.164;
  116. # DEBUG BEGIN_STMT
  117. vPortEnterCritical ();
  118. # DEBUG BEGIN_STMT
  119. ulReturn = pxTCB->ulNotifiedValue[uxIndexToClear];
  120. # DEBUG BEGIN_STMT
  121. _1 = pxTCB->ulNotifiedValue[uxIndexToClear];
  122. _2 = ~ulBitsToClear;
  123. _3 = _1 & _2;
  124. pxTCB->ulNotifiedValue[uxIndexToClear] = _3;
  125. # DEBUG BEGIN_STMT
  126. vPortExitCritical ();
  127. # DEBUG BEGIN_STMT
  128. D.8233 = ulReturn;
  129. return D.8233;
  130. }
  131. xTaskGenericNotifyStateClear (struct tskTaskControlBlock * xTask, UBaseType_t uxIndexToClear)
  132. {
  133. BaseType_t xReturn;
  134. struct TCB_t * pxTCB;
  135. BaseType_t D.8227;
  136. struct TCB_t * iftmp.163;
  137. <bb 2> :
  138. # DEBUG BEGIN_STMT
  139. # DEBUG BEGIN_STMT
  140. # DEBUG BEGIN_STMT
  141. if (uxIndexToClear != 0)
  142. goto <bb 3>; [INV]
  143. else
  144. goto <bb 5>; [INV]
  145. <bb 3> :
  146. # DEBUG BEGIN_STMT
  147. vPortRaiseBASEPRI ();
  148. <bb 4> :
  149. # DEBUG BEGIN_STMT
  150. # DEBUG BEGIN_STMT
  151. # DEBUG BEGIN_STMT
  152. goto <bb 4>; [INV]
  153. <bb 5> :
  154. # DEBUG BEGIN_STMT
  155. # DEBUG BEGIN_STMT
  156. if (xTask == 0B)
  157. goto <bb 6>; [INV]
  158. else
  159. goto <bb 7>; [INV]
  160. <bb 6> :
  161. iftmp.163 = pxCurrentTCB;
  162. goto <bb 8>; [INV]
  163. <bb 7> :
  164. iftmp.163 = xTask;
  165. <bb 8> :
  166. pxTCB = iftmp.163;
  167. # DEBUG BEGIN_STMT
  168. vPortEnterCritical ();
  169. # DEBUG BEGIN_STMT
  170. _1 = pxTCB->ucNotifyState[uxIndexToClear];
  171. if (_1 == 2)
  172. goto <bb 9>; [INV]
  173. else
  174. goto <bb 10>; [INV]
  175. <bb 9> :
  176. # DEBUG BEGIN_STMT
  177. pxTCB->ucNotifyState[uxIndexToClear] = 0;
  178. # DEBUG BEGIN_STMT
  179. xReturn = 1;
  180. goto <bb 11>; [INV]
  181. <bb 10> :
  182. # DEBUG BEGIN_STMT
  183. xReturn = 0;
  184. <bb 11> :
  185. # DEBUG BEGIN_STMT
  186. vPortExitCritical ();
  187. # DEBUG BEGIN_STMT
  188. D.8227 = xReturn;
  189. return D.8227;
  190. }
  191. vTaskGenericNotifyGiveFromISR (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, BaseType_t * pxHigherPriorityTaskWoken)
  192. {
  193. struct ListItem_t * const pxIndex;
  194. struct ListItem_t * const pxIndex;
  195. struct List_t * const pxList;
  196. UBaseType_t uxSavedInterruptStatus;
  197. uint8_t ucOriginalNotifyState;
  198. struct TCB_t * pxTCB;
  199. <bb 2> :
  200. # DEBUG BEGIN_STMT
  201. # DEBUG BEGIN_STMT
  202. # DEBUG BEGIN_STMT
  203. # DEBUG BEGIN_STMT
  204. if (xTaskToNotify == 0B)
  205. goto <bb 3>; [INV]
  206. else
  207. goto <bb 5>; [INV]
  208. <bb 3> :
  209. # DEBUG BEGIN_STMT
  210. vPortRaiseBASEPRI ();
  211. <bb 4> :
  212. # DEBUG BEGIN_STMT
  213. # DEBUG BEGIN_STMT
  214. # DEBUG BEGIN_STMT
  215. goto <bb 4>; [INV]
  216. <bb 5> :
  217. # DEBUG BEGIN_STMT
  218. # DEBUG BEGIN_STMT
  219. if (uxIndexToNotify != 0)
  220. goto <bb 6>; [INV]
  221. else
  222. goto <bb 8>; [INV]
  223. <bb 6> :
  224. # DEBUG BEGIN_STMT
  225. vPortRaiseBASEPRI ();
  226. <bb 7> :
  227. # DEBUG BEGIN_STMT
  228. # DEBUG BEGIN_STMT
  229. # DEBUG BEGIN_STMT
  230. goto <bb 7>; [INV]
  231. <bb 8> :
  232. # DEBUG BEGIN_STMT
  233. # DEBUG BEGIN_STMT
  234. vPortValidateInterruptPriority ();
  235. # DEBUG BEGIN_STMT
  236. pxTCB = xTaskToNotify;
  237. # DEBUG BEGIN_STMT
  238. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  239. # DEBUG BEGIN_STMT
  240. ucOriginalNotifyState = pxTCB->ucNotifyState[uxIndexToNotify];
  241. # DEBUG BEGIN_STMT
  242. pxTCB->ucNotifyState[uxIndexToNotify] = 2;
  243. # DEBUG BEGIN_STMT
  244. _1 = pxTCB->ulNotifiedValue[uxIndexToNotify];
  245. _2 = _1 + 1;
  246. pxTCB->ulNotifiedValue[uxIndexToNotify] = _2;
  247. # DEBUG BEGIN_STMT
  248. # DEBUG BEGIN_STMT
  249. if (ucOriginalNotifyState == 1)
  250. goto <bb 9>; [INV]
  251. else
  252. goto <bb 23>; [INV]
  253. <bb 9> :
  254. # DEBUG BEGIN_STMT
  255. _3 = pxTCB->xEventListItem.pvContainer;
  256. if (_3 != 0B)
  257. goto <bb 10>; [INV]
  258. else
  259. goto <bb 12>; [INV]
  260. <bb 10> :
  261. # DEBUG BEGIN_STMT
  262. vPortRaiseBASEPRI ();
  263. <bb 11> :
  264. # DEBUG BEGIN_STMT
  265. # DEBUG BEGIN_STMT
  266. # DEBUG BEGIN_STMT
  267. goto <bb 11>; [INV]
  268. <bb 12> :
  269. # DEBUG BEGIN_STMT
  270. # DEBUG BEGIN_STMT
  271. uxSchedulerSuspended.160_4 = uxSchedulerSuspended;
  272. if (uxSchedulerSuspended.160_4 == 0)
  273. goto <bb 13>; [INV]
  274. else
  275. goto <bb 18>; [INV]
  276. <bb 13> :
  277. # DEBUG BEGIN_STMT
  278. pxList = pxTCB->xStateListItem.pvContainer;
  279. # DEBUG BEGIN_STMT
  280. _5 = pxTCB->xStateListItem.pxNext;
  281. _6 = pxTCB->xStateListItem.pxPrevious;
  282. _5->pxPrevious = _6;
  283. # DEBUG BEGIN_STMT
  284. _7 = pxTCB->xStateListItem.pxPrevious;
  285. _8 = pxTCB->xStateListItem.pxNext;
  286. _7->pxNext = _8;
  287. # DEBUG BEGIN_STMT
  288. _9 = pxList->pxIndex;
  289. _10 = &pxTCB->xStateListItem;
  290. if (_9 == _10)
  291. goto <bb 14>; [INV]
  292. else
  293. goto <bb 15>; [INV]
  294. <bb 14> :
  295. # DEBUG BEGIN_STMT
  296. _11 = pxTCB->xStateListItem.pxPrevious;
  297. pxList->pxIndex = _11;
  298. <bb 15> :
  299. # DEBUG BEGIN_STMT
  300. pxTCB->xStateListItem.pvContainer = 0B;
  301. # DEBUG BEGIN_STMT
  302. _12 = pxList->uxNumberOfItems;
  303. _13 = _12 + 4294967295;
  304. pxList->uxNumberOfItems = _13;
  305. # DEBUG BEGIN_STMT
  306. # DEBUG BEGIN_STMT
  307. # DEBUG BEGIN_STMT
  308. _14 = pxTCB->uxPriority;
  309. uxTopReadyPriority.161_15 = uxTopReadyPriority;
  310. if (_14 > uxTopReadyPriority.161_15)
  311. goto <bb 16>; [INV]
  312. else
  313. goto <bb 17>; [INV]
  314. <bb 16> :
  315. # DEBUG BEGIN_STMT
  316. _16 = pxTCB->uxPriority;
  317. uxTopReadyPriority = _16;
  318. <bb 17> :
  319. # DEBUG BEGIN_STMT
  320. # DEBUG BEGIN_STMT
  321. _17 = pxTCB->uxPriority;
  322. pxIndex = pxReadyTasksLists[_17].pxIndex;
  323. # DEBUG BEGIN_STMT
  324. # DEBUG BEGIN_STMT
  325. # DEBUG BEGIN_STMT
  326. pxTCB->xStateListItem.pxNext = pxIndex;
  327. # DEBUG BEGIN_STMT
  328. _18 = pxIndex->pxPrevious;
  329. pxTCB->xStateListItem.pxPrevious = _18;
  330. # DEBUG BEGIN_STMT
  331. _19 = pxIndex->pxPrevious;
  332. _20 = &pxTCB->xStateListItem;
  333. _19->pxNext = _20;
  334. # DEBUG BEGIN_STMT
  335. _21 = &pxTCB->xStateListItem;
  336. pxIndex->pxPrevious = _21;
  337. # DEBUG BEGIN_STMT
  338. _22 = pxTCB->uxPriority;
  339. _23 = &pxReadyTasksLists[_22];
  340. pxTCB->xStateListItem.pvContainer = _23;
  341. # DEBUG BEGIN_STMT
  342. _24 = pxTCB->uxPriority;
  343. _25 = pxReadyTasksLists[_24].uxNumberOfItems;
  344. _26 = _25 + 1;
  345. pxReadyTasksLists[_24].uxNumberOfItems = _26;
  346. # DEBUG BEGIN_STMT
  347. # DEBUG BEGIN_STMT
  348. goto <bb 19>; [INV]
  349. <bb 18> :
  350. # DEBUG BEGIN_STMT
  351. pxIndex = xPendingReadyList.pxIndex;
  352. # DEBUG BEGIN_STMT
  353. # DEBUG BEGIN_STMT
  354. # DEBUG BEGIN_STMT
  355. pxTCB->xEventListItem.pxNext = pxIndex;
  356. # DEBUG BEGIN_STMT
  357. _27 = pxIndex->pxPrevious;
  358. pxTCB->xEventListItem.pxPrevious = _27;
  359. # DEBUG BEGIN_STMT
  360. _28 = pxIndex->pxPrevious;
  361. _29 = &pxTCB->xEventListItem;
  362. _28->pxNext = _29;
  363. # DEBUG BEGIN_STMT
  364. _30 = &pxTCB->xEventListItem;
  365. pxIndex->pxPrevious = _30;
  366. # DEBUG BEGIN_STMT
  367. pxTCB->xEventListItem.pvContainer = &xPendingReadyList;
  368. # DEBUG BEGIN_STMT
  369. _31 = xPendingReadyList.uxNumberOfItems;
  370. _32 = _31 + 1;
  371. xPendingReadyList.uxNumberOfItems = _32;
  372. <bb 19> :
  373. # DEBUG BEGIN_STMT
  374. # DEBUG BEGIN_STMT
  375. _33 = pxTCB->uxPriority;
  376. pxCurrentTCB.162_34 = pxCurrentTCB;
  377. _35 = pxCurrentTCB.162_34->uxPriority;
  378. if (_33 > _35)
  379. goto <bb 20>; [INV]
  380. else
  381. goto <bb 23>; [INV]
  382. <bb 20> :
  383. # DEBUG BEGIN_STMT
  384. if (pxHigherPriorityTaskWoken != 0B)
  385. goto <bb 21>; [INV]
  386. else
  387. goto <bb 22>; [INV]
  388. <bb 21> :
  389. # DEBUG BEGIN_STMT
  390. *pxHigherPriorityTaskWoken = 1;
  391. <bb 22> :
  392. # DEBUG BEGIN_STMT
  393. xYieldPending = 1;
  394. <bb 23> :
  395. # DEBUG BEGIN_STMT
  396. # DEBUG BEGIN_STMT
  397. vPortSetBASEPRI (uxSavedInterruptStatus);
  398. return;
  399. }
  400. xTaskGenericNotifyFromISR (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t * pulPreviousNotificationValue, BaseType_t * pxHigherPriorityTaskWoken)
  401. {
  402. struct ListItem_t * const pxIndex;
  403. struct ListItem_t * const pxIndex;
  404. struct List_t * const pxList;
  405. UBaseType_t uxSavedInterruptStatus;
  406. BaseType_t xReturn;
  407. uint8_t ucOriginalNotifyState;
  408. struct TCB_t * pxTCB;
  409. BaseType_t D.8195;
  410. <bb 2> :
  411. # DEBUG BEGIN_STMT
  412. # DEBUG BEGIN_STMT
  413. # DEBUG BEGIN_STMT
  414. xReturn = 1;
  415. # DEBUG BEGIN_STMT
  416. # DEBUG BEGIN_STMT
  417. if (xTaskToNotify == 0B)
  418. goto <bb 3>; [INV]
  419. else
  420. goto <bb 5>; [INV]
  421. <bb 3> :
  422. # DEBUG BEGIN_STMT
  423. vPortRaiseBASEPRI ();
  424. <bb 4> :
  425. # DEBUG BEGIN_STMT
  426. # DEBUG BEGIN_STMT
  427. # DEBUG BEGIN_STMT
  428. goto <bb 4>; [INV]
  429. <bb 5> :
  430. # DEBUG BEGIN_STMT
  431. # DEBUG BEGIN_STMT
  432. if (uxIndexToNotify != 0)
  433. goto <bb 6>; [INV]
  434. else
  435. goto <bb 8>; [INV]
  436. <bb 6> :
  437. # DEBUG BEGIN_STMT
  438. vPortRaiseBASEPRI ();
  439. <bb 7> :
  440. # DEBUG BEGIN_STMT
  441. # DEBUG BEGIN_STMT
  442. # DEBUG BEGIN_STMT
  443. goto <bb 7>; [INV]
  444. <bb 8> :
  445. # DEBUG BEGIN_STMT
  446. # DEBUG BEGIN_STMT
  447. vPortValidateInterruptPriority ();
  448. # DEBUG BEGIN_STMT
  449. pxTCB = xTaskToNotify;
  450. # DEBUG BEGIN_STMT
  451. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  452. # DEBUG BEGIN_STMT
  453. if (pulPreviousNotificationValue != 0B)
  454. goto <bb 9>; [INV]
  455. else
  456. goto <bb 10>; [INV]
  457. <bb 9> :
  458. # DEBUG BEGIN_STMT
  459. _1 = pxTCB->ulNotifiedValue[uxIndexToNotify];
  460. *pulPreviousNotificationValue = _1;
  461. <bb 10> :
  462. # DEBUG BEGIN_STMT
  463. ucOriginalNotifyState = pxTCB->ucNotifyState[uxIndexToNotify];
  464. # DEBUG BEGIN_STMT
  465. pxTCB->ucNotifyState[uxIndexToNotify] = 2;
  466. # DEBUG BEGIN_STMT
  467. switch (eAction) <default: <L16> [INV], case 0: <L39> [INV], case 1: <L8> [INV], case 2: <L9> [INV], case 3: <L10> [INV], case 4: <L11> [INV]>
  468. <bb 11> :
  469. <L8>:
  470. # DEBUG BEGIN_STMT
  471. _2 = pxTCB->ulNotifiedValue[uxIndexToNotify];
  472. _3 = ulValue | _2;
  473. pxTCB->ulNotifiedValue[uxIndexToNotify] = _3;
  474. # DEBUG BEGIN_STMT
  475. goto <bb 20>; [INV]
  476. <bb 12> :
  477. <L9>:
  478. # DEBUG BEGIN_STMT
  479. _4 = pxTCB->ulNotifiedValue[uxIndexToNotify];
  480. _5 = _4 + 1;
  481. pxTCB->ulNotifiedValue[uxIndexToNotify] = _5;
  482. # DEBUG BEGIN_STMT
  483. goto <bb 20>; [INV]
  484. <bb 13> :
  485. <L10>:
  486. # DEBUG BEGIN_STMT
  487. pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue;
  488. # DEBUG BEGIN_STMT
  489. goto <bb 20>; [INV]
  490. <bb 14> :
  491. <L11>:
  492. # DEBUG BEGIN_STMT
  493. if (ucOriginalNotifyState != 2)
  494. goto <bb 15>; [INV]
  495. else
  496. goto <bb 16>; [INV]
  497. <bb 15> :
  498. # DEBUG BEGIN_STMT
  499. pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue;
  500. goto <bb 20>; [INV]
  501. <bb 16> :
  502. # DEBUG BEGIN_STMT
  503. xReturn = 0;
  504. goto <bb 20>; [INV]
  505. <bb 17> :
  506. <L16>:
  507. # DEBUG BEGIN_STMT
  508. xTickCount.156_6 = xTickCount;
  509. if (xTickCount.156_6 != 0)
  510. goto <bb 18>; [INV]
  511. else
  512. goto <bb 20>; [INV]
  513. <bb 18> :
  514. # DEBUG BEGIN_STMT
  515. vPortRaiseBASEPRI ();
  516. <bb 19> :
  517. # DEBUG BEGIN_STMT
  518. # DEBUG BEGIN_STMT
  519. # DEBUG BEGIN_STMT
  520. goto <bb 19>; [INV]
  521. <bb 20> :
  522. <L39>:
  523. # DEBUG BEGIN_STMT
  524. # DEBUG BEGIN_STMT
  525. if (ucOriginalNotifyState == 1)
  526. goto <bb 21>; [INV]
  527. else
  528. goto <bb 35>; [INV]
  529. <bb 21> :
  530. # DEBUG BEGIN_STMT
  531. _7 = pxTCB->xEventListItem.pvContainer;
  532. if (_7 != 0B)
  533. goto <bb 22>; [INV]
  534. else
  535. goto <bb 24>; [INV]
  536. <bb 22> :
  537. # DEBUG BEGIN_STMT
  538. vPortRaiseBASEPRI ();
  539. <bb 23> :
  540. # DEBUG BEGIN_STMT
  541. # DEBUG BEGIN_STMT
  542. # DEBUG BEGIN_STMT
  543. goto <bb 23>; [INV]
  544. <bb 24> :
  545. # DEBUG BEGIN_STMT
  546. # DEBUG BEGIN_STMT
  547. uxSchedulerSuspended.157_8 = uxSchedulerSuspended;
  548. if (uxSchedulerSuspended.157_8 == 0)
  549. goto <bb 25>; [INV]
  550. else
  551. goto <bb 30>; [INV]
  552. <bb 25> :
  553. # DEBUG BEGIN_STMT
  554. pxList = pxTCB->xStateListItem.pvContainer;
  555. # DEBUG BEGIN_STMT
  556. _9 = pxTCB->xStateListItem.pxNext;
  557. _10 = pxTCB->xStateListItem.pxPrevious;
  558. _9->pxPrevious = _10;
  559. # DEBUG BEGIN_STMT
  560. _11 = pxTCB->xStateListItem.pxPrevious;
  561. _12 = pxTCB->xStateListItem.pxNext;
  562. _11->pxNext = _12;
  563. # DEBUG BEGIN_STMT
  564. _13 = pxList->pxIndex;
  565. _14 = &pxTCB->xStateListItem;
  566. if (_13 == _14)
  567. goto <bb 26>; [INV]
  568. else
  569. goto <bb 27>; [INV]
  570. <bb 26> :
  571. # DEBUG BEGIN_STMT
  572. _15 = pxTCB->xStateListItem.pxPrevious;
  573. pxList->pxIndex = _15;
  574. <bb 27> :
  575. # DEBUG BEGIN_STMT
  576. pxTCB->xStateListItem.pvContainer = 0B;
  577. # DEBUG BEGIN_STMT
  578. _16 = pxList->uxNumberOfItems;
  579. _17 = _16 + 4294967295;
  580. pxList->uxNumberOfItems = _17;
  581. # DEBUG BEGIN_STMT
  582. # DEBUG BEGIN_STMT
  583. # DEBUG BEGIN_STMT
  584. _18 = pxTCB->uxPriority;
  585. uxTopReadyPriority.158_19 = uxTopReadyPriority;
  586. if (_18 > uxTopReadyPriority.158_19)
  587. goto <bb 28>; [INV]
  588. else
  589. goto <bb 29>; [INV]
  590. <bb 28> :
  591. # DEBUG BEGIN_STMT
  592. _20 = pxTCB->uxPriority;
  593. uxTopReadyPriority = _20;
  594. <bb 29> :
  595. # DEBUG BEGIN_STMT
  596. # DEBUG BEGIN_STMT
  597. _21 = pxTCB->uxPriority;
  598. pxIndex = pxReadyTasksLists[_21].pxIndex;
  599. # DEBUG BEGIN_STMT
  600. # DEBUG BEGIN_STMT
  601. # DEBUG BEGIN_STMT
  602. pxTCB->xStateListItem.pxNext = pxIndex;
  603. # DEBUG BEGIN_STMT
  604. _22 = pxIndex->pxPrevious;
  605. pxTCB->xStateListItem.pxPrevious = _22;
  606. # DEBUG BEGIN_STMT
  607. _23 = pxIndex->pxPrevious;
  608. _24 = &pxTCB->xStateListItem;
  609. _23->pxNext = _24;
  610. # DEBUG BEGIN_STMT
  611. _25 = &pxTCB->xStateListItem;
  612. pxIndex->pxPrevious = _25;
  613. # DEBUG BEGIN_STMT
  614. _26 = pxTCB->uxPriority;
  615. _27 = &pxReadyTasksLists[_26];
  616. pxTCB->xStateListItem.pvContainer = _27;
  617. # DEBUG BEGIN_STMT
  618. _28 = pxTCB->uxPriority;
  619. _29 = pxReadyTasksLists[_28].uxNumberOfItems;
  620. _30 = _29 + 1;
  621. pxReadyTasksLists[_28].uxNumberOfItems = _30;
  622. # DEBUG BEGIN_STMT
  623. # DEBUG BEGIN_STMT
  624. goto <bb 31>; [INV]
  625. <bb 30> :
  626. # DEBUG BEGIN_STMT
  627. pxIndex = xPendingReadyList.pxIndex;
  628. # DEBUG BEGIN_STMT
  629. # DEBUG BEGIN_STMT
  630. # DEBUG BEGIN_STMT
  631. pxTCB->xEventListItem.pxNext = pxIndex;
  632. # DEBUG BEGIN_STMT
  633. _31 = pxIndex->pxPrevious;
  634. pxTCB->xEventListItem.pxPrevious = _31;
  635. # DEBUG BEGIN_STMT
  636. _32 = pxIndex->pxPrevious;
  637. _33 = &pxTCB->xEventListItem;
  638. _32->pxNext = _33;
  639. # DEBUG BEGIN_STMT
  640. _34 = &pxTCB->xEventListItem;
  641. pxIndex->pxPrevious = _34;
  642. # DEBUG BEGIN_STMT
  643. pxTCB->xEventListItem.pvContainer = &xPendingReadyList;
  644. # DEBUG BEGIN_STMT
  645. _35 = xPendingReadyList.uxNumberOfItems;
  646. _36 = _35 + 1;
  647. xPendingReadyList.uxNumberOfItems = _36;
  648. <bb 31> :
  649. # DEBUG BEGIN_STMT
  650. # DEBUG BEGIN_STMT
  651. _37 = pxTCB->uxPriority;
  652. pxCurrentTCB.159_38 = pxCurrentTCB;
  653. _39 = pxCurrentTCB.159_38->uxPriority;
  654. if (_37 > _39)
  655. goto <bb 32>; [INV]
  656. else
  657. goto <bb 35>; [INV]
  658. <bb 32> :
  659. # DEBUG BEGIN_STMT
  660. if (pxHigherPriorityTaskWoken != 0B)
  661. goto <bb 33>; [INV]
  662. else
  663. goto <bb 34>; [INV]
  664. <bb 33> :
  665. # DEBUG BEGIN_STMT
  666. *pxHigherPriorityTaskWoken = 1;
  667. <bb 34> :
  668. # DEBUG BEGIN_STMT
  669. xYieldPending = 1;
  670. <bb 35> :
  671. # DEBUG BEGIN_STMT
  672. # DEBUG BEGIN_STMT
  673. vPortSetBASEPRI (uxSavedInterruptStatus);
  674. # DEBUG BEGIN_STMT
  675. D.8195 = xReturn;
  676. return D.8195;
  677. }
  678. xTaskGenericNotify (struct tskTaskControlBlock * xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t * pulPreviousNotificationValue)
  679. {
  680. struct ListItem_t * const pxIndex;
  681. struct List_t * const pxList;
  682. uint8_t ucOriginalNotifyState;
  683. BaseType_t xReturn;
  684. struct TCB_t * pxTCB;
  685. BaseType_t D.8165;
  686. <bb 2> :
  687. # DEBUG BEGIN_STMT
  688. # DEBUG BEGIN_STMT
  689. xReturn = 1;
  690. # DEBUG BEGIN_STMT
  691. # DEBUG BEGIN_STMT
  692. if (uxIndexToNotify != 0)
  693. goto <bb 3>; [INV]
  694. else
  695. goto <bb 5>; [INV]
  696. <bb 3> :
  697. # DEBUG BEGIN_STMT
  698. vPortRaiseBASEPRI ();
  699. <bb 4> :
  700. # DEBUG BEGIN_STMT
  701. # DEBUG BEGIN_STMT
  702. # DEBUG BEGIN_STMT
  703. goto <bb 4>; [INV]
  704. <bb 5> :
  705. # DEBUG BEGIN_STMT
  706. # DEBUG BEGIN_STMT
  707. if (xTaskToNotify == 0B)
  708. goto <bb 6>; [INV]
  709. else
  710. goto <bb 8>; [INV]
  711. <bb 6> :
  712. # DEBUG BEGIN_STMT
  713. vPortRaiseBASEPRI ();
  714. <bb 7> :
  715. # DEBUG BEGIN_STMT
  716. # DEBUG BEGIN_STMT
  717. # DEBUG BEGIN_STMT
  718. goto <bb 7>; [INV]
  719. <bb 8> :
  720. # DEBUG BEGIN_STMT
  721. # DEBUG BEGIN_STMT
  722. pxTCB = xTaskToNotify;
  723. # DEBUG BEGIN_STMT
  724. vPortEnterCritical ();
  725. # DEBUG BEGIN_STMT
  726. if (pulPreviousNotificationValue != 0B)
  727. goto <bb 9>; [INV]
  728. else
  729. goto <bb 10>; [INV]
  730. <bb 9> :
  731. # DEBUG BEGIN_STMT
  732. _1 = pxTCB->ulNotifiedValue[uxIndexToNotify];
  733. *pulPreviousNotificationValue = _1;
  734. <bb 10> :
  735. # DEBUG BEGIN_STMT
  736. ucOriginalNotifyState = pxTCB->ucNotifyState[uxIndexToNotify];
  737. # DEBUG BEGIN_STMT
  738. pxTCB->ucNotifyState[uxIndexToNotify] = 2;
  739. # DEBUG BEGIN_STMT
  740. switch (eAction) <default: <L16> [INV], case 0: <L35> [INV], case 1: <L8> [INV], case 2: <L9> [INV], case 3: <L10> [INV], case 4: <L11> [INV]>
  741. <bb 11> :
  742. <L8>:
  743. # DEBUG BEGIN_STMT
  744. _2 = pxTCB->ulNotifiedValue[uxIndexToNotify];
  745. _3 = ulValue | _2;
  746. pxTCB->ulNotifiedValue[uxIndexToNotify] = _3;
  747. # DEBUG BEGIN_STMT
  748. goto <bb 20>; [INV]
  749. <bb 12> :
  750. <L9>:
  751. # DEBUG BEGIN_STMT
  752. _4 = pxTCB->ulNotifiedValue[uxIndexToNotify];
  753. _5 = _4 + 1;
  754. pxTCB->ulNotifiedValue[uxIndexToNotify] = _5;
  755. # DEBUG BEGIN_STMT
  756. goto <bb 20>; [INV]
  757. <bb 13> :
  758. <L10>:
  759. # DEBUG BEGIN_STMT
  760. pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue;
  761. # DEBUG BEGIN_STMT
  762. goto <bb 20>; [INV]
  763. <bb 14> :
  764. <L11>:
  765. # DEBUG BEGIN_STMT
  766. if (ucOriginalNotifyState != 2)
  767. goto <bb 15>; [INV]
  768. else
  769. goto <bb 16>; [INV]
  770. <bb 15> :
  771. # DEBUG BEGIN_STMT
  772. pxTCB->ulNotifiedValue[uxIndexToNotify] = ulValue;
  773. goto <bb 20>; [INV]
  774. <bb 16> :
  775. # DEBUG BEGIN_STMT
  776. xReturn = 0;
  777. goto <bb 20>; [INV]
  778. <bb 17> :
  779. <L16>:
  780. # DEBUG BEGIN_STMT
  781. xTickCount.153_6 = xTickCount;
  782. if (xTickCount.153_6 != 0)
  783. goto <bb 18>; [INV]
  784. else
  785. goto <bb 20>; [INV]
  786. <bb 18> :
  787. # DEBUG BEGIN_STMT
  788. vPortRaiseBASEPRI ();
  789. <bb 19> :
  790. # DEBUG BEGIN_STMT
  791. # DEBUG BEGIN_STMT
  792. # DEBUG BEGIN_STMT
  793. goto <bb 19>; [INV]
  794. <bb 20> :
  795. <L35>:
  796. # DEBUG BEGIN_STMT
  797. # DEBUG BEGIN_STMT
  798. if (ucOriginalNotifyState == 1)
  799. goto <bb 21>; [INV]
  800. else
  801. goto <bb 30>; [INV]
  802. <bb 21> :
  803. # DEBUG BEGIN_STMT
  804. pxList = pxTCB->xStateListItem.pvContainer;
  805. # DEBUG BEGIN_STMT
  806. _7 = pxTCB->xStateListItem.pxNext;
  807. _8 = pxTCB->xStateListItem.pxPrevious;
  808. _7->pxPrevious = _8;
  809. # DEBUG BEGIN_STMT
  810. _9 = pxTCB->xStateListItem.pxPrevious;
  811. _10 = pxTCB->xStateListItem.pxNext;
  812. _9->pxNext = _10;
  813. # DEBUG BEGIN_STMT
  814. _11 = pxList->pxIndex;
  815. _12 = &pxTCB->xStateListItem;
  816. if (_11 == _12)
  817. goto <bb 22>; [INV]
  818. else
  819. goto <bb 23>; [INV]
  820. <bb 22> :
  821. # DEBUG BEGIN_STMT
  822. _13 = pxTCB->xStateListItem.pxPrevious;
  823. pxList->pxIndex = _13;
  824. <bb 23> :
  825. # DEBUG BEGIN_STMT
  826. pxTCB->xStateListItem.pvContainer = 0B;
  827. # DEBUG BEGIN_STMT
  828. _14 = pxList->uxNumberOfItems;
  829. _15 = _14 + 4294967295;
  830. pxList->uxNumberOfItems = _15;
  831. # DEBUG BEGIN_STMT
  832. # DEBUG BEGIN_STMT
  833. # DEBUG BEGIN_STMT
  834. _16 = pxTCB->uxPriority;
  835. uxTopReadyPriority.154_17 = uxTopReadyPriority;
  836. if (_16 > uxTopReadyPriority.154_17)
  837. goto <bb 24>; [INV]
  838. else
  839. goto <bb 25>; [INV]
  840. <bb 24> :
  841. # DEBUG BEGIN_STMT
  842. _18 = pxTCB->uxPriority;
  843. uxTopReadyPriority = _18;
  844. <bb 25> :
  845. # DEBUG BEGIN_STMT
  846. # DEBUG BEGIN_STMT
  847. _19 = pxTCB->uxPriority;
  848. pxIndex = pxReadyTasksLists[_19].pxIndex;
  849. # DEBUG BEGIN_STMT
  850. # DEBUG BEGIN_STMT
  851. # DEBUG BEGIN_STMT
  852. pxTCB->xStateListItem.pxNext = pxIndex;
  853. # DEBUG BEGIN_STMT
  854. _20 = pxIndex->pxPrevious;
  855. pxTCB->xStateListItem.pxPrevious = _20;
  856. # DEBUG BEGIN_STMT
  857. _21 = pxIndex->pxPrevious;
  858. _22 = &pxTCB->xStateListItem;
  859. _21->pxNext = _22;
  860. # DEBUG BEGIN_STMT
  861. _23 = &pxTCB->xStateListItem;
  862. pxIndex->pxPrevious = _23;
  863. # DEBUG BEGIN_STMT
  864. _24 = pxTCB->uxPriority;
  865. _25 = &pxReadyTasksLists[_24];
  866. pxTCB->xStateListItem.pvContainer = _25;
  867. # DEBUG BEGIN_STMT
  868. _26 = pxTCB->uxPriority;
  869. _27 = pxReadyTasksLists[_26].uxNumberOfItems;
  870. _28 = _27 + 1;
  871. pxReadyTasksLists[_26].uxNumberOfItems = _28;
  872. # DEBUG BEGIN_STMT
  873. # DEBUG BEGIN_STMT
  874. # DEBUG BEGIN_STMT
  875. _29 = pxTCB->xEventListItem.pvContainer;
  876. if (_29 != 0B)
  877. goto <bb 26>; [INV]
  878. else
  879. goto <bb 28>; [INV]
  880. <bb 26> :
  881. # DEBUG BEGIN_STMT
  882. vPortRaiseBASEPRI ();
  883. <bb 27> :
  884. # DEBUG BEGIN_STMT
  885. # DEBUG BEGIN_STMT
  886. # DEBUG BEGIN_STMT
  887. goto <bb 27>; [INV]
  888. <bb 28> :
  889. # DEBUG BEGIN_STMT
  890. # DEBUG BEGIN_STMT
  891. _30 = pxTCB->uxPriority;
  892. pxCurrentTCB.155_31 = pxCurrentTCB;
  893. _32 = pxCurrentTCB.155_31->uxPriority;
  894. if (_30 > _32)
  895. goto <bb 29>; [INV]
  896. else
  897. goto <bb 30>; [INV]
  898. <bb 29> :
  899. # DEBUG BEGIN_STMT
  900. _33 = 3758157060B;
  901. *_33 = 268435456;
  902. # DEBUG BEGIN_STMT
  903. __asm__ __volatile__("dsb" : : : "memory");
  904. # DEBUG BEGIN_STMT
  905. __asm__ __volatile__("isb");
  906. # DEBUG BEGIN_STMT
  907. <bb 30> :
  908. # DEBUG BEGIN_STMT
  909. # DEBUG BEGIN_STMT
  910. vPortExitCritical ();
  911. # DEBUG BEGIN_STMT
  912. D.8165 = xReturn;
  913. return D.8165;
  914. }
  915. xTaskGenericNotifyWait (UBaseType_t uxIndexToWait, uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t * pulNotificationValue, TickType_t xTicksToWait)
  916. {
  917. BaseType_t xReturn;
  918. BaseType_t D.8140;
  919. struct TCB_t * pxCurrentTCB.151;
  920. struct TCB_t * pxCurrentTCB.147;
  921. <bb 2> :
  922. # DEBUG BEGIN_STMT
  923. # DEBUG BEGIN_STMT
  924. if (uxIndexToWait != 0)
  925. goto <bb 3>; [INV]
  926. else
  927. goto <bb 5>; [INV]
  928. <bb 3> :
  929. # DEBUG BEGIN_STMT
  930. vPortRaiseBASEPRI ();
  931. <bb 4> :
  932. # DEBUG BEGIN_STMT
  933. # DEBUG BEGIN_STMT
  934. # DEBUG BEGIN_STMT
  935. goto <bb 4>; [INV]
  936. <bb 5> :
  937. # DEBUG BEGIN_STMT
  938. # DEBUG BEGIN_STMT
  939. vPortEnterCritical ();
  940. # DEBUG BEGIN_STMT
  941. pxCurrentTCB.146_1 = pxCurrentTCB;
  942. _2 = pxCurrentTCB.146_1->ucNotifyState[uxIndexToWait];
  943. if (_2 != 2)
  944. goto <bb 6>; [INV]
  945. else
  946. goto <bb 8>; [INV]
  947. <bb 6> :
  948. # DEBUG BEGIN_STMT
  949. pxCurrentTCB.147 = pxCurrentTCB;
  950. _3 = pxCurrentTCB.147->ulNotifiedValue[uxIndexToWait];
  951. _4 = ~ulBitsToClearOnEntry;
  952. _5 = _3 & _4;
  953. pxCurrentTCB.147->ulNotifiedValue[uxIndexToWait] = _5;
  954. # DEBUG BEGIN_STMT
  955. pxCurrentTCB.148_6 = pxCurrentTCB;
  956. pxCurrentTCB.148_6->ucNotifyState[uxIndexToWait] = 1;
  957. # DEBUG BEGIN_STMT
  958. if (xTicksToWait != 0)
  959. goto <bb 7>; [INV]
  960. else
  961. goto <bb 8>; [INV]
  962. <bb 7> :
  963. # DEBUG BEGIN_STMT
  964. prvAddCurrentTaskToDelayedList (xTicksToWait, 1);
  965. # DEBUG BEGIN_STMT
  966. # DEBUG BEGIN_STMT
  967. _7 = 3758157060B;
  968. *_7 = 268435456;
  969. # DEBUG BEGIN_STMT
  970. __asm__ __volatile__("dsb" : : : "memory");
  971. # DEBUG BEGIN_STMT
  972. __asm__ __volatile__("isb");
  973. # DEBUG BEGIN_STMT
  974. <bb 8> :
  975. # DEBUG BEGIN_STMT
  976. # DEBUG BEGIN_STMT
  977. vPortExitCritical ();
  978. # DEBUG BEGIN_STMT
  979. vPortEnterCritical ();
  980. # DEBUG BEGIN_STMT
  981. # DEBUG BEGIN_STMT
  982. if (pulNotificationValue != 0B)
  983. goto <bb 9>; [INV]
  984. else
  985. goto <bb 10>; [INV]
  986. <bb 9> :
  987. # DEBUG BEGIN_STMT
  988. pxCurrentTCB.149_8 = pxCurrentTCB;
  989. _9 = pxCurrentTCB.149_8->ulNotifiedValue[uxIndexToWait];
  990. *pulNotificationValue = _9;
  991. <bb 10> :
  992. # DEBUG BEGIN_STMT
  993. pxCurrentTCB.150_10 = pxCurrentTCB;
  994. _11 = pxCurrentTCB.150_10->ucNotifyState[uxIndexToWait];
  995. if (_11 != 2)
  996. goto <bb 11>; [INV]
  997. else
  998. goto <bb 12>; [INV]
  999. <bb 11> :
  1000. # DEBUG BEGIN_STMT
  1001. xReturn = 0;
  1002. goto <bb 13>; [INV]
  1003. <bb 12> :
  1004. # DEBUG BEGIN_STMT
  1005. pxCurrentTCB.151 = pxCurrentTCB;
  1006. _12 = pxCurrentTCB.151->ulNotifiedValue[uxIndexToWait];
  1007. _13 = ~ulBitsToClearOnExit;
  1008. _14 = _12 & _13;
  1009. pxCurrentTCB.151->ulNotifiedValue[uxIndexToWait] = _14;
  1010. # DEBUG BEGIN_STMT
  1011. xReturn = 1;
  1012. <bb 13> :
  1013. # DEBUG BEGIN_STMT
  1014. pxCurrentTCB.152_15 = pxCurrentTCB;
  1015. pxCurrentTCB.152_15->ucNotifyState[uxIndexToWait] = 0;
  1016. # DEBUG BEGIN_STMT
  1017. vPortExitCritical ();
  1018. # DEBUG BEGIN_STMT
  1019. D.8140 = xReturn;
  1020. return D.8140;
  1021. }
  1022. ulTaskGenericNotifyTake (UBaseType_t uxIndexToWait, BaseType_t xClearCountOnExit, TickType_t xTicksToWait)
  1023. {
  1024. uint32_t ulReturn;
  1025. uint32_t D.8123;
  1026. <bb 2> :
  1027. # DEBUG BEGIN_STMT
  1028. # DEBUG BEGIN_STMT
  1029. if (uxIndexToWait != 0)
  1030. goto <bb 3>; [INV]
  1031. else
  1032. goto <bb 5>; [INV]
  1033. <bb 3> :
  1034. # DEBUG BEGIN_STMT
  1035. vPortRaiseBASEPRI ();
  1036. <bb 4> :
  1037. # DEBUG BEGIN_STMT
  1038. # DEBUG BEGIN_STMT
  1039. # DEBUG BEGIN_STMT
  1040. goto <bb 4>; [INV]
  1041. <bb 5> :
  1042. # DEBUG BEGIN_STMT
  1043. # DEBUG BEGIN_STMT
  1044. vPortEnterCritical ();
  1045. # DEBUG BEGIN_STMT
  1046. pxCurrentTCB.140_1 = pxCurrentTCB;
  1047. _2 = pxCurrentTCB.140_1->ulNotifiedValue[uxIndexToWait];
  1048. if (_2 == 0)
  1049. goto <bb 6>; [INV]
  1050. else
  1051. goto <bb 8>; [INV]
  1052. <bb 6> :
  1053. # DEBUG BEGIN_STMT
  1054. pxCurrentTCB.141_3 = pxCurrentTCB;
  1055. pxCurrentTCB.141_3->ucNotifyState[uxIndexToWait] = 1;
  1056. # DEBUG BEGIN_STMT
  1057. if (xTicksToWait != 0)
  1058. goto <bb 7>; [INV]
  1059. else
  1060. goto <bb 8>; [INV]
  1061. <bb 7> :
  1062. # DEBUG BEGIN_STMT
  1063. prvAddCurrentTaskToDelayedList (xTicksToWait, 1);
  1064. # DEBUG BEGIN_STMT
  1065. # DEBUG BEGIN_STMT
  1066. _4 = 3758157060B;
  1067. *_4 = 268435456;
  1068. # DEBUG BEGIN_STMT
  1069. __asm__ __volatile__("dsb" : : : "memory");
  1070. # DEBUG BEGIN_STMT
  1071. __asm__ __volatile__("isb");
  1072. # DEBUG BEGIN_STMT
  1073. <bb 8> :
  1074. # DEBUG BEGIN_STMT
  1075. # DEBUG BEGIN_STMT
  1076. vPortExitCritical ();
  1077. # DEBUG BEGIN_STMT
  1078. vPortEnterCritical ();
  1079. # DEBUG BEGIN_STMT
  1080. # DEBUG BEGIN_STMT
  1081. pxCurrentTCB.142_5 = pxCurrentTCB;
  1082. ulReturn = pxCurrentTCB.142_5->ulNotifiedValue[uxIndexToWait];
  1083. # DEBUG BEGIN_STMT
  1084. if (ulReturn != 0)
  1085. goto <bb 9>; [INV]
  1086. else
  1087. goto <bb 12>; [INV]
  1088. <bb 9> :
  1089. # DEBUG BEGIN_STMT
  1090. if (xClearCountOnExit != 0)
  1091. goto <bb 10>; [INV]
  1092. else
  1093. goto <bb 11>; [INV]
  1094. <bb 10> :
  1095. # DEBUG BEGIN_STMT
  1096. pxCurrentTCB.143_6 = pxCurrentTCB;
  1097. pxCurrentTCB.143_6->ulNotifiedValue[uxIndexToWait] = 0;
  1098. goto <bb 12>; [INV]
  1099. <bb 11> :
  1100. # DEBUG BEGIN_STMT
  1101. pxCurrentTCB.144_7 = pxCurrentTCB;
  1102. _8 = ulReturn + 4294967295;
  1103. pxCurrentTCB.144_7->ulNotifiedValue[uxIndexToWait] = _8;
  1104. <bb 12> :
  1105. # DEBUG BEGIN_STMT
  1106. # DEBUG BEGIN_STMT
  1107. pxCurrentTCB.145_9 = pxCurrentTCB;
  1108. pxCurrentTCB.145_9->ucNotifyState[uxIndexToWait] = 0;
  1109. # DEBUG BEGIN_STMT
  1110. vPortExitCritical ();
  1111. # DEBUG BEGIN_STMT
  1112. D.8123 = ulReturn;
  1113. return D.8123;
  1114. }
  1115. pvTaskIncrementMutexHeldCount ()
  1116. {
  1117. struct tskTaskControlBlock * D.8107;
  1118. <bb 2> :
  1119. # DEBUG BEGIN_STMT
  1120. pxCurrentTCB.138_1 = pxCurrentTCB;
  1121. if (pxCurrentTCB.138_1 != 0B)
  1122. goto <bb 3>; [INV]
  1123. else
  1124. goto <bb 4>; [INV]
  1125. <bb 3> :
  1126. # DEBUG BEGIN_STMT
  1127. pxCurrentTCB.139_2 = pxCurrentTCB;
  1128. _3 = pxCurrentTCB.139_2->uxMutexesHeld;
  1129. _4 = _3 + 1;
  1130. pxCurrentTCB.139_2->uxMutexesHeld = _4;
  1131. <bb 4> :
  1132. # DEBUG BEGIN_STMT
  1133. D.8107 = pxCurrentTCB;
  1134. return D.8107;
  1135. }
  1136. uxTaskResetEventItemValue ()
  1137. {
  1138. TickType_t uxReturn;
  1139. TickType_t D.8103;
  1140. <bb 2> :
  1141. # DEBUG BEGIN_STMT
  1142. # DEBUG BEGIN_STMT
  1143. pxCurrentTCB.135_1 = pxCurrentTCB;
  1144. uxReturn = pxCurrentTCB.135_1->xEventListItem.xItemValue;
  1145. # DEBUG BEGIN_STMT
  1146. pxCurrentTCB.136_2 = pxCurrentTCB;
  1147. _3 = pxCurrentTCB.136_2->uxPriority;
  1148. pxCurrentTCB.137_4 = pxCurrentTCB;
  1149. _5 = 5 - _3;
  1150. pxCurrentTCB.137_4->xEventListItem.xItemValue = _5;
  1151. # DEBUG BEGIN_STMT
  1152. D.8103 = uxReturn;
  1153. return D.8103;
  1154. }
  1155. vTaskList (char * pcWriteBuffer)
  1156. {
  1157. char cStatus;
  1158. UBaseType_t x;
  1159. UBaseType_t uxArraySize;
  1160. struct TaskStatus_t * pxTaskStatusArray;
  1161. <bb 2> :
  1162. # DEBUG BEGIN_STMT
  1163. # DEBUG BEGIN_STMT
  1164. # DEBUG BEGIN_STMT
  1165. # DEBUG BEGIN_STMT
  1166. *pcWriteBuffer = 0;
  1167. # DEBUG BEGIN_STMT
  1168. uxArraySize = uxCurrentNumberOfTasks;
  1169. # DEBUG BEGIN_STMT
  1170. uxCurrentNumberOfTasks.134_1 = uxCurrentNumberOfTasks;
  1171. _2 = uxCurrentNumberOfTasks.134_1 * 36;
  1172. pxTaskStatusArray = pvPortMalloc (_2);
  1173. # DEBUG BEGIN_STMT
  1174. if (pxTaskStatusArray != 0B)
  1175. goto <bb 3>; [INV]
  1176. else
  1177. goto <bb 14>; [INV]
  1178. <bb 3> :
  1179. # DEBUG BEGIN_STMT
  1180. uxArraySize = uxTaskGetSystemState (pxTaskStatusArray, uxArraySize, 0B);
  1181. # DEBUG BEGIN_STMT
  1182. x = 0;
  1183. goto <bb 12>; [INV]
  1184. <bb 4> :
  1185. # DEBUG BEGIN_STMT
  1186. _3 = x * 36;
  1187. _4 = pxTaskStatusArray + _3;
  1188. _5 = _4->eCurrentState;
  1189. 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]>
  1190. <bb 5> :
  1191. <L2>:
  1192. # DEBUG BEGIN_STMT
  1193. cStatus = 88;
  1194. # DEBUG BEGIN_STMT
  1195. goto <bb 11>; [INV]
  1196. <bb 6> :
  1197. <L3>:
  1198. # DEBUG BEGIN_STMT
  1199. cStatus = 82;
  1200. # DEBUG BEGIN_STMT
  1201. goto <bb 11>; [INV]
  1202. <bb 7> :
  1203. <L4>:
  1204. # DEBUG BEGIN_STMT
  1205. cStatus = 66;
  1206. # DEBUG BEGIN_STMT
  1207. goto <bb 11>; [INV]
  1208. <bb 8> :
  1209. <L5>:
  1210. # DEBUG BEGIN_STMT
  1211. cStatus = 83;
  1212. # DEBUG BEGIN_STMT
  1213. goto <bb 11>; [INV]
  1214. <bb 9> :
  1215. <L6>:
  1216. # DEBUG BEGIN_STMT
  1217. cStatus = 68;
  1218. # DEBUG BEGIN_STMT
  1219. goto <bb 11>; [INV]
  1220. <bb 10> :
  1221. <L7>:
  1222. # DEBUG BEGIN_STMT
  1223. cStatus = 0;
  1224. # DEBUG BEGIN_STMT
  1225. <bb 11> :
  1226. # DEBUG BEGIN_STMT
  1227. _6 = x * 36;
  1228. _7 = pxTaskStatusArray + _6;
  1229. _8 = _7->pcTaskName;
  1230. pcWriteBuffer = prvWriteNameToBuffer (pcWriteBuffer, _8);
  1231. # DEBUG BEGIN_STMT
  1232. _9 = (int) cStatus;
  1233. _10 = x * 36;
  1234. _11 = pxTaskStatusArray + _10;
  1235. _12 = _11->uxCurrentPriority;
  1236. _13 = x * 36;
  1237. _14 = pxTaskStatusArray + _13;
  1238. _15 = _14->usStackHighWaterMark;
  1239. _16 = (unsigned int) _15;
  1240. _17 = x * 36;
  1241. _18 = pxTaskStatusArray + _17;
  1242. _19 = _18->xTaskNumber;
  1243. sprintf (pcWriteBuffer, "\t%c\t%u\t%u\t%u\r\n", _9, _12, _16, _19);
  1244. # DEBUG BEGIN_STMT
  1245. _20 = strlen (pcWriteBuffer);
  1246. pcWriteBuffer = pcWriteBuffer + _20;
  1247. # DEBUG BEGIN_STMT
  1248. x = x + 1;
  1249. <bb 12> :
  1250. # DEBUG BEGIN_STMT
  1251. if (x < uxArraySize)
  1252. goto <bb 4>; [INV]
  1253. else
  1254. goto <bb 13>; [INV]
  1255. <bb 13> :
  1256. # DEBUG BEGIN_STMT
  1257. vPortFree (pxTaskStatusArray);
  1258. <bb 14> :
  1259. # DEBUG BEGIN_STMT
  1260. return;
  1261. }
  1262. prvWriteNameToBuffer (char * pcBuffer, const char * pcTaskName)
  1263. {
  1264. size_t x;
  1265. char * D.8101;
  1266. <bb 2> :
  1267. # DEBUG BEGIN_STMT
  1268. # DEBUG BEGIN_STMT
  1269. strcpy (pcBuffer, pcTaskName);
  1270. # DEBUG BEGIN_STMT
  1271. x = strlen (pcBuffer);
  1272. goto <bb 4>; [INV]
  1273. <bb 3> :
  1274. # DEBUG BEGIN_STMT
  1275. _1 = pcBuffer + x;
  1276. *_1 = 32;
  1277. # DEBUG BEGIN_STMT
  1278. x = x + 1;
  1279. <bb 4> :
  1280. # DEBUG BEGIN_STMT
  1281. if (x <= 8)
  1282. goto <bb 3>; [INV]
  1283. else
  1284. goto <bb 5>; [INV]
  1285. <bb 5> :
  1286. # DEBUG BEGIN_STMT
  1287. _2 = pcBuffer + x;
  1288. *_2 = 0;
  1289. # DEBUG BEGIN_STMT
  1290. D.8101 = pcBuffer + x;
  1291. return D.8101;
  1292. }
  1293. vTaskPriorityDisinheritAfterTimeout (struct tskTaskControlBlock * const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask)
  1294. {
  1295. struct ListItem_t * const pxIndex;
  1296. const UBaseType_t uxOnlyOneMutexHeld;
  1297. UBaseType_t uxPriorityToUse;
  1298. UBaseType_t uxPriorityUsedOnEntry;
  1299. struct TCB_t * const pxTCB;
  1300. <bb 2> :
  1301. # DEBUG BEGIN_STMT
  1302. pxTCB = pxMutexHolder;
  1303. # DEBUG BEGIN_STMT
  1304. # DEBUG BEGIN_STMT
  1305. uxOnlyOneMutexHeld = 1;
  1306. # DEBUG BEGIN_STMT
  1307. if (pxMutexHolder != 0B)
  1308. goto <bb 3>; [INV]
  1309. else
  1310. goto <bb 20>; [INV]
  1311. <bb 3> :
  1312. # DEBUG BEGIN_STMT
  1313. _1 = pxTCB->uxMutexesHeld;
  1314. if (_1 == 0)
  1315. goto <bb 4>; [INV]
  1316. else
  1317. goto <bb 6>; [INV]
  1318. <bb 4> :
  1319. # DEBUG BEGIN_STMT
  1320. vPortRaiseBASEPRI ();
  1321. <bb 5> :
  1322. # DEBUG BEGIN_STMT
  1323. # DEBUG BEGIN_STMT
  1324. # DEBUG BEGIN_STMT
  1325. goto <bb 5>; [INV]
  1326. <bb 6> :
  1327. # DEBUG BEGIN_STMT
  1328. # DEBUG BEGIN_STMT
  1329. _2 = pxTCB->uxBasePriority;
  1330. if (uxHighestPriorityWaitingTask > _2)
  1331. goto <bb 7>; [INV]
  1332. else
  1333. goto <bb 8>; [INV]
  1334. <bb 7> :
  1335. # DEBUG BEGIN_STMT
  1336. uxPriorityToUse = uxHighestPriorityWaitingTask;
  1337. goto <bb 9>; [INV]
  1338. <bb 8> :
  1339. # DEBUG BEGIN_STMT
  1340. uxPriorityToUse = pxTCB->uxBasePriority;
  1341. <bb 9> :
  1342. # DEBUG BEGIN_STMT
  1343. _3 = pxTCB->uxPriority;
  1344. if (uxPriorityToUse != _3)
  1345. goto <bb 10>; [INV]
  1346. else
  1347. goto <bb 20>; [INV]
  1348. <bb 10> :
  1349. # DEBUG BEGIN_STMT
  1350. _4 = pxTCB->uxMutexesHeld;
  1351. if (_4 == 1)
  1352. goto <bb 11>; [INV]
  1353. else
  1354. goto <bb 20>; [INV]
  1355. <bb 11> :
  1356. # DEBUG BEGIN_STMT
  1357. pxCurrentTCB.132_5 = pxCurrentTCB;
  1358. if (pxTCB == pxCurrentTCB.132_5)
  1359. goto <bb 12>; [INV]
  1360. else
  1361. goto <bb 14>; [INV]
  1362. <bb 12> :
  1363. # DEBUG BEGIN_STMT
  1364. vPortRaiseBASEPRI ();
  1365. <bb 13> :
  1366. # DEBUG BEGIN_STMT
  1367. # DEBUG BEGIN_STMT
  1368. # DEBUG BEGIN_STMT
  1369. goto <bb 13>; [INV]
  1370. <bb 14> :
  1371. # DEBUG BEGIN_STMT
  1372. # DEBUG BEGIN_STMT
  1373. # DEBUG BEGIN_STMT
  1374. uxPriorityUsedOnEntry = pxTCB->uxPriority;
  1375. # DEBUG BEGIN_STMT
  1376. pxTCB->uxPriority = uxPriorityToUse;
  1377. # DEBUG BEGIN_STMT
  1378. _6 = pxTCB->xEventListItem.xItemValue;
  1379. _7 = (signed int) _6;
  1380. if (_7 >= 0)
  1381. goto <bb 15>; [INV]
  1382. else
  1383. goto <bb 16>; [INV]
  1384. <bb 15> :
  1385. # DEBUG BEGIN_STMT
  1386. _8 = 5 - uxPriorityToUse;
  1387. pxTCB->xEventListItem.xItemValue = _8;
  1388. <bb 16> :
  1389. # DEBUG BEGIN_STMT
  1390. # DEBUG BEGIN_STMT
  1391. _9 = pxTCB->xStateListItem.pvContainer;
  1392. _10 = &pxReadyTasksLists[uxPriorityUsedOnEntry];
  1393. if (_9 == _10)
  1394. goto <bb 17>; [INV]
  1395. else
  1396. goto <bb 20>; [INV]
  1397. <bb 17> :
  1398. # DEBUG BEGIN_STMT
  1399. _11 = &pxTCB->xStateListItem;
  1400. _12 = uxListRemove (_11);
  1401. # DEBUG BEGIN_STMT
  1402. # DEBUG BEGIN_STMT
  1403. # DEBUG BEGIN_STMT
  1404. _13 = pxTCB->uxPriority;
  1405. uxTopReadyPriority.133_14 = uxTopReadyPriority;
  1406. if (_13 > uxTopReadyPriority.133_14)
  1407. goto <bb 18>; [INV]
  1408. else
  1409. goto <bb 19>; [INV]
  1410. <bb 18> :
  1411. # DEBUG BEGIN_STMT
  1412. _15 = pxTCB->uxPriority;
  1413. uxTopReadyPriority = _15;
  1414. <bb 19> :
  1415. # DEBUG BEGIN_STMT
  1416. # DEBUG BEGIN_STMT
  1417. _16 = pxTCB->uxPriority;
  1418. pxIndex = pxReadyTasksLists[_16].pxIndex;
  1419. # DEBUG BEGIN_STMT
  1420. # DEBUG BEGIN_STMT
  1421. # DEBUG BEGIN_STMT
  1422. pxTCB->xStateListItem.pxNext = pxIndex;
  1423. # DEBUG BEGIN_STMT
  1424. _17 = pxIndex->pxPrevious;
  1425. pxTCB->xStateListItem.pxPrevious = _17;
  1426. # DEBUG BEGIN_STMT
  1427. _18 = pxIndex->pxPrevious;
  1428. _19 = &pxTCB->xStateListItem;
  1429. _18->pxNext = _19;
  1430. # DEBUG BEGIN_STMT
  1431. _20 = &pxTCB->xStateListItem;
  1432. pxIndex->pxPrevious = _20;
  1433. # DEBUG BEGIN_STMT
  1434. _21 = pxTCB->uxPriority;
  1435. _22 = &pxReadyTasksLists[_21];
  1436. pxTCB->xStateListItem.pvContainer = _22;
  1437. # DEBUG BEGIN_STMT
  1438. _23 = pxTCB->uxPriority;
  1439. _24 = pxReadyTasksLists[_23].uxNumberOfItems;
  1440. _25 = _24 + 1;
  1441. pxReadyTasksLists[_23].uxNumberOfItems = _25;
  1442. # DEBUG BEGIN_STMT
  1443. # DEBUG BEGIN_STMT
  1444. <bb 20> :
  1445. # DEBUG BEGIN_STMT
  1446. return;
  1447. }
  1448. xTaskPriorityDisinherit (struct tskTaskControlBlock * const pxMutexHolder)
  1449. {
  1450. struct ListItem_t * const pxIndex;
  1451. BaseType_t xReturn;
  1452. struct TCB_t * const pxTCB;
  1453. BaseType_t D.8069;
  1454. <bb 2> :
  1455. # DEBUG BEGIN_STMT
  1456. pxTCB = pxMutexHolder;
  1457. # DEBUG BEGIN_STMT
  1458. xReturn = 0;
  1459. # DEBUG BEGIN_STMT
  1460. if (pxMutexHolder != 0B)
  1461. goto <bb 3>; [INV]
  1462. else
  1463. goto <bb 14>; [INV]
  1464. <bb 3> :
  1465. # DEBUG BEGIN_STMT
  1466. pxCurrentTCB.130_1 = pxCurrentTCB;
  1467. if (pxTCB != pxCurrentTCB.130_1)
  1468. goto <bb 4>; [INV]
  1469. else
  1470. goto <bb 6>; [INV]
  1471. <bb 4> :
  1472. # DEBUG BEGIN_STMT
  1473. vPortRaiseBASEPRI ();
  1474. <bb 5> :
  1475. # DEBUG BEGIN_STMT
  1476. # DEBUG BEGIN_STMT
  1477. # DEBUG BEGIN_STMT
  1478. goto <bb 5>; [INV]
  1479. <bb 6> :
  1480. # DEBUG BEGIN_STMT
  1481. # DEBUG BEGIN_STMT
  1482. _2 = pxTCB->uxMutexesHeld;
  1483. if (_2 == 0)
  1484. goto <bb 7>; [INV]
  1485. else
  1486. goto <bb 9>; [INV]
  1487. <bb 7> :
  1488. # DEBUG BEGIN_STMT
  1489. vPortRaiseBASEPRI ();
  1490. <bb 8> :
  1491. # DEBUG BEGIN_STMT
  1492. # DEBUG BEGIN_STMT
  1493. # DEBUG BEGIN_STMT
  1494. goto <bb 8>; [INV]
  1495. <bb 9> :
  1496. # DEBUG BEGIN_STMT
  1497. # DEBUG BEGIN_STMT
  1498. _3 = pxTCB->uxMutexesHeld;
  1499. _4 = _3 + 4294967295;
  1500. pxTCB->uxMutexesHeld = _4;
  1501. # DEBUG BEGIN_STMT
  1502. _5 = pxTCB->uxPriority;
  1503. _6 = pxTCB->uxBasePriority;
  1504. if (_5 != _6)
  1505. goto <bb 10>; [INV]
  1506. else
  1507. goto <bb 14>; [INV]
  1508. <bb 10> :
  1509. # DEBUG BEGIN_STMT
  1510. _7 = pxTCB->uxMutexesHeld;
  1511. if (_7 == 0)
  1512. goto <bb 11>; [INV]
  1513. else
  1514. goto <bb 14>; [INV]
  1515. <bb 11> :
  1516. # DEBUG BEGIN_STMT
  1517. _8 = &pxTCB->xStateListItem;
  1518. _9 = uxListRemove (_8);
  1519. # DEBUG BEGIN_STMT
  1520. # DEBUG BEGIN_STMT
  1521. # DEBUG BEGIN_STMT
  1522. _10 = pxTCB->uxBasePriority;
  1523. pxTCB->uxPriority = _10;
  1524. # DEBUG BEGIN_STMT
  1525. _11 = pxTCB->uxPriority;
  1526. _12 = 5 - _11;
  1527. pxTCB->xEventListItem.xItemValue = _12;
  1528. # DEBUG BEGIN_STMT
  1529. # DEBUG BEGIN_STMT
  1530. _13 = pxTCB->uxPriority;
  1531. uxTopReadyPriority.131_14 = uxTopReadyPriority;
  1532. if (_13 > uxTopReadyPriority.131_14)
  1533. goto <bb 12>; [INV]
  1534. else
  1535. goto <bb 13>; [INV]
  1536. <bb 12> :
  1537. # DEBUG BEGIN_STMT
  1538. _15 = pxTCB->uxPriority;
  1539. uxTopReadyPriority = _15;
  1540. <bb 13> :
  1541. # DEBUG BEGIN_STMT
  1542. # DEBUG BEGIN_STMT
  1543. _16 = pxTCB->uxPriority;
  1544. pxIndex = pxReadyTasksLists[_16].pxIndex;
  1545. # DEBUG BEGIN_STMT
  1546. # DEBUG BEGIN_STMT
  1547. # DEBUG BEGIN_STMT
  1548. pxTCB->xStateListItem.pxNext = pxIndex;
  1549. # DEBUG BEGIN_STMT
  1550. _17 = pxIndex->pxPrevious;
  1551. pxTCB->xStateListItem.pxPrevious = _17;
  1552. # DEBUG BEGIN_STMT
  1553. _18 = pxIndex->pxPrevious;
  1554. _19 = &pxTCB->xStateListItem;
  1555. _18->pxNext = _19;
  1556. # DEBUG BEGIN_STMT
  1557. _20 = &pxTCB->xStateListItem;
  1558. pxIndex->pxPrevious = _20;
  1559. # DEBUG BEGIN_STMT
  1560. _21 = pxTCB->uxPriority;
  1561. _22 = &pxReadyTasksLists[_21];
  1562. pxTCB->xStateListItem.pvContainer = _22;
  1563. # DEBUG BEGIN_STMT
  1564. _23 = pxTCB->uxPriority;
  1565. _24 = pxReadyTasksLists[_23].uxNumberOfItems;
  1566. _25 = _24 + 1;
  1567. pxReadyTasksLists[_23].uxNumberOfItems = _25;
  1568. # DEBUG BEGIN_STMT
  1569. # DEBUG BEGIN_STMT
  1570. # DEBUG BEGIN_STMT
  1571. xReturn = 1;
  1572. <bb 14> :
  1573. # DEBUG BEGIN_STMT
  1574. # DEBUG BEGIN_STMT
  1575. D.8069 = xReturn;
  1576. return D.8069;
  1577. }
  1578. xTaskPriorityInherit (struct tskTaskControlBlock * const pxMutexHolder)
  1579. {
  1580. struct ListItem_t * const pxIndex;
  1581. BaseType_t xReturn;
  1582. struct TCB_t * const pxMutexHolderTCB;
  1583. BaseType_t D.8049;
  1584. <bb 2> :
  1585. # DEBUG BEGIN_STMT
  1586. pxMutexHolderTCB = pxMutexHolder;
  1587. # DEBUG BEGIN_STMT
  1588. xReturn = 0;
  1589. # DEBUG BEGIN_STMT
  1590. if (pxMutexHolder != 0B)
  1591. goto <bb 3>; [INV]
  1592. else
  1593. goto <bb 14>; [INV]
  1594. <bb 3> :
  1595. # DEBUG BEGIN_STMT
  1596. _1 = pxMutexHolderTCB->uxPriority;
  1597. pxCurrentTCB.124_2 = pxCurrentTCB;
  1598. _3 = pxCurrentTCB.124_2->uxPriority;
  1599. if (_1 < _3)
  1600. goto <bb 4>; [INV]
  1601. else
  1602. goto <bb 12>; [INV]
  1603. <bb 4> :
  1604. # DEBUG BEGIN_STMT
  1605. _4 = pxMutexHolderTCB->xEventListItem.xItemValue;
  1606. _5 = (signed int) _4;
  1607. if (_5 >= 0)
  1608. goto <bb 5>; [INV]
  1609. else
  1610. goto <bb 6>; [INV]
  1611. <bb 5> :
  1612. # DEBUG BEGIN_STMT
  1613. pxCurrentTCB.125_6 = pxCurrentTCB;
  1614. _7 = pxCurrentTCB.125_6->uxPriority;
  1615. _8 = 5 - _7;
  1616. pxMutexHolderTCB->xEventListItem.xItemValue = _8;
  1617. <bb 6> :
  1618. # DEBUG BEGIN_STMT
  1619. # DEBUG BEGIN_STMT
  1620. _9 = pxMutexHolderTCB->xStateListItem.pvContainer;
  1621. _10 = pxMutexHolderTCB->uxPriority;
  1622. _11 = &pxReadyTasksLists[_10];
  1623. if (_9 == _11)
  1624. goto <bb 7>; [INV]
  1625. else
  1626. goto <bb 10>; [INV]
  1627. <bb 7> :
  1628. # DEBUG BEGIN_STMT
  1629. _12 = &pxMutexHolderTCB->xStateListItem;
  1630. _13 = uxListRemove (_12);
  1631. # DEBUG BEGIN_STMT
  1632. # DEBUG BEGIN_STMT
  1633. pxCurrentTCB.126_14 = pxCurrentTCB;
  1634. _15 = pxCurrentTCB.126_14->uxPriority;
  1635. pxMutexHolderTCB->uxPriority = _15;
  1636. # DEBUG BEGIN_STMT
  1637. # DEBUG BEGIN_STMT
  1638. _16 = pxMutexHolderTCB->uxPriority;
  1639. uxTopReadyPriority.127_17 = uxTopReadyPriority;
  1640. if (_16 > uxTopReadyPriority.127_17)
  1641. goto <bb 8>; [INV]
  1642. else
  1643. goto <bb 9>; [INV]
  1644. <bb 8> :
  1645. # DEBUG BEGIN_STMT
  1646. _18 = pxMutexHolderTCB->uxPriority;
  1647. uxTopReadyPriority = _18;
  1648. <bb 9> :
  1649. # DEBUG BEGIN_STMT
  1650. # DEBUG BEGIN_STMT
  1651. _19 = pxMutexHolderTCB->uxPriority;
  1652. pxIndex = pxReadyTasksLists[_19].pxIndex;
  1653. # DEBUG BEGIN_STMT
  1654. # DEBUG BEGIN_STMT
  1655. # DEBUG BEGIN_STMT
  1656. pxMutexHolderTCB->xStateListItem.pxNext = pxIndex;
  1657. # DEBUG BEGIN_STMT
  1658. _20 = pxIndex->pxPrevious;
  1659. pxMutexHolderTCB->xStateListItem.pxPrevious = _20;
  1660. # DEBUG BEGIN_STMT
  1661. _21 = pxIndex->pxPrevious;
  1662. _22 = &pxMutexHolderTCB->xStateListItem;
  1663. _21->pxNext = _22;
  1664. # DEBUG BEGIN_STMT
  1665. _23 = &pxMutexHolderTCB->xStateListItem;
  1666. pxIndex->pxPrevious = _23;
  1667. # DEBUG BEGIN_STMT
  1668. _24 = pxMutexHolderTCB->uxPriority;
  1669. _25 = &pxReadyTasksLists[_24];
  1670. pxMutexHolderTCB->xStateListItem.pvContainer = _25;
  1671. # DEBUG BEGIN_STMT
  1672. _26 = pxMutexHolderTCB->uxPriority;
  1673. _27 = pxReadyTasksLists[_26].uxNumberOfItems;
  1674. _28 = _27 + 1;
  1675. pxReadyTasksLists[_26].uxNumberOfItems = _28;
  1676. # DEBUG BEGIN_STMT
  1677. # DEBUG BEGIN_STMT
  1678. goto <bb 11>; [INV]
  1679. <bb 10> :
  1680. # DEBUG BEGIN_STMT
  1681. pxCurrentTCB.128_29 = pxCurrentTCB;
  1682. _30 = pxCurrentTCB.128_29->uxPriority;
  1683. pxMutexHolderTCB->uxPriority = _30;
  1684. <bb 11> :
  1685. # DEBUG BEGIN_STMT
  1686. # DEBUG BEGIN_STMT
  1687. xReturn = 1;
  1688. goto <bb 14>; [INV]
  1689. <bb 12> :
  1690. # DEBUG BEGIN_STMT
  1691. _31 = pxMutexHolderTCB->uxBasePriority;
  1692. pxCurrentTCB.129_32 = pxCurrentTCB;
  1693. _33 = pxCurrentTCB.129_32->uxPriority;
  1694. if (_31 < _33)
  1695. goto <bb 13>; [INV]
  1696. else
  1697. goto <bb 14>; [INV]
  1698. <bb 13> :
  1699. # DEBUG BEGIN_STMT
  1700. xReturn = 1;
  1701. <bb 14> :
  1702. # DEBUG BEGIN_STMT
  1703. # DEBUG BEGIN_STMT
  1704. D.8049 = xReturn;
  1705. return D.8049;
  1706. }
  1707. xTaskGetSchedulerState ()
  1708. {
  1709. BaseType_t xReturn;
  1710. BaseType_t D.8027;
  1711. <bb 2> :
  1712. # DEBUG BEGIN_STMT
  1713. # DEBUG BEGIN_STMT
  1714. xSchedulerRunning.122_1 = xSchedulerRunning;
  1715. if (xSchedulerRunning.122_1 == 0)
  1716. goto <bb 3>; [INV]
  1717. else
  1718. goto <bb 4>; [INV]
  1719. <bb 3> :
  1720. # DEBUG BEGIN_STMT
  1721. xReturn = 1;
  1722. goto <bb 7>; [INV]
  1723. <bb 4> :
  1724. # DEBUG BEGIN_STMT
  1725. uxSchedulerSuspended.123_2 = uxSchedulerSuspended;
  1726. if (uxSchedulerSuspended.123_2 == 0)
  1727. goto <bb 5>; [INV]
  1728. else
  1729. goto <bb 6>; [INV]
  1730. <bb 5> :
  1731. # DEBUG BEGIN_STMT
  1732. xReturn = 2;
  1733. goto <bb 7>; [INV]
  1734. <bb 6> :
  1735. # DEBUG BEGIN_STMT
  1736. xReturn = 0;
  1737. <bb 7> :
  1738. # DEBUG BEGIN_STMT
  1739. D.8027 = xReturn;
  1740. return D.8027;
  1741. }
  1742. xTaskGetCurrentTaskHandle ()
  1743. {
  1744. struct tskTaskControlBlock * xReturn;
  1745. struct tskTaskControlBlock * D.8019;
  1746. <bb 2> :
  1747. # DEBUG BEGIN_STMT
  1748. # DEBUG BEGIN_STMT
  1749. xReturn = pxCurrentTCB;
  1750. # DEBUG BEGIN_STMT
  1751. D.8019 = xReturn;
  1752. return D.8019;
  1753. }
  1754. prvResetNextTaskUnblockTime ()
  1755. {
  1756. <bb 2> :
  1757. # DEBUG BEGIN_STMT
  1758. pxDelayedTaskList.20_1 = pxDelayedTaskList;
  1759. _2 = pxDelayedTaskList.20_1->uxNumberOfItems;
  1760. if (_2 == 0)
  1761. goto <bb 3>; [INV]
  1762. else
  1763. goto <bb 4>; [INV]
  1764. <bb 3> :
  1765. # DEBUG BEGIN_STMT
  1766. xNextTaskUnblockTime = 4294967295;
  1767. goto <bb 5>; [INV]
  1768. <bb 4> :
  1769. # DEBUG BEGIN_STMT
  1770. pxDelayedTaskList.21_3 = pxDelayedTaskList;
  1771. _4 = pxDelayedTaskList.21_3->xListEnd.pxNext;
  1772. _5 = _4->xItemValue;
  1773. xNextTaskUnblockTime = _5;
  1774. <bb 5> :
  1775. return;
  1776. }
  1777. prvDeleteTCB (struct TCB_t * pxTCB)
  1778. {
  1779. <bb 2> :
  1780. # DEBUG BEGIN_STMT
  1781. # DEBUG BEGIN_STMT
  1782. _1 = pxTCB->pxStack;
  1783. vPortFree (_1);
  1784. # DEBUG BEGIN_STMT
  1785. vPortFree (pxTCB);
  1786. return;
  1787. }
  1788. uxTaskGetStackHighWaterMark (struct tskTaskControlBlock * xTask)
  1789. {
  1790. UBaseType_t uxReturn;
  1791. uint8_t * pucEndOfStack;
  1792. struct TCB_t * pxTCB;
  1793. UBaseType_t D.8017;
  1794. struct TCB_t * iftmp.121;
  1795. <bb 2> :
  1796. # DEBUG BEGIN_STMT
  1797. # DEBUG BEGIN_STMT
  1798. # DEBUG BEGIN_STMT
  1799. # DEBUG BEGIN_STMT
  1800. if (xTask == 0B)
  1801. goto <bb 3>; [INV]
  1802. else
  1803. goto <bb 4>; [INV]
  1804. <bb 3> :
  1805. iftmp.121 = pxCurrentTCB;
  1806. goto <bb 5>; [INV]
  1807. <bb 4> :
  1808. iftmp.121 = xTask;
  1809. <bb 5> :
  1810. pxTCB = iftmp.121;
  1811. # DEBUG BEGIN_STMT
  1812. pucEndOfStack = pxTCB->pxStack;
  1813. # DEBUG BEGIN_STMT
  1814. _1 = prvTaskCheckFreeStackSpace (pucEndOfStack);
  1815. uxReturn = (UBaseType_t) _1;
  1816. # DEBUG BEGIN_STMT
  1817. D.8017 = uxReturn;
  1818. return D.8017;
  1819. }
  1820. prvTaskCheckFreeStackSpace (const uint8_t * pucStackByte)
  1821. {
  1822. uint32_t ulCount;
  1823. uint16_t D.8011;
  1824. <bb 2> :
  1825. # DEBUG BEGIN_STMT
  1826. ulCount = 0;
  1827. # DEBUG BEGIN_STMT
  1828. goto <bb 4>; [INV]
  1829. <bb 3> :
  1830. # DEBUG BEGIN_STMT
  1831. pucStackByte = pucStackByte + 1;
  1832. # DEBUG BEGIN_STMT
  1833. ulCount = ulCount + 1;
  1834. <bb 4> :
  1835. # DEBUG BEGIN_STMT
  1836. _1 = *pucStackByte;
  1837. if (_1 == 165)
  1838. goto <bb 3>; [INV]
  1839. else
  1840. goto <bb 5>; [INV]
  1841. <bb 5> :
  1842. # DEBUG BEGIN_STMT
  1843. ulCount = ulCount / 4;
  1844. # DEBUG BEGIN_STMT
  1845. D.8011 = (uint16_t) ulCount;
  1846. return D.8011;
  1847. }
  1848. prvListTasksWithinSingleList (struct TaskStatus_t * pxTaskStatusArray, struct List_t * pxList, eTaskState eState)
  1849. {
  1850. struct List_t * const pxConstList;
  1851. struct List_t * const pxConstList;
  1852. UBaseType_t uxTask;
  1853. struct TCB_t * pxFirstTCB;
  1854. struct TCB_t * pxNextTCB;
  1855. UBaseType_t D.7866;
  1856. <bb 2> :
  1857. # DEBUG BEGIN_STMT
  1858. # DEBUG BEGIN_STMT
  1859. uxTask = 0;
  1860. # DEBUG BEGIN_STMT
  1861. _1 = pxList->uxNumberOfItems;
  1862. if (_1 != 0)
  1863. goto <bb 3>; [INV]
  1864. else
  1865. goto <bb 9>; [INV]
  1866. <bb 3> :
  1867. # DEBUG BEGIN_STMT
  1868. pxConstList = pxList;
  1869. # DEBUG BEGIN_STMT
  1870. _2 = pxConstList->pxIndex;
  1871. _3 = _2->pxNext;
  1872. pxConstList->pxIndex = _3;
  1873. # DEBUG BEGIN_STMT
  1874. _4 = pxConstList->pxIndex;
  1875. _5 = &pxConstList->xListEnd;
  1876. if (_4 == _5)
  1877. goto <bb 4>; [INV]
  1878. else
  1879. goto <bb 5>; [INV]
  1880. <bb 4> :
  1881. # DEBUG BEGIN_STMT
  1882. _6 = pxConstList->pxIndex;
  1883. _7 = _6->pxNext;
  1884. pxConstList->pxIndex = _7;
  1885. <bb 5> :
  1886. # DEBUG BEGIN_STMT
  1887. _8 = pxConstList->pxIndex;
  1888. pxFirstTCB = _8->pvOwner;
  1889. <bb 6> :
  1890. # DEBUG BEGIN_STMT
  1891. # DEBUG BEGIN_STMT
  1892. # DEBUG BEGIN_STMT
  1893. pxConstList = pxList;
  1894. # DEBUG BEGIN_STMT
  1895. _9 = pxConstList->pxIndex;
  1896. _10 = _9->pxNext;
  1897. pxConstList->pxIndex = _10;
  1898. # DEBUG BEGIN_STMT
  1899. _11 = pxConstList->pxIndex;
  1900. _12 = &pxConstList->xListEnd;
  1901. if (_11 == _12)
  1902. goto <bb 7>; [INV]
  1903. else
  1904. goto <bb 8>; [INV]
  1905. <bb 7> :
  1906. # DEBUG BEGIN_STMT
  1907. _13 = pxConstList->pxIndex;
  1908. _14 = _13->pxNext;
  1909. pxConstList->pxIndex = _14;
  1910. <bb 8> :
  1911. # DEBUG BEGIN_STMT
  1912. _15 = pxConstList->pxIndex;
  1913. pxNextTCB = _15->pvOwner;
  1914. # DEBUG BEGIN_STMT
  1915. # DEBUG BEGIN_STMT
  1916. _16 = uxTask * 36;
  1917. _17 = pxTaskStatusArray + _16;
  1918. vTaskGetInfo (pxNextTCB, _17, 1, eState);
  1919. # DEBUG BEGIN_STMT
  1920. uxTask = uxTask + 1;
  1921. # DEBUG BEGIN_STMT
  1922. if (pxNextTCB != pxFirstTCB)
  1923. goto <bb 6>; [INV]
  1924. else
  1925. goto <bb 9>; [INV]
  1926. <bb 9> :
  1927. # DEBUG BEGIN_STMT
  1928. # DEBUG BEGIN_STMT
  1929. D.7866 = uxTask;
  1930. return D.7866;
  1931. }
  1932. vTaskGetInfo (struct tskTaskControlBlock * xTask, struct TaskStatus_t * pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState)
  1933. {
  1934. struct TCB_t * pxTCB;
  1935. struct TCB_t * iftmp.119;
  1936. <bb 2> :
  1937. # DEBUG BEGIN_STMT
  1938. # DEBUG BEGIN_STMT
  1939. if (xTask == 0B)
  1940. goto <bb 3>; [INV]
  1941. else
  1942. goto <bb 4>; [INV]
  1943. <bb 3> :
  1944. iftmp.119 = pxCurrentTCB;
  1945. goto <bb 5>; [INV]
  1946. <bb 4> :
  1947. iftmp.119 = xTask;
  1948. <bb 5> :
  1949. pxTCB = iftmp.119;
  1950. # DEBUG BEGIN_STMT
  1951. pxTaskStatus->xHandle = pxTCB;
  1952. # DEBUG BEGIN_STMT
  1953. _1 = &pxTCB->pcTaskName[0];
  1954. pxTaskStatus->pcTaskName = _1;
  1955. # DEBUG BEGIN_STMT
  1956. _2 = pxTCB->uxPriority;
  1957. pxTaskStatus->uxCurrentPriority = _2;
  1958. # DEBUG BEGIN_STMT
  1959. _3 = pxTCB->pxStack;
  1960. pxTaskStatus->pxStackBase = _3;
  1961. # DEBUG BEGIN_STMT
  1962. _4 = pxTCB->uxTCBNumber;
  1963. pxTaskStatus->xTaskNumber = _4;
  1964. # DEBUG BEGIN_STMT
  1965. _5 = pxTCB->uxBasePriority;
  1966. pxTaskStatus->uxBasePriority = _5;
  1967. # DEBUG BEGIN_STMT
  1968. pxTaskStatus->ulRunTimeCounter = 0;
  1969. # DEBUG BEGIN_STMT
  1970. if (eState != 5)
  1971. goto <bb 6>; [INV]
  1972. else
  1973. goto <bb 12>; [INV]
  1974. <bb 6> :
  1975. # DEBUG BEGIN_STMT
  1976. pxCurrentTCB.120_6 = pxCurrentTCB;
  1977. if (pxTCB == pxCurrentTCB.120_6)
  1978. goto <bb 7>; [INV]
  1979. else
  1980. goto <bb 8>; [INV]
  1981. <bb 7> :
  1982. # DEBUG BEGIN_STMT
  1983. pxTaskStatus->eCurrentState = 0;
  1984. goto <bb 13>; [INV]
  1985. <bb 8> :
  1986. # DEBUG BEGIN_STMT
  1987. pxTaskStatus->eCurrentState = eState;
  1988. # DEBUG BEGIN_STMT
  1989. if (eState == 3)
  1990. goto <bb 9>; [INV]
  1991. else
  1992. goto <bb 13>; [INV]
  1993. <bb 9> :
  1994. # DEBUG BEGIN_STMT
  1995. vTaskSuspendAll ();
  1996. # DEBUG BEGIN_STMT
  1997. _7 = pxTCB->xEventListItem.pvContainer;
  1998. if (_7 != 0B)
  1999. goto <bb 10>; [INV]
  2000. else
  2001. goto <bb 11>; [INV]
  2002. <bb 10> :
  2003. # DEBUG BEGIN_STMT
  2004. pxTaskStatus->eCurrentState = 2;
  2005. <bb 11> :
  2006. # DEBUG BEGIN_STMT
  2007. xTaskResumeAll ();
  2008. goto <bb 13>; [INV]
  2009. <bb 12> :
  2010. # DEBUG BEGIN_STMT
  2011. _8 = eTaskGetState (pxTCB);
  2012. pxTaskStatus->eCurrentState = _8;
  2013. <bb 13> :
  2014. # DEBUG BEGIN_STMT
  2015. if (xGetFreeStackSpace != 0)
  2016. goto <bb 14>; [INV]
  2017. else
  2018. goto <bb 15>; [INV]
  2019. <bb 14> :
  2020. # DEBUG BEGIN_STMT
  2021. _9 = pxTCB->pxStack;
  2022. _10 = prvTaskCheckFreeStackSpace (_9);
  2023. pxTaskStatus->usStackHighWaterMark = _10;
  2024. goto <bb 16>; [INV]
  2025. <bb 15> :
  2026. # DEBUG BEGIN_STMT
  2027. pxTaskStatus->usStackHighWaterMark = 0;
  2028. <bb 16> :
  2029. return;
  2030. }
  2031. prvCheckTasksWaitingTermination ()
  2032. {
  2033. struct TCB_t * pxTCB;
  2034. <bb 2> :
  2035. # DEBUG BEGIN_STMT
  2036. # DEBUG BEGIN_STMT
  2037. goto <bb 4>; [INV]
  2038. <bb 3> :
  2039. # DEBUG BEGIN_STMT
  2040. vPortEnterCritical ();
  2041. # DEBUG BEGIN_STMT
  2042. _1 = xTasksWaitingTermination.xListEnd.pxNext;
  2043. pxTCB = _1->pvOwner;
  2044. # DEBUG BEGIN_STMT
  2045. _2 = &pxTCB->xStateListItem;
  2046. uxListRemove (_2);
  2047. # DEBUG BEGIN_STMT
  2048. uxCurrentNumberOfTasks.58_3 = uxCurrentNumberOfTasks;
  2049. _4 = uxCurrentNumberOfTasks.58_3 + 4294967295;
  2050. uxCurrentNumberOfTasks = _4;
  2051. # DEBUG BEGIN_STMT
  2052. uxDeletedTasksWaitingCleanUp.59_5 = uxDeletedTasksWaitingCleanUp;
  2053. _6 = uxDeletedTasksWaitingCleanUp.59_5 + 4294967295;
  2054. uxDeletedTasksWaitingCleanUp = _6;
  2055. # DEBUG BEGIN_STMT
  2056. vPortExitCritical ();
  2057. # DEBUG BEGIN_STMT
  2058. prvDeleteTCB (pxTCB);
  2059. <bb 4> :
  2060. # DEBUG BEGIN_STMT
  2061. uxDeletedTasksWaitingCleanUp.60_7 = uxDeletedTasksWaitingCleanUp;
  2062. if (uxDeletedTasksWaitingCleanUp.60_7 != 0)
  2063. goto <bb 3>; [INV]
  2064. else
  2065. goto <bb 5>; [INV]
  2066. <bb 5> :
  2067. return;
  2068. }
  2069. prvInitialiseTaskLists ()
  2070. {
  2071. UBaseType_t uxPriority;
  2072. <bb 2> :
  2073. # DEBUG BEGIN_STMT
  2074. # DEBUG BEGIN_STMT
  2075. uxPriority = 0;
  2076. goto <bb 4>; [INV]
  2077. <bb 3> :
  2078. # DEBUG BEGIN_STMT
  2079. _1 = &pxReadyTasksLists[uxPriority];
  2080. vListInitialise (_1);
  2081. # DEBUG BEGIN_STMT
  2082. uxPriority = uxPriority + 1;
  2083. <bb 4> :
  2084. # DEBUG BEGIN_STMT
  2085. if (uxPriority <= 4)
  2086. goto <bb 3>; [INV]
  2087. else
  2088. goto <bb 5>; [INV]
  2089. <bb 5> :
  2090. # DEBUG BEGIN_STMT
  2091. vListInitialise (&xDelayedTaskList1);
  2092. # DEBUG BEGIN_STMT
  2093. vListInitialise (&xDelayedTaskList2);
  2094. # DEBUG BEGIN_STMT
  2095. vListInitialise (&xPendingReadyList);
  2096. # DEBUG BEGIN_STMT
  2097. vListInitialise (&xTasksWaitingTermination);
  2098. # DEBUG BEGIN_STMT
  2099. vListInitialise (&xSuspendedTaskList);
  2100. # DEBUG BEGIN_STMT
  2101. pxDelayedTaskList = &xDelayedTaskList1;
  2102. # DEBUG BEGIN_STMT
  2103. pxOverflowDelayedTaskList = &xDelayedTaskList2;
  2104. return;
  2105. }
  2106. prvIdleTask (void * pvParameters)
  2107. {
  2108. <bb 2> :
  2109. # DEBUG BEGIN_STMT
  2110. # DEBUG BEGIN_STMT
  2111. # DEBUG BEGIN_STMT
  2112. # DEBUG BEGIN_STMT
  2113. prvCheckTasksWaitingTermination ();
  2114. # DEBUG BEGIN_STMT
  2115. _1 = pxReadyTasksLists[0].uxNumberOfItems;
  2116. if (_1 > 1)
  2117. goto <bb 3>; [INV]
  2118. else
  2119. goto <bb 2>; [INV]
  2120. <bb 3> :
  2121. # DEBUG BEGIN_STMT
  2122. _2 = 3758157060B;
  2123. *_2 = 268435456;
  2124. # DEBUG BEGIN_STMT
  2125. __asm__ __volatile__("dsb" : : : "memory");
  2126. # DEBUG BEGIN_STMT
  2127. __asm__ __volatile__("isb");
  2128. # DEBUG BEGIN_STMT
  2129. goto <bb 2>; [INV]
  2130. }
  2131. vTaskSetTaskNumber (struct tskTaskControlBlock * xTask, const UBaseType_t uxHandle)
  2132. {
  2133. struct TCB_t * pxTCB;
  2134. <bb 2> :
  2135. # DEBUG BEGIN_STMT
  2136. # DEBUG BEGIN_STMT
  2137. if (xTask != 0B)
  2138. goto <bb 3>; [INV]
  2139. else
  2140. goto <bb 4>; [INV]
  2141. <bb 3> :
  2142. # DEBUG BEGIN_STMT
  2143. pxTCB = xTask;
  2144. # DEBUG BEGIN_STMT
  2145. pxTCB->uxTaskNumber = uxHandle;
  2146. <bb 4> :
  2147. return;
  2148. }
  2149. uxTaskGetTaskNumber (struct tskTaskControlBlock * xTask)
  2150. {
  2151. const struct TCB_t * pxTCB;
  2152. UBaseType_t uxReturn;
  2153. UBaseType_t D.7990;
  2154. <bb 2> :
  2155. # DEBUG BEGIN_STMT
  2156. # DEBUG BEGIN_STMT
  2157. # DEBUG BEGIN_STMT
  2158. if (xTask != 0B)
  2159. goto <bb 3>; [INV]
  2160. else
  2161. goto <bb 4>; [INV]
  2162. <bb 3> :
  2163. # DEBUG BEGIN_STMT
  2164. pxTCB = xTask;
  2165. # DEBUG BEGIN_STMT
  2166. uxReturn = pxTCB->uxTaskNumber;
  2167. goto <bb 5>; [INV]
  2168. <bb 4> :
  2169. # DEBUG BEGIN_STMT
  2170. uxReturn = 0;
  2171. <bb 5> :
  2172. # DEBUG BEGIN_STMT
  2173. D.7990 = uxReturn;
  2174. return D.7990;
  2175. }
  2176. vTaskMissedYield ()
  2177. {
  2178. <bb 2> :
  2179. # DEBUG BEGIN_STMT
  2180. xYieldPending = 1;
  2181. return;
  2182. }
  2183. xTaskCheckForTimeOut (struct TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait)
  2184. {
  2185. const TickType_t xElapsedTime;
  2186. const TickType_t xConstTickCount;
  2187. BaseType_t xReturn;
  2188. BaseType_t D.7985;
  2189. <bb 2> :
  2190. # DEBUG BEGIN_STMT
  2191. # DEBUG BEGIN_STMT
  2192. if (pxTimeOut == 0B)
  2193. goto <bb 3>; [INV]
  2194. else
  2195. goto <bb 5>; [INV]
  2196. <bb 3> :
  2197. # DEBUG BEGIN_STMT
  2198. vPortRaiseBASEPRI ();
  2199. <bb 4> :
  2200. # DEBUG BEGIN_STMT
  2201. # DEBUG BEGIN_STMT
  2202. # DEBUG BEGIN_STMT
  2203. goto <bb 4>; [INV]
  2204. <bb 5> :
  2205. # DEBUG BEGIN_STMT
  2206. # DEBUG BEGIN_STMT
  2207. if (pxTicksToWait == 0B)
  2208. goto <bb 6>; [INV]
  2209. else
  2210. goto <bb 8>; [INV]
  2211. <bb 6> :
  2212. # DEBUG BEGIN_STMT
  2213. vPortRaiseBASEPRI ();
  2214. <bb 7> :
  2215. # DEBUG BEGIN_STMT
  2216. # DEBUG BEGIN_STMT
  2217. # DEBUG BEGIN_STMT
  2218. goto <bb 7>; [INV]
  2219. <bb 8> :
  2220. # DEBUG BEGIN_STMT
  2221. # DEBUG BEGIN_STMT
  2222. vPortEnterCritical ();
  2223. # DEBUG BEGIN_STMT
  2224. xConstTickCount = xTickCount;
  2225. # DEBUG BEGIN_STMT
  2226. _1 = pxTimeOut->xTimeOnEntering;
  2227. xElapsedTime = xConstTickCount - _1;
  2228. # DEBUG BEGIN_STMT
  2229. pxCurrentTCB.116_2 = pxCurrentTCB;
  2230. _3 = pxCurrentTCB.116_2->ucDelayAborted;
  2231. if (_3 != 0)
  2232. goto <bb 9>; [INV]
  2233. else
  2234. goto <bb 10>; [INV]
  2235. <bb 9> :
  2236. # DEBUG BEGIN_STMT
  2237. pxCurrentTCB.117_4 = pxCurrentTCB;
  2238. pxCurrentTCB.117_4->ucDelayAborted = 0;
  2239. # DEBUG BEGIN_STMT
  2240. xReturn = 1;
  2241. goto <bb 18>; [INV]
  2242. <bb 10> :
  2243. # DEBUG BEGIN_STMT
  2244. _5 = *pxTicksToWait;
  2245. if (_5 == 4294967295)
  2246. goto <bb 11>; [INV]
  2247. else
  2248. goto <bb 12>; [INV]
  2249. <bb 11> :
  2250. # DEBUG BEGIN_STMT
  2251. xReturn = 0;
  2252. goto <bb 18>; [INV]
  2253. <bb 12> :
  2254. # DEBUG BEGIN_STMT
  2255. _6 = pxTimeOut->xOverflowCount;
  2256. xNumOfOverflows.118_7 = xNumOfOverflows;
  2257. if (_6 != xNumOfOverflows.118_7)
  2258. goto <bb 13>; [INV]
  2259. else
  2260. goto <bb 15>; [INV]
  2261. <bb 13> :
  2262. _8 = pxTimeOut->xTimeOnEntering;
  2263. if (xConstTickCount >= _8)
  2264. goto <bb 14>; [INV]
  2265. else
  2266. goto <bb 15>; [INV]
  2267. <bb 14> :
  2268. # DEBUG BEGIN_STMT
  2269. xReturn = 1;
  2270. # DEBUG BEGIN_STMT
  2271. *pxTicksToWait = 0;
  2272. goto <bb 18>; [INV]
  2273. <bb 15> :
  2274. # DEBUG BEGIN_STMT
  2275. _9 = *pxTicksToWait;
  2276. if (xElapsedTime < _9)
  2277. goto <bb 16>; [INV]
  2278. else
  2279. goto <bb 17>; [INV]
  2280. <bb 16> :
  2281. # DEBUG BEGIN_STMT
  2282. _10 = *pxTicksToWait;
  2283. _11 = _10 - xElapsedTime;
  2284. *pxTicksToWait = _11;
  2285. # DEBUG BEGIN_STMT
  2286. vTaskInternalSetTimeOutState (pxTimeOut);
  2287. # DEBUG BEGIN_STMT
  2288. xReturn = 0;
  2289. goto <bb 18>; [INV]
  2290. <bb 17> :
  2291. # DEBUG BEGIN_STMT
  2292. *pxTicksToWait = 0;
  2293. # DEBUG BEGIN_STMT
  2294. xReturn = 1;
  2295. <bb 18> :
  2296. # DEBUG BEGIN_STMT
  2297. vPortExitCritical ();
  2298. # DEBUG BEGIN_STMT
  2299. D.7985 = xReturn;
  2300. return D.7985;
  2301. }
  2302. vTaskInternalSetTimeOutState (struct TimeOut_t * const pxTimeOut)
  2303. {
  2304. <bb 2> :
  2305. # DEBUG BEGIN_STMT
  2306. xNumOfOverflows.114_1 = xNumOfOverflows;
  2307. pxTimeOut->xOverflowCount = xNumOfOverflows.114_1;
  2308. # DEBUG BEGIN_STMT
  2309. xTickCount.115_2 = xTickCount;
  2310. pxTimeOut->xTimeOnEntering = xTickCount.115_2;
  2311. return;
  2312. }
  2313. vTaskSetTimeOutState (struct TimeOut_t * const pxTimeOut)
  2314. {
  2315. <bb 2> :
  2316. # DEBUG BEGIN_STMT
  2317. if (pxTimeOut == 0B)
  2318. goto <bb 3>; [INV]
  2319. else
  2320. goto <bb 5>; [INV]
  2321. <bb 3> :
  2322. # DEBUG BEGIN_STMT
  2323. vPortRaiseBASEPRI ();
  2324. <bb 4> :
  2325. # DEBUG BEGIN_STMT
  2326. # DEBUG BEGIN_STMT
  2327. # DEBUG BEGIN_STMT
  2328. goto <bb 4>; [INV]
  2329. <bb 5> :
  2330. # DEBUG BEGIN_STMT
  2331. # DEBUG BEGIN_STMT
  2332. vPortEnterCritical ();
  2333. # DEBUG BEGIN_STMT
  2334. xNumOfOverflows.112_1 = xNumOfOverflows;
  2335. pxTimeOut->xOverflowCount = xNumOfOverflows.112_1;
  2336. # DEBUG BEGIN_STMT
  2337. xTickCount.113_2 = xTickCount;
  2338. pxTimeOut->xTimeOnEntering = xTickCount.113_2;
  2339. # DEBUG BEGIN_STMT
  2340. vPortExitCritical ();
  2341. return;
  2342. }
  2343. vTaskRemoveFromUnorderedEventList (struct ListItem_t * pxEventListItem, const TickType_t xItemValue)
  2344. {
  2345. struct ListItem_t * const pxIndex;
  2346. struct List_t * const pxList;
  2347. struct List_t * const pxList;
  2348. struct TCB_t * pxUnblockedTCB;
  2349. <bb 2> :
  2350. # DEBUG BEGIN_STMT
  2351. # DEBUG BEGIN_STMT
  2352. uxSchedulerSuspended.109_1 = uxSchedulerSuspended;
  2353. if (uxSchedulerSuspended.109_1 == 0)
  2354. goto <bb 3>; [INV]
  2355. else
  2356. goto <bb 5>; [INV]
  2357. <bb 3> :
  2358. # DEBUG BEGIN_STMT
  2359. vPortRaiseBASEPRI ();
  2360. <bb 4> :
  2361. # DEBUG BEGIN_STMT
  2362. # DEBUG BEGIN_STMT
  2363. # DEBUG BEGIN_STMT
  2364. goto <bb 4>; [INV]
  2365. <bb 5> :
  2366. # DEBUG BEGIN_STMT
  2367. # DEBUG BEGIN_STMT
  2368. _2 = xItemValue | 2147483648;
  2369. pxEventListItem->xItemValue = _2;
  2370. # DEBUG BEGIN_STMT
  2371. pxUnblockedTCB = pxEventListItem->pvOwner;
  2372. # DEBUG BEGIN_STMT
  2373. if (pxUnblockedTCB == 0B)
  2374. goto <bb 6>; [INV]
  2375. else
  2376. goto <bb 8>; [INV]
  2377. <bb 6> :
  2378. # DEBUG BEGIN_STMT
  2379. vPortRaiseBASEPRI ();
  2380. <bb 7> :
  2381. # DEBUG BEGIN_STMT
  2382. # DEBUG BEGIN_STMT
  2383. # DEBUG BEGIN_STMT
  2384. goto <bb 7>; [INV]
  2385. <bb 8> :
  2386. # DEBUG BEGIN_STMT
  2387. # DEBUG BEGIN_STMT
  2388. pxList = pxEventListItem->pvContainer;
  2389. # DEBUG BEGIN_STMT
  2390. _3 = pxEventListItem->pxNext;
  2391. _4 = pxEventListItem->pxPrevious;
  2392. _3->pxPrevious = _4;
  2393. # DEBUG BEGIN_STMT
  2394. _5 = pxEventListItem->pxPrevious;
  2395. _6 = pxEventListItem->pxNext;
  2396. _5->pxNext = _6;
  2397. # DEBUG BEGIN_STMT
  2398. _7 = pxList->pxIndex;
  2399. if (pxEventListItem == _7)
  2400. goto <bb 9>; [INV]
  2401. else
  2402. goto <bb 10>; [INV]
  2403. <bb 9> :
  2404. # DEBUG BEGIN_STMT
  2405. _8 = pxEventListItem->pxPrevious;
  2406. pxList->pxIndex = _8;
  2407. <bb 10> :
  2408. # DEBUG BEGIN_STMT
  2409. pxEventListItem->pvContainer = 0B;
  2410. # DEBUG BEGIN_STMT
  2411. _9 = pxList->uxNumberOfItems;
  2412. _10 = _9 + 4294967295;
  2413. pxList->uxNumberOfItems = _10;
  2414. # DEBUG BEGIN_STMT
  2415. # DEBUG BEGIN_STMT
  2416. pxList = pxUnblockedTCB->xStateListItem.pvContainer;
  2417. # DEBUG BEGIN_STMT
  2418. _11 = pxUnblockedTCB->xStateListItem.pxNext;
  2419. _12 = pxUnblockedTCB->xStateListItem.pxPrevious;
  2420. _11->pxPrevious = _12;
  2421. # DEBUG BEGIN_STMT
  2422. _13 = pxUnblockedTCB->xStateListItem.pxPrevious;
  2423. _14 = pxUnblockedTCB->xStateListItem.pxNext;
  2424. _13->pxNext = _14;
  2425. # DEBUG BEGIN_STMT
  2426. _15 = pxList->pxIndex;
  2427. _16 = &pxUnblockedTCB->xStateListItem;
  2428. if (_15 == _16)
  2429. goto <bb 11>; [INV]
  2430. else
  2431. goto <bb 12>; [INV]
  2432. <bb 11> :
  2433. # DEBUG BEGIN_STMT
  2434. _17 = pxUnblockedTCB->xStateListItem.pxPrevious;
  2435. pxList->pxIndex = _17;
  2436. <bb 12> :
  2437. # DEBUG BEGIN_STMT
  2438. pxUnblockedTCB->xStateListItem.pvContainer = 0B;
  2439. # DEBUG BEGIN_STMT
  2440. _18 = pxList->uxNumberOfItems;
  2441. _19 = _18 + 4294967295;
  2442. pxList->uxNumberOfItems = _19;
  2443. # DEBUG BEGIN_STMT
  2444. # DEBUG BEGIN_STMT
  2445. # DEBUG BEGIN_STMT
  2446. _20 = pxUnblockedTCB->uxPriority;
  2447. uxTopReadyPriority.110_21 = uxTopReadyPriority;
  2448. if (_20 > uxTopReadyPriority.110_21)
  2449. goto <bb 13>; [INV]
  2450. else
  2451. goto <bb 14>; [INV]
  2452. <bb 13> :
  2453. # DEBUG BEGIN_STMT
  2454. _22 = pxUnblockedTCB->uxPriority;
  2455. uxTopReadyPriority = _22;
  2456. <bb 14> :
  2457. # DEBUG BEGIN_STMT
  2458. # DEBUG BEGIN_STMT
  2459. _23 = pxUnblockedTCB->uxPriority;
  2460. pxIndex = pxReadyTasksLists[_23].pxIndex;
  2461. # DEBUG BEGIN_STMT
  2462. # DEBUG BEGIN_STMT
  2463. # DEBUG BEGIN_STMT
  2464. pxUnblockedTCB->xStateListItem.pxNext = pxIndex;
  2465. # DEBUG BEGIN_STMT
  2466. _24 = pxIndex->pxPrevious;
  2467. pxUnblockedTCB->xStateListItem.pxPrevious = _24;
  2468. # DEBUG BEGIN_STMT
  2469. _25 = pxIndex->pxPrevious;
  2470. _26 = &pxUnblockedTCB->xStateListItem;
  2471. _25->pxNext = _26;
  2472. # DEBUG BEGIN_STMT
  2473. _27 = &pxUnblockedTCB->xStateListItem;
  2474. pxIndex->pxPrevious = _27;
  2475. # DEBUG BEGIN_STMT
  2476. _28 = pxUnblockedTCB->uxPriority;
  2477. _29 = &pxReadyTasksLists[_28];
  2478. pxUnblockedTCB->xStateListItem.pvContainer = _29;
  2479. # DEBUG BEGIN_STMT
  2480. _30 = pxUnblockedTCB->uxPriority;
  2481. _31 = pxReadyTasksLists[_30].uxNumberOfItems;
  2482. _32 = _31 + 1;
  2483. pxReadyTasksLists[_30].uxNumberOfItems = _32;
  2484. # DEBUG BEGIN_STMT
  2485. # DEBUG BEGIN_STMT
  2486. # DEBUG BEGIN_STMT
  2487. _33 = pxUnblockedTCB->uxPriority;
  2488. pxCurrentTCB.111_34 = pxCurrentTCB;
  2489. _35 = pxCurrentTCB.111_34->uxPriority;
  2490. if (_33 > _35)
  2491. goto <bb 15>; [INV]
  2492. else
  2493. goto <bb 16>; [INV]
  2494. <bb 15> :
  2495. # DEBUG BEGIN_STMT
  2496. xYieldPending = 1;
  2497. <bb 16> :
  2498. return;
  2499. }
  2500. xTaskRemoveFromEventList (const struct List_t * const pxEventList)
  2501. {
  2502. struct ListItem_t * const pxIndex;
  2503. struct ListItem_t * const pxIndex;
  2504. struct List_t * const pxList;
  2505. struct List_t * const pxList;
  2506. BaseType_t xReturn;
  2507. struct TCB_t * pxUnblockedTCB;
  2508. BaseType_t D.7952;
  2509. <bb 2> :
  2510. # DEBUG BEGIN_STMT
  2511. # DEBUG BEGIN_STMT
  2512. # DEBUG BEGIN_STMT
  2513. _1 = pxEventList->xListEnd.pxNext;
  2514. pxUnblockedTCB = _1->pvOwner;
  2515. # DEBUG BEGIN_STMT
  2516. if (pxUnblockedTCB == 0B)
  2517. goto <bb 3>; [INV]
  2518. else
  2519. goto <bb 5>; [INV]
  2520. <bb 3> :
  2521. # DEBUG BEGIN_STMT
  2522. vPortRaiseBASEPRI ();
  2523. <bb 4> :
  2524. # DEBUG BEGIN_STMT
  2525. # DEBUG BEGIN_STMT
  2526. # DEBUG BEGIN_STMT
  2527. goto <bb 4>; [INV]
  2528. <bb 5> :
  2529. # DEBUG BEGIN_STMT
  2530. # DEBUG BEGIN_STMT
  2531. pxList = pxUnblockedTCB->xEventListItem.pvContainer;
  2532. # DEBUG BEGIN_STMT
  2533. _2 = pxUnblockedTCB->xEventListItem.pxNext;
  2534. _3 = pxUnblockedTCB->xEventListItem.pxPrevious;
  2535. _2->pxPrevious = _3;
  2536. # DEBUG BEGIN_STMT
  2537. _4 = pxUnblockedTCB->xEventListItem.pxPrevious;
  2538. _5 = pxUnblockedTCB->xEventListItem.pxNext;
  2539. _4->pxNext = _5;
  2540. # DEBUG BEGIN_STMT
  2541. _6 = pxList->pxIndex;
  2542. _7 = &pxUnblockedTCB->xEventListItem;
  2543. if (_6 == _7)
  2544. goto <bb 6>; [INV]
  2545. else
  2546. goto <bb 7>; [INV]
  2547. <bb 6> :
  2548. # DEBUG BEGIN_STMT
  2549. _8 = pxUnblockedTCB->xEventListItem.pxPrevious;
  2550. pxList->pxIndex = _8;
  2551. <bb 7> :
  2552. # DEBUG BEGIN_STMT
  2553. pxUnblockedTCB->xEventListItem.pvContainer = 0B;
  2554. # DEBUG BEGIN_STMT
  2555. _9 = pxList->uxNumberOfItems;
  2556. _10 = _9 + 4294967295;
  2557. pxList->uxNumberOfItems = _10;
  2558. # DEBUG BEGIN_STMT
  2559. # DEBUG BEGIN_STMT
  2560. uxSchedulerSuspended.106_11 = uxSchedulerSuspended;
  2561. if (uxSchedulerSuspended.106_11 == 0)
  2562. goto <bb 8>; [INV]
  2563. else
  2564. goto <bb 13>; [INV]
  2565. <bb 8> :
  2566. # DEBUG BEGIN_STMT
  2567. pxList = pxUnblockedTCB->xStateListItem.pvContainer;
  2568. # DEBUG BEGIN_STMT
  2569. _12 = pxUnblockedTCB->xStateListItem.pxNext;
  2570. _13 = pxUnblockedTCB->xStateListItem.pxPrevious;
  2571. _12->pxPrevious = _13;
  2572. # DEBUG BEGIN_STMT
  2573. _14 = pxUnblockedTCB->xStateListItem.pxPrevious;
  2574. _15 = pxUnblockedTCB->xStateListItem.pxNext;
  2575. _14->pxNext = _15;
  2576. # DEBUG BEGIN_STMT
  2577. _16 = pxList->pxIndex;
  2578. _17 = &pxUnblockedTCB->xStateListItem;
  2579. if (_16 == _17)
  2580. goto <bb 9>; [INV]
  2581. else
  2582. goto <bb 10>; [INV]
  2583. <bb 9> :
  2584. # DEBUG BEGIN_STMT
  2585. _18 = pxUnblockedTCB->xStateListItem.pxPrevious;
  2586. pxList->pxIndex = _18;
  2587. <bb 10> :
  2588. # DEBUG BEGIN_STMT
  2589. pxUnblockedTCB->xStateListItem.pvContainer = 0B;
  2590. # DEBUG BEGIN_STMT
  2591. _19 = pxList->uxNumberOfItems;
  2592. _20 = _19 + 4294967295;
  2593. pxList->uxNumberOfItems = _20;
  2594. # DEBUG BEGIN_STMT
  2595. # DEBUG BEGIN_STMT
  2596. # DEBUG BEGIN_STMT
  2597. _21 = pxUnblockedTCB->uxPriority;
  2598. uxTopReadyPriority.107_22 = uxTopReadyPriority;
  2599. if (_21 > uxTopReadyPriority.107_22)
  2600. goto <bb 11>; [INV]
  2601. else
  2602. goto <bb 12>; [INV]
  2603. <bb 11> :
  2604. # DEBUG BEGIN_STMT
  2605. _23 = pxUnblockedTCB->uxPriority;
  2606. uxTopReadyPriority = _23;
  2607. <bb 12> :
  2608. # DEBUG BEGIN_STMT
  2609. # DEBUG BEGIN_STMT
  2610. _24 = pxUnblockedTCB->uxPriority;
  2611. pxIndex = pxReadyTasksLists[_24].pxIndex;
  2612. # DEBUG BEGIN_STMT
  2613. # DEBUG BEGIN_STMT
  2614. # DEBUG BEGIN_STMT
  2615. pxUnblockedTCB->xStateListItem.pxNext = pxIndex;
  2616. # DEBUG BEGIN_STMT
  2617. _25 = pxIndex->pxPrevious;
  2618. pxUnblockedTCB->xStateListItem.pxPrevious = _25;
  2619. # DEBUG BEGIN_STMT
  2620. _26 = pxIndex->pxPrevious;
  2621. _27 = &pxUnblockedTCB->xStateListItem;
  2622. _26->pxNext = _27;
  2623. # DEBUG BEGIN_STMT
  2624. _28 = &pxUnblockedTCB->xStateListItem;
  2625. pxIndex->pxPrevious = _28;
  2626. # DEBUG BEGIN_STMT
  2627. _29 = pxUnblockedTCB->uxPriority;
  2628. _30 = &pxReadyTasksLists[_29];
  2629. pxUnblockedTCB->xStateListItem.pvContainer = _30;
  2630. # DEBUG BEGIN_STMT
  2631. _31 = pxUnblockedTCB->uxPriority;
  2632. _32 = pxReadyTasksLists[_31].uxNumberOfItems;
  2633. _33 = _32 + 1;
  2634. pxReadyTasksLists[_31].uxNumberOfItems = _33;
  2635. # DEBUG BEGIN_STMT
  2636. # DEBUG BEGIN_STMT
  2637. goto <bb 14>; [INV]
  2638. <bb 13> :
  2639. # DEBUG BEGIN_STMT
  2640. pxIndex = xPendingReadyList.pxIndex;
  2641. # DEBUG BEGIN_STMT
  2642. # DEBUG BEGIN_STMT
  2643. # DEBUG BEGIN_STMT
  2644. pxUnblockedTCB->xEventListItem.pxNext = pxIndex;
  2645. # DEBUG BEGIN_STMT
  2646. _34 = pxIndex->pxPrevious;
  2647. pxUnblockedTCB->xEventListItem.pxPrevious = _34;
  2648. # DEBUG BEGIN_STMT
  2649. _35 = pxIndex->pxPrevious;
  2650. _36 = &pxUnblockedTCB->xEventListItem;
  2651. _35->pxNext = _36;
  2652. # DEBUG BEGIN_STMT
  2653. _37 = &pxUnblockedTCB->xEventListItem;
  2654. pxIndex->pxPrevious = _37;
  2655. # DEBUG BEGIN_STMT
  2656. pxUnblockedTCB->xEventListItem.pvContainer = &xPendingReadyList;
  2657. # DEBUG BEGIN_STMT
  2658. _38 = xPendingReadyList.uxNumberOfItems;
  2659. _39 = _38 + 1;
  2660. xPendingReadyList.uxNumberOfItems = _39;
  2661. <bb 14> :
  2662. # DEBUG BEGIN_STMT
  2663. # DEBUG BEGIN_STMT
  2664. _40 = pxUnblockedTCB->uxPriority;
  2665. pxCurrentTCB.108_41 = pxCurrentTCB;
  2666. _42 = pxCurrentTCB.108_41->uxPriority;
  2667. if (_40 > _42)
  2668. goto <bb 15>; [INV]
  2669. else
  2670. goto <bb 16>; [INV]
  2671. <bb 15> :
  2672. # DEBUG BEGIN_STMT
  2673. xReturn = 1;
  2674. # DEBUG BEGIN_STMT
  2675. xYieldPending = 1;
  2676. goto <bb 17>; [INV]
  2677. <bb 16> :
  2678. # DEBUG BEGIN_STMT
  2679. xReturn = 0;
  2680. <bb 17> :
  2681. # DEBUG BEGIN_STMT
  2682. D.7952 = xReturn;
  2683. return D.7952;
  2684. }
  2685. vTaskPlaceOnEventListRestricted (struct List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely)
  2686. {
  2687. struct ListItem_t * const pxIndex;
  2688. <bb 2> :
  2689. # DEBUG BEGIN_STMT
  2690. if (pxEventList == 0B)
  2691. goto <bb 3>; [INV]
  2692. else
  2693. goto <bb 5>; [INV]
  2694. <bb 3> :
  2695. # DEBUG BEGIN_STMT
  2696. vPortRaiseBASEPRI ();
  2697. <bb 4> :
  2698. # DEBUG BEGIN_STMT
  2699. # DEBUG BEGIN_STMT
  2700. # DEBUG BEGIN_STMT
  2701. goto <bb 4>; [INV]
  2702. <bb 5> :
  2703. # DEBUG BEGIN_STMT
  2704. # DEBUG BEGIN_STMT
  2705. pxIndex = pxEventList->pxIndex;
  2706. # DEBUG BEGIN_STMT
  2707. # DEBUG BEGIN_STMT
  2708. # DEBUG BEGIN_STMT
  2709. pxCurrentTCB.101_1 = pxCurrentTCB;
  2710. pxCurrentTCB.101_1->xEventListItem.pxNext = pxIndex;
  2711. # DEBUG BEGIN_STMT
  2712. pxCurrentTCB.102_2 = pxCurrentTCB;
  2713. _3 = pxIndex->pxPrevious;
  2714. pxCurrentTCB.102_2->xEventListItem.pxPrevious = _3;
  2715. # DEBUG BEGIN_STMT
  2716. pxCurrentTCB.103_4 = pxCurrentTCB;
  2717. _5 = pxIndex->pxPrevious;
  2718. _6 = &pxCurrentTCB.103_4->xEventListItem;
  2719. _5->pxNext = _6;
  2720. # DEBUG BEGIN_STMT
  2721. pxCurrentTCB.104_7 = pxCurrentTCB;
  2722. _8 = &pxCurrentTCB.104_7->xEventListItem;
  2723. pxIndex->pxPrevious = _8;
  2724. # DEBUG BEGIN_STMT
  2725. pxCurrentTCB.105_9 = pxCurrentTCB;
  2726. pxCurrentTCB.105_9->xEventListItem.pvContainer = pxEventList;
  2727. # DEBUG BEGIN_STMT
  2728. _10 = pxEventList->uxNumberOfItems;
  2729. _11 = _10 + 1;
  2730. pxEventList->uxNumberOfItems = _11;
  2731. # DEBUG BEGIN_STMT
  2732. # DEBUG BEGIN_STMT
  2733. if (xWaitIndefinitely != 0)
  2734. goto <bb 6>; [INV]
  2735. else
  2736. goto <bb 7>; [INV]
  2737. <bb 6> :
  2738. # DEBUG BEGIN_STMT
  2739. xTicksToWait = 4294967295;
  2740. <bb 7> :
  2741. # DEBUG BEGIN_STMT
  2742. # DEBUG BEGIN_STMT
  2743. prvAddCurrentTaskToDelayedList (xTicksToWait, xWaitIndefinitely);
  2744. return;
  2745. }
  2746. vTaskPlaceOnUnorderedEventList (struct List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait)
  2747. {
  2748. struct ListItem_t * const pxIndex;
  2749. <bb 2> :
  2750. # DEBUG BEGIN_STMT
  2751. if (pxEventList == 0B)
  2752. goto <bb 3>; [INV]
  2753. else
  2754. goto <bb 5>; [INV]
  2755. <bb 3> :
  2756. # DEBUG BEGIN_STMT
  2757. vPortRaiseBASEPRI ();
  2758. <bb 4> :
  2759. # DEBUG BEGIN_STMT
  2760. # DEBUG BEGIN_STMT
  2761. # DEBUG BEGIN_STMT
  2762. goto <bb 4>; [INV]
  2763. <bb 5> :
  2764. # DEBUG BEGIN_STMT
  2765. # DEBUG BEGIN_STMT
  2766. uxSchedulerSuspended.94_1 = uxSchedulerSuspended;
  2767. if (uxSchedulerSuspended.94_1 == 0)
  2768. goto <bb 6>; [INV]
  2769. else
  2770. goto <bb 8>; [INV]
  2771. <bb 6> :
  2772. # DEBUG BEGIN_STMT
  2773. vPortRaiseBASEPRI ();
  2774. <bb 7> :
  2775. # DEBUG BEGIN_STMT
  2776. # DEBUG BEGIN_STMT
  2777. # DEBUG BEGIN_STMT
  2778. goto <bb 7>; [INV]
  2779. <bb 8> :
  2780. # DEBUG BEGIN_STMT
  2781. # DEBUG BEGIN_STMT
  2782. pxCurrentTCB.95_2 = pxCurrentTCB;
  2783. _3 = xItemValue | 2147483648;
  2784. pxCurrentTCB.95_2->xEventListItem.xItemValue = _3;
  2785. # DEBUG BEGIN_STMT
  2786. pxIndex = pxEventList->pxIndex;
  2787. # DEBUG BEGIN_STMT
  2788. # DEBUG BEGIN_STMT
  2789. # DEBUG BEGIN_STMT
  2790. pxCurrentTCB.96_4 = pxCurrentTCB;
  2791. pxCurrentTCB.96_4->xEventListItem.pxNext = pxIndex;
  2792. # DEBUG BEGIN_STMT
  2793. pxCurrentTCB.97_5 = pxCurrentTCB;
  2794. _6 = pxIndex->pxPrevious;
  2795. pxCurrentTCB.97_5->xEventListItem.pxPrevious = _6;
  2796. # DEBUG BEGIN_STMT
  2797. pxCurrentTCB.98_7 = pxCurrentTCB;
  2798. _8 = pxIndex->pxPrevious;
  2799. _9 = &pxCurrentTCB.98_7->xEventListItem;
  2800. _8->pxNext = _9;
  2801. # DEBUG BEGIN_STMT
  2802. pxCurrentTCB.99_10 = pxCurrentTCB;
  2803. _11 = &pxCurrentTCB.99_10->xEventListItem;
  2804. pxIndex->pxPrevious = _11;
  2805. # DEBUG BEGIN_STMT
  2806. pxCurrentTCB.100_12 = pxCurrentTCB;
  2807. pxCurrentTCB.100_12->xEventListItem.pvContainer = pxEventList;
  2808. # DEBUG BEGIN_STMT
  2809. _13 = pxEventList->uxNumberOfItems;
  2810. _14 = _13 + 1;
  2811. pxEventList->uxNumberOfItems = _14;
  2812. # DEBUG BEGIN_STMT
  2813. # DEBUG BEGIN_STMT
  2814. prvAddCurrentTaskToDelayedList (xTicksToWait, 1);
  2815. return;
  2816. }
  2817. vTaskPlaceOnEventList (struct List_t * const pxEventList, const TickType_t xTicksToWait)
  2818. {
  2819. <bb 2> :
  2820. # DEBUG BEGIN_STMT
  2821. if (pxEventList == 0B)
  2822. goto <bb 3>; [INV]
  2823. else
  2824. goto <bb 5>; [INV]
  2825. <bb 3> :
  2826. # DEBUG BEGIN_STMT
  2827. vPortRaiseBASEPRI ();
  2828. <bb 4> :
  2829. # DEBUG BEGIN_STMT
  2830. # DEBUG BEGIN_STMT
  2831. # DEBUG BEGIN_STMT
  2832. goto <bb 4>; [INV]
  2833. <bb 5> :
  2834. # DEBUG BEGIN_STMT
  2835. # DEBUG BEGIN_STMT
  2836. pxCurrentTCB.93_1 = pxCurrentTCB;
  2837. _2 = &pxCurrentTCB.93_1->xEventListItem;
  2838. vListInsert (pxEventList, _2);
  2839. # DEBUG BEGIN_STMT
  2840. prvAddCurrentTaskToDelayedList (xTicksToWait, 1);
  2841. return;
  2842. }
  2843. __attribute__((used))
  2844. vTaskSwitchContext ()
  2845. {
  2846. struct List_t * const pxConstList;
  2847. UBaseType_t uxTopPriority;
  2848. <bb 2> :
  2849. # DEBUG BEGIN_STMT
  2850. uxSchedulerSuspended.92_1 = uxSchedulerSuspended;
  2851. if (uxSchedulerSuspended.92_1 != 0)
  2852. goto <bb 3>; [INV]
  2853. else
  2854. goto <bb 4>; [INV]
  2855. <bb 3> :
  2856. # DEBUG BEGIN_STMT
  2857. xYieldPending = 1;
  2858. goto <bb 13>; [INV]
  2859. <bb 4> :
  2860. # DEBUG BEGIN_STMT
  2861. xYieldPending = 0;
  2862. # DEBUG BEGIN_STMT
  2863. # DEBUG BEGIN_STMT
  2864. # DEBUG BEGIN_STMT
  2865. uxTopPriority = uxTopReadyPriority;
  2866. # DEBUG BEGIN_STMT
  2867. goto <bb 9>; [INV]
  2868. <bb 5> :
  2869. # DEBUG BEGIN_STMT
  2870. if (uxTopPriority == 0)
  2871. goto <bb 6>; [INV]
  2872. else
  2873. goto <bb 8>; [INV]
  2874. <bb 6> :
  2875. # DEBUG BEGIN_STMT
  2876. vPortRaiseBASEPRI ();
  2877. <bb 7> :
  2878. # DEBUG BEGIN_STMT
  2879. # DEBUG BEGIN_STMT
  2880. # DEBUG BEGIN_STMT
  2881. goto <bb 7>; [INV]
  2882. <bb 8> :
  2883. # DEBUG BEGIN_STMT
  2884. # DEBUG BEGIN_STMT
  2885. uxTopPriority = uxTopPriority + 4294967295;
  2886. <bb 9> :
  2887. # DEBUG BEGIN_STMT
  2888. _2 = pxReadyTasksLists[uxTopPriority].uxNumberOfItems;
  2889. if (_2 == 0)
  2890. goto <bb 5>; [INV]
  2891. else
  2892. goto <bb 10>; [INV]
  2893. <bb 10> :
  2894. # DEBUG BEGIN_STMT
  2895. pxConstList = &pxReadyTasksLists[uxTopPriority];
  2896. # DEBUG BEGIN_STMT
  2897. _3 = pxConstList->pxIndex;
  2898. _4 = _3->pxNext;
  2899. pxConstList->pxIndex = _4;
  2900. # DEBUG BEGIN_STMT
  2901. _5 = pxConstList->pxIndex;
  2902. _6 = &pxConstList->xListEnd;
  2903. if (_5 == _6)
  2904. goto <bb 11>; [INV]
  2905. else
  2906. goto <bb 12>; [INV]
  2907. <bb 11> :
  2908. # DEBUG BEGIN_STMT
  2909. _7 = pxConstList->pxIndex;
  2910. _8 = _7->pxNext;
  2911. pxConstList->pxIndex = _8;
  2912. <bb 12> :
  2913. # DEBUG BEGIN_STMT
  2914. _9 = pxConstList->pxIndex;
  2915. _10 = _9->pvOwner;
  2916. pxCurrentTCB = _10;
  2917. # DEBUG BEGIN_STMT
  2918. # DEBUG BEGIN_STMT
  2919. uxTopReadyPriority = uxTopPriority;
  2920. <bb 13> :
  2921. # DEBUG BEGIN_STMT
  2922. # DEBUG BEGIN_STMT
  2923. return;
  2924. }
  2925. xTaskIncrementTick ()
  2926. {
  2927. struct ListItem_t * const pxIndex;
  2928. struct List_t * const pxList;
  2929. struct List_t * const pxList;
  2930. struct List_t * pxTemp;
  2931. const TickType_t xConstTickCount;
  2932. BaseType_t xSwitchRequired;
  2933. TickType_t xItemValue;
  2934. struct TCB_t * pxTCB;
  2935. BaseType_t D.7919;
  2936. <bb 2> :
  2937. # DEBUG BEGIN_STMT
  2938. # DEBUG BEGIN_STMT
  2939. # DEBUG BEGIN_STMT
  2940. xSwitchRequired = 0;
  2941. # DEBUG BEGIN_STMT
  2942. # DEBUG BEGIN_STMT
  2943. uxSchedulerSuspended.79_1 = uxSchedulerSuspended;
  2944. if (uxSchedulerSuspended.79_1 == 0)
  2945. goto <bb 3>; [INV]
  2946. else
  2947. goto <bb 27>; [INV]
  2948. <bb 3> :
  2949. # DEBUG BEGIN_STMT
  2950. xTickCount.80_2 = xTickCount;
  2951. xConstTickCount = xTickCount.80_2 + 1;
  2952. # DEBUG BEGIN_STMT
  2953. xTickCount = xConstTickCount;
  2954. # DEBUG BEGIN_STMT
  2955. if (xConstTickCount == 0)
  2956. goto <bb 4>; [INV]
  2957. else
  2958. goto <bb 8>; [INV]
  2959. <bb 4> :
  2960. # DEBUG BEGIN_STMT
  2961. # DEBUG BEGIN_STMT
  2962. pxDelayedTaskList.81_3 = pxDelayedTaskList;
  2963. _4 = pxDelayedTaskList.81_3->uxNumberOfItems;
  2964. if (_4 != 0)
  2965. goto <bb 5>; [INV]
  2966. else
  2967. goto <bb 7>; [INV]
  2968. <bb 5> :
  2969. # DEBUG BEGIN_STMT
  2970. vPortRaiseBASEPRI ();
  2971. <bb 6> :
  2972. # DEBUG BEGIN_STMT
  2973. # DEBUG BEGIN_STMT
  2974. # DEBUG BEGIN_STMT
  2975. goto <bb 6>; [INV]
  2976. <bb 7> :
  2977. # DEBUG BEGIN_STMT
  2978. # DEBUG BEGIN_STMT
  2979. pxTemp = pxDelayedTaskList;
  2980. # DEBUG BEGIN_STMT
  2981. pxOverflowDelayedTaskList.82_5 = pxOverflowDelayedTaskList;
  2982. pxDelayedTaskList = pxOverflowDelayedTaskList.82_5;
  2983. # DEBUG BEGIN_STMT
  2984. pxOverflowDelayedTaskList = pxTemp;
  2985. # DEBUG BEGIN_STMT
  2986. xNumOfOverflows.83_6 = xNumOfOverflows;
  2987. _7 = xNumOfOverflows.83_6 + 1;
  2988. xNumOfOverflows = _7;
  2989. # DEBUG BEGIN_STMT
  2990. prvResetNextTaskUnblockTime ();
  2991. # DEBUG BEGIN_STMT
  2992. <bb 8> :
  2993. # DEBUG BEGIN_STMT
  2994. # DEBUG BEGIN_STMT
  2995. xNextTaskUnblockTime.84_8 = xNextTaskUnblockTime;
  2996. if (xConstTickCount >= xNextTaskUnblockTime.84_8)
  2997. goto <bb 9>; [INV]
  2998. else
  2999. goto <bb 23>; [INV]
  3000. <bb 9> :
  3001. # DEBUG BEGIN_STMT
  3002. # DEBUG BEGIN_STMT
  3003. pxDelayedTaskList.85_9 = pxDelayedTaskList;
  3004. _10 = pxDelayedTaskList.85_9->uxNumberOfItems;
  3005. if (_10 == 0)
  3006. goto <bb 10>; [INV]
  3007. else
  3008. goto <bb 11>; [INV]
  3009. <bb 10> :
  3010. # DEBUG BEGIN_STMT
  3011. xNextTaskUnblockTime = 4294967295;
  3012. # DEBUG BEGIN_STMT
  3013. goto <bb 23>; [INV]
  3014. <bb 11> :
  3015. # DEBUG BEGIN_STMT
  3016. pxDelayedTaskList.86_11 = pxDelayedTaskList;
  3017. _12 = pxDelayedTaskList.86_11->xListEnd.pxNext;
  3018. pxTCB = _12->pvOwner;
  3019. # DEBUG BEGIN_STMT
  3020. xItemValue = pxTCB->xStateListItem.xItemValue;
  3021. # DEBUG BEGIN_STMT
  3022. if (xConstTickCount < xItemValue)
  3023. goto <bb 12>; [INV]
  3024. else
  3025. goto <bb 13>; [INV]
  3026. <bb 12> :
  3027. # DEBUG BEGIN_STMT
  3028. xNextTaskUnblockTime = xItemValue;
  3029. # DEBUG BEGIN_STMT
  3030. goto <bb 23>; [INV]
  3031. <bb 13> :
  3032. # DEBUG BEGIN_STMT
  3033. # DEBUG BEGIN_STMT
  3034. pxList = pxTCB->xStateListItem.pvContainer;
  3035. # DEBUG BEGIN_STMT
  3036. _13 = pxTCB->xStateListItem.pxNext;
  3037. _14 = pxTCB->xStateListItem.pxPrevious;
  3038. _13->pxPrevious = _14;
  3039. # DEBUG BEGIN_STMT
  3040. _15 = pxTCB->xStateListItem.pxPrevious;
  3041. _16 = pxTCB->xStateListItem.pxNext;
  3042. _15->pxNext = _16;
  3043. # DEBUG BEGIN_STMT
  3044. _17 = pxList->pxIndex;
  3045. _18 = &pxTCB->xStateListItem;
  3046. if (_17 == _18)
  3047. goto <bb 14>; [INV]
  3048. else
  3049. goto <bb 15>; [INV]
  3050. <bb 14> :
  3051. # DEBUG BEGIN_STMT
  3052. _19 = pxTCB->xStateListItem.pxPrevious;
  3053. pxList->pxIndex = _19;
  3054. <bb 15> :
  3055. # DEBUG BEGIN_STMT
  3056. pxTCB->xStateListItem.pvContainer = 0B;
  3057. # DEBUG BEGIN_STMT
  3058. _20 = pxList->uxNumberOfItems;
  3059. _21 = _20 + 4294967295;
  3060. pxList->uxNumberOfItems = _21;
  3061. # DEBUG BEGIN_STMT
  3062. # DEBUG BEGIN_STMT
  3063. _22 = pxTCB->xEventListItem.pvContainer;
  3064. if (_22 != 0B)
  3065. goto <bb 16>; [INV]
  3066. else
  3067. goto <bb 19>; [INV]
  3068. <bb 16> :
  3069. # DEBUG BEGIN_STMT
  3070. pxList = pxTCB->xEventListItem.pvContainer;
  3071. # DEBUG BEGIN_STMT
  3072. _23 = pxTCB->xEventListItem.pxNext;
  3073. _24 = pxTCB->xEventListItem.pxPrevious;
  3074. _23->pxPrevious = _24;
  3075. # DEBUG BEGIN_STMT
  3076. _25 = pxTCB->xEventListItem.pxPrevious;
  3077. _26 = pxTCB->xEventListItem.pxNext;
  3078. _25->pxNext = _26;
  3079. # DEBUG BEGIN_STMT
  3080. _27 = pxList->pxIndex;
  3081. _28 = &pxTCB->xEventListItem;
  3082. if (_27 == _28)
  3083. goto <bb 17>; [INV]
  3084. else
  3085. goto <bb 18>; [INV]
  3086. <bb 17> :
  3087. # DEBUG BEGIN_STMT
  3088. _29 = pxTCB->xEventListItem.pxPrevious;
  3089. pxList->pxIndex = _29;
  3090. <bb 18> :
  3091. # DEBUG BEGIN_STMT
  3092. pxTCB->xEventListItem.pvContainer = 0B;
  3093. # DEBUG BEGIN_STMT
  3094. _30 = pxList->uxNumberOfItems;
  3095. _31 = _30 + 4294967295;
  3096. pxList->uxNumberOfItems = _31;
  3097. # DEBUG BEGIN_STMT
  3098. <bb 19> :
  3099. # DEBUG BEGIN_STMT
  3100. # DEBUG BEGIN_STMT
  3101. # DEBUG BEGIN_STMT
  3102. _32 = pxTCB->uxPriority;
  3103. uxTopReadyPriority.87_33 = uxTopReadyPriority;
  3104. if (_32 > uxTopReadyPriority.87_33)
  3105. goto <bb 20>; [INV]
  3106. else
  3107. goto <bb 21>; [INV]
  3108. <bb 20> :
  3109. # DEBUG BEGIN_STMT
  3110. _34 = pxTCB->uxPriority;
  3111. uxTopReadyPriority = _34;
  3112. <bb 21> :
  3113. # DEBUG BEGIN_STMT
  3114. # DEBUG BEGIN_STMT
  3115. _35 = pxTCB->uxPriority;
  3116. pxIndex = pxReadyTasksLists[_35].pxIndex;
  3117. # DEBUG BEGIN_STMT
  3118. # DEBUG BEGIN_STMT
  3119. # DEBUG BEGIN_STMT
  3120. pxTCB->xStateListItem.pxNext = pxIndex;
  3121. # DEBUG BEGIN_STMT
  3122. _36 = pxIndex->pxPrevious;
  3123. pxTCB->xStateListItem.pxPrevious = _36;
  3124. # DEBUG BEGIN_STMT
  3125. _37 = pxIndex->pxPrevious;
  3126. _38 = &pxTCB->xStateListItem;
  3127. _37->pxNext = _38;
  3128. # DEBUG BEGIN_STMT
  3129. _39 = &pxTCB->xStateListItem;
  3130. pxIndex->pxPrevious = _39;
  3131. # DEBUG BEGIN_STMT
  3132. _40 = pxTCB->uxPriority;
  3133. _41 = &pxReadyTasksLists[_40];
  3134. pxTCB->xStateListItem.pvContainer = _41;
  3135. # DEBUG BEGIN_STMT
  3136. _42 = pxTCB->uxPriority;
  3137. _43 = pxReadyTasksLists[_42].uxNumberOfItems;
  3138. _44 = _43 + 1;
  3139. pxReadyTasksLists[_42].uxNumberOfItems = _44;
  3140. # DEBUG BEGIN_STMT
  3141. # DEBUG BEGIN_STMT
  3142. # DEBUG BEGIN_STMT
  3143. _45 = pxTCB->uxPriority;
  3144. pxCurrentTCB.88_46 = pxCurrentTCB;
  3145. _47 = pxCurrentTCB.88_46->uxPriority;
  3146. if (_45 >= _47)
  3147. goto <bb 22>; [INV]
  3148. else
  3149. goto <bb 9>; [INV]
  3150. <bb 22> :
  3151. # DEBUG BEGIN_STMT
  3152. xSwitchRequired = 1;
  3153. goto <bb 9>; [INV]
  3154. <bb 23> :
  3155. # DEBUG BEGIN_STMT
  3156. pxCurrentTCB.89_48 = pxCurrentTCB;
  3157. _49 = pxCurrentTCB.89_48->uxPriority;
  3158. _50 = pxReadyTasksLists[_49].uxNumberOfItems;
  3159. if (_50 > 1)
  3160. goto <bb 24>; [INV]
  3161. else
  3162. goto <bb 25>; [INV]
  3163. <bb 24> :
  3164. # DEBUG BEGIN_STMT
  3165. xSwitchRequired = 1;
  3166. <bb 25> :
  3167. # DEBUG BEGIN_STMT
  3168. # DEBUG BEGIN_STMT
  3169. xYieldPending.90_51 = xYieldPending;
  3170. if (xYieldPending.90_51 != 0)
  3171. goto <bb 26>; [INV]
  3172. else
  3173. goto <bb 28>; [INV]
  3174. <bb 26> :
  3175. # DEBUG BEGIN_STMT
  3176. xSwitchRequired = 1;
  3177. goto <bb 28>; [INV]
  3178. <bb 27> :
  3179. # DEBUG BEGIN_STMT
  3180. xPendedTicks.91_52 = xPendedTicks;
  3181. _53 = xPendedTicks.91_52 + 1;
  3182. xPendedTicks = _53;
  3183. <bb 28> :
  3184. # DEBUG BEGIN_STMT
  3185. D.7919 = xSwitchRequired;
  3186. return D.7919;
  3187. }
  3188. xTaskAbortDelay (struct tskTaskControlBlock * xTask)
  3189. {
  3190. struct ListItem_t * const pxIndex;
  3191. BaseType_t xReturn;
  3192. struct TCB_t * pxTCB;
  3193. BaseType_t D.7885;
  3194. <bb 2> :
  3195. # DEBUG BEGIN_STMT
  3196. pxTCB = xTask;
  3197. # DEBUG BEGIN_STMT
  3198. # DEBUG BEGIN_STMT
  3199. if (pxTCB == 0B)
  3200. goto <bb 3>; [INV]
  3201. else
  3202. goto <bb 5>; [INV]
  3203. <bb 3> :
  3204. # DEBUG BEGIN_STMT
  3205. vPortRaiseBASEPRI ();
  3206. <bb 4> :
  3207. # DEBUG BEGIN_STMT
  3208. # DEBUG BEGIN_STMT
  3209. # DEBUG BEGIN_STMT
  3210. goto <bb 4>; [INV]
  3211. <bb 5> :
  3212. # DEBUG BEGIN_STMT
  3213. # DEBUG BEGIN_STMT
  3214. vTaskSuspendAll ();
  3215. # DEBUG BEGIN_STMT
  3216. _1 = eTaskGetState (xTask);
  3217. if (_1 == 2)
  3218. goto <bb 6>; [INV]
  3219. else
  3220. goto <bb 12>; [INV]
  3221. <bb 6> :
  3222. # DEBUG BEGIN_STMT
  3223. xReturn = 1;
  3224. # DEBUG BEGIN_STMT
  3225. _2 = &pxTCB->xStateListItem;
  3226. uxListRemove (_2);
  3227. # DEBUG BEGIN_STMT
  3228. vPortEnterCritical ();
  3229. # DEBUG BEGIN_STMT
  3230. _3 = pxTCB->xEventListItem.pvContainer;
  3231. if (_3 != 0B)
  3232. goto <bb 7>; [INV]
  3233. else
  3234. goto <bb 8>; [INV]
  3235. <bb 7> :
  3236. # DEBUG BEGIN_STMT
  3237. _4 = &pxTCB->xEventListItem;
  3238. uxListRemove (_4);
  3239. # DEBUG BEGIN_STMT
  3240. pxTCB->ucDelayAborted = 1;
  3241. <bb 8> :
  3242. # DEBUG BEGIN_STMT
  3243. # DEBUG BEGIN_STMT
  3244. vPortExitCritical ();
  3245. # DEBUG BEGIN_STMT
  3246. # DEBUG BEGIN_STMT
  3247. _5 = pxTCB->uxPriority;
  3248. uxTopReadyPriority.77_6 = uxTopReadyPriority;
  3249. if (_5 > uxTopReadyPriority.77_6)
  3250. goto <bb 9>; [INV]
  3251. else
  3252. goto <bb 10>; [INV]
  3253. <bb 9> :
  3254. # DEBUG BEGIN_STMT
  3255. _7 = pxTCB->uxPriority;
  3256. uxTopReadyPriority = _7;
  3257. <bb 10> :
  3258. # DEBUG BEGIN_STMT
  3259. # DEBUG BEGIN_STMT
  3260. _8 = pxTCB->uxPriority;
  3261. pxIndex = pxReadyTasksLists[_8].pxIndex;
  3262. # DEBUG BEGIN_STMT
  3263. # DEBUG BEGIN_STMT
  3264. # DEBUG BEGIN_STMT
  3265. pxTCB->xStateListItem.pxNext = pxIndex;
  3266. # DEBUG BEGIN_STMT
  3267. _9 = pxIndex->pxPrevious;
  3268. pxTCB->xStateListItem.pxPrevious = _9;
  3269. # DEBUG BEGIN_STMT
  3270. _10 = pxIndex->pxPrevious;
  3271. _11 = &pxTCB->xStateListItem;
  3272. _10->pxNext = _11;
  3273. # DEBUG BEGIN_STMT
  3274. _12 = &pxTCB->xStateListItem;
  3275. pxIndex->pxPrevious = _12;
  3276. # DEBUG BEGIN_STMT
  3277. _13 = pxTCB->uxPriority;
  3278. _14 = &pxReadyTasksLists[_13];
  3279. pxTCB->xStateListItem.pvContainer = _14;
  3280. # DEBUG BEGIN_STMT
  3281. _15 = pxTCB->uxPriority;
  3282. _16 = pxReadyTasksLists[_15].uxNumberOfItems;
  3283. _17 = _16 + 1;
  3284. pxReadyTasksLists[_15].uxNumberOfItems = _17;
  3285. # DEBUG BEGIN_STMT
  3286. # DEBUG BEGIN_STMT
  3287. # DEBUG BEGIN_STMT
  3288. _18 = pxTCB->uxPriority;
  3289. pxCurrentTCB.78_19 = pxCurrentTCB;
  3290. _20 = pxCurrentTCB.78_19->uxPriority;
  3291. if (_18 > _20)
  3292. goto <bb 11>; [INV]
  3293. else
  3294. goto <bb 13>; [INV]
  3295. <bb 11> :
  3296. # DEBUG BEGIN_STMT
  3297. xYieldPending = 1;
  3298. goto <bb 13>; [INV]
  3299. <bb 12> :
  3300. # DEBUG BEGIN_STMT
  3301. xReturn = 0;
  3302. <bb 13> :
  3303. # DEBUG BEGIN_STMT
  3304. xTaskResumeAll ();
  3305. # DEBUG BEGIN_STMT
  3306. D.7885 = xReturn;
  3307. return D.7885;
  3308. }
  3309. xTaskCatchUpTicks (TickType_t xTicksToCatchUp)
  3310. {
  3311. BaseType_t xYieldOccurred;
  3312. BaseType_t D.7870;
  3313. <bb 2> :
  3314. # DEBUG BEGIN_STMT
  3315. # DEBUG BEGIN_STMT
  3316. uxSchedulerSuspended.75_1 = uxSchedulerSuspended;
  3317. if (uxSchedulerSuspended.75_1 != 0)
  3318. goto <bb 3>; [INV]
  3319. else
  3320. goto <bb 5>; [INV]
  3321. <bb 3> :
  3322. # DEBUG BEGIN_STMT
  3323. vPortRaiseBASEPRI ();
  3324. <bb 4> :
  3325. # DEBUG BEGIN_STMT
  3326. # DEBUG BEGIN_STMT
  3327. # DEBUG BEGIN_STMT
  3328. goto <bb 4>; [INV]
  3329. <bb 5> :
  3330. # DEBUG BEGIN_STMT
  3331. # DEBUG BEGIN_STMT
  3332. vTaskSuspendAll ();
  3333. # DEBUG BEGIN_STMT
  3334. xPendedTicks.76_2 = xPendedTicks;
  3335. _3 = xTicksToCatchUp + xPendedTicks.76_2;
  3336. xPendedTicks = _3;
  3337. # DEBUG BEGIN_STMT
  3338. xYieldOccurred = xTaskResumeAll ();
  3339. # DEBUG BEGIN_STMT
  3340. D.7870 = xYieldOccurred;
  3341. return D.7870;
  3342. }
  3343. uxTaskGetSystemState (struct TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime)
  3344. {
  3345. UBaseType_t uxQueue;
  3346. UBaseType_t uxTask;
  3347. UBaseType_t D.7857;
  3348. long unsigned int D.7853;
  3349. long unsigned int D.7852;
  3350. long unsigned int D.7851;
  3351. long unsigned int D.7850;
  3352. long unsigned int D.7849;
  3353. <bb 2> :
  3354. # DEBUG BEGIN_STMT
  3355. uxTask = 0;
  3356. uxQueue = 5;
  3357. # DEBUG BEGIN_STMT
  3358. vTaskSuspendAll ();
  3359. # DEBUG BEGIN_STMT
  3360. uxCurrentNumberOfTasks.72_1 = uxCurrentNumberOfTasks;
  3361. if (uxArraySize >= uxCurrentNumberOfTasks.72_1)
  3362. goto <bb 3>; [INV]
  3363. else
  3364. goto <bb 6>; [INV]
  3365. <bb 3> :
  3366. # DEBUG BEGIN_STMT
  3367. # DEBUG BEGIN_STMT
  3368. uxQueue = uxQueue + 4294967295;
  3369. # DEBUG BEGIN_STMT
  3370. _2 = uxTask * 36;
  3371. _3 = pxTaskStatusArray + _2;
  3372. _4 = &pxReadyTasksLists[uxQueue];
  3373. D.7849 = prvListTasksWithinSingleList (_3, _4, 1);
  3374. uxTask = D.7849 + uxTask;
  3375. # DEBUG BEGIN_STMT
  3376. if (uxQueue != 0)
  3377. goto <bb 3>; [INV]
  3378. else
  3379. goto <bb 4>; [INV]
  3380. <bb 4> :
  3381. # DEBUG BEGIN_STMT
  3382. _5 = uxTask * 36;
  3383. _6 = pxTaskStatusArray + _5;
  3384. pxDelayedTaskList.73_7 = pxDelayedTaskList;
  3385. D.7850 = prvListTasksWithinSingleList (_6, pxDelayedTaskList.73_7, 2);
  3386. uxTask = D.7850 + uxTask;
  3387. # DEBUG BEGIN_STMT
  3388. _8 = uxTask * 36;
  3389. _9 = pxTaskStatusArray + _8;
  3390. pxOverflowDelayedTaskList.74_10 = pxOverflowDelayedTaskList;
  3391. D.7851 = prvListTasksWithinSingleList (_9, pxOverflowDelayedTaskList.74_10, 2);
  3392. uxTask = D.7851 + uxTask;
  3393. # DEBUG BEGIN_STMT
  3394. _11 = uxTask * 36;
  3395. _12 = pxTaskStatusArray + _11;
  3396. D.7852 = prvListTasksWithinSingleList (_12, &xTasksWaitingTermination, 4);
  3397. uxTask = D.7852 + uxTask;
  3398. # DEBUG BEGIN_STMT
  3399. _13 = uxTask * 36;
  3400. _14 = pxTaskStatusArray + _13;
  3401. D.7853 = prvListTasksWithinSingleList (_14, &xSuspendedTaskList, 3);
  3402. uxTask = D.7853 + uxTask;
  3403. # DEBUG BEGIN_STMT
  3404. if (pulTotalRunTime != 0B)
  3405. goto <bb 5>; [INV]
  3406. else
  3407. goto <bb 6>; [INV]
  3408. <bb 5> :
  3409. # DEBUG BEGIN_STMT
  3410. *pulTotalRunTime = 0;
  3411. <bb 6> :
  3412. # DEBUG BEGIN_STMT
  3413. # DEBUG BEGIN_STMT
  3414. xTaskResumeAll ();
  3415. # DEBUG BEGIN_STMT
  3416. D.7857 = uxTask;
  3417. return D.7857;
  3418. }
  3419. xTaskGetHandle (const char * pcNameToQuery)
  3420. {
  3421. struct TCB_t * pxTCB;
  3422. UBaseType_t uxQueue;
  3423. struct tskTaskControlBlock * D.7828;
  3424. <bb 2> :
  3425. # DEBUG BEGIN_STMT
  3426. uxQueue = 5;
  3427. # DEBUG BEGIN_STMT
  3428. # DEBUG BEGIN_STMT
  3429. _1 = strlen (pcNameToQuery);
  3430. if (_1 > 9)
  3431. goto <bb 3>; [INV]
  3432. else
  3433. goto <bb 5>; [INV]
  3434. <bb 3> :
  3435. # DEBUG BEGIN_STMT
  3436. vPortRaiseBASEPRI ();
  3437. <bb 4> :
  3438. # DEBUG BEGIN_STMT
  3439. # DEBUG BEGIN_STMT
  3440. # DEBUG BEGIN_STMT
  3441. goto <bb 4>; [INV]
  3442. <bb 5> :
  3443. # DEBUG BEGIN_STMT
  3444. # DEBUG BEGIN_STMT
  3445. vTaskSuspendAll ();
  3446. <bb 6> :
  3447. # DEBUG BEGIN_STMT
  3448. # DEBUG BEGIN_STMT
  3449. uxQueue = uxQueue + 4294967295;
  3450. # DEBUG BEGIN_STMT
  3451. _2 = &pxReadyTasksLists[uxQueue];
  3452. pxTCB = prvSearchForNameWithinSingleList (_2, pcNameToQuery);
  3453. # DEBUG BEGIN_STMT
  3454. if (pxTCB != 0B)
  3455. goto <bb 8>; [INV]
  3456. else
  3457. goto <bb 7>; [INV]
  3458. <bb 7> :
  3459. # DEBUG BEGIN_STMT
  3460. if (uxQueue != 0)
  3461. goto <bb 6>; [INV]
  3462. else
  3463. goto <bb 8>; [INV]
  3464. <bb 8> :
  3465. # DEBUG BEGIN_STMT
  3466. if (pxTCB == 0B)
  3467. goto <bb 9>; [INV]
  3468. else
  3469. goto <bb 10>; [INV]
  3470. <bb 9> :
  3471. # DEBUG BEGIN_STMT
  3472. pxDelayedTaskList.70_3 = pxDelayedTaskList;
  3473. pxTCB = prvSearchForNameWithinSingleList (pxDelayedTaskList.70_3, pcNameToQuery);
  3474. <bb 10> :
  3475. # DEBUG BEGIN_STMT
  3476. if (pxTCB == 0B)
  3477. goto <bb 11>; [INV]
  3478. else
  3479. goto <bb 12>; [INV]
  3480. <bb 11> :
  3481. # DEBUG BEGIN_STMT
  3482. pxOverflowDelayedTaskList.71_4 = pxOverflowDelayedTaskList;
  3483. pxTCB = prvSearchForNameWithinSingleList (pxOverflowDelayedTaskList.71_4, pcNameToQuery);
  3484. <bb 12> :
  3485. # DEBUG BEGIN_STMT
  3486. if (pxTCB == 0B)
  3487. goto <bb 13>; [INV]
  3488. else
  3489. goto <bb 14>; [INV]
  3490. <bb 13> :
  3491. # DEBUG BEGIN_STMT
  3492. pxTCB = prvSearchForNameWithinSingleList (&xSuspendedTaskList, pcNameToQuery);
  3493. <bb 14> :
  3494. # DEBUG BEGIN_STMT
  3495. if (pxTCB == 0B)
  3496. goto <bb 15>; [INV]
  3497. else
  3498. goto <bb 16>; [INV]
  3499. <bb 15> :
  3500. # DEBUG BEGIN_STMT
  3501. pxTCB = prvSearchForNameWithinSingleList (&xTasksWaitingTermination, pcNameToQuery);
  3502. <bb 16> :
  3503. # DEBUG BEGIN_STMT
  3504. xTaskResumeAll ();
  3505. # DEBUG BEGIN_STMT
  3506. D.7828 = pxTCB;
  3507. return D.7828;
  3508. }
  3509. prvSearchForNameWithinSingleList (struct List_t * pxList, const char * pcNameToQuery)
  3510. {
  3511. struct List_t * const pxConstList;
  3512. struct List_t * const pxConstList;
  3513. BaseType_t xBreakLoop;
  3514. char cNextChar;
  3515. UBaseType_t x;
  3516. struct TCB_t * pxReturn;
  3517. struct TCB_t * pxFirstTCB;
  3518. struct TCB_t * pxNextTCB;
  3519. struct TCB_t * D.7845;
  3520. <bb 2> :
  3521. # DEBUG BEGIN_STMT
  3522. pxReturn = 0B;
  3523. # DEBUG BEGIN_STMT
  3524. # DEBUG BEGIN_STMT
  3525. # DEBUG BEGIN_STMT
  3526. # DEBUG BEGIN_STMT
  3527. _1 = pxList->uxNumberOfItems;
  3528. if (_1 != 0)
  3529. goto <bb 3>; [INV]
  3530. else
  3531. goto <bb 18>; [INV]
  3532. <bb 3> :
  3533. # DEBUG BEGIN_STMT
  3534. pxConstList = pxList;
  3535. # DEBUG BEGIN_STMT
  3536. _2 = pxConstList->pxIndex;
  3537. _3 = _2->pxNext;
  3538. pxConstList->pxIndex = _3;
  3539. # DEBUG BEGIN_STMT
  3540. _4 = pxConstList->pxIndex;
  3541. _5 = &pxConstList->xListEnd;
  3542. if (_4 == _5)
  3543. goto <bb 4>; [INV]
  3544. else
  3545. goto <bb 5>; [INV]
  3546. <bb 4> :
  3547. # DEBUG BEGIN_STMT
  3548. _6 = pxConstList->pxIndex;
  3549. _7 = _6->pxNext;
  3550. pxConstList->pxIndex = _7;
  3551. <bb 5> :
  3552. # DEBUG BEGIN_STMT
  3553. _8 = pxConstList->pxIndex;
  3554. pxFirstTCB = _8->pvOwner;
  3555. <bb 6> :
  3556. # DEBUG BEGIN_STMT
  3557. # DEBUG BEGIN_STMT
  3558. # DEBUG BEGIN_STMT
  3559. pxConstList = pxList;
  3560. # DEBUG BEGIN_STMT
  3561. _9 = pxConstList->pxIndex;
  3562. _10 = _9->pxNext;
  3563. pxConstList->pxIndex = _10;
  3564. # DEBUG BEGIN_STMT
  3565. _11 = pxConstList->pxIndex;
  3566. _12 = &pxConstList->xListEnd;
  3567. if (_11 == _12)
  3568. goto <bb 7>; [INV]
  3569. else
  3570. goto <bb 8>; [INV]
  3571. <bb 7> :
  3572. # DEBUG BEGIN_STMT
  3573. _13 = pxConstList->pxIndex;
  3574. _14 = _13->pxNext;
  3575. pxConstList->pxIndex = _14;
  3576. <bb 8> :
  3577. # DEBUG BEGIN_STMT
  3578. _15 = pxConstList->pxIndex;
  3579. pxNextTCB = _15->pvOwner;
  3580. # DEBUG BEGIN_STMT
  3581. # DEBUG BEGIN_STMT
  3582. xBreakLoop = 0;
  3583. # DEBUG BEGIN_STMT
  3584. x = 0;
  3585. goto <bb 15>; [INV]
  3586. <bb 9> :
  3587. # DEBUG BEGIN_STMT
  3588. cNextChar = pxNextTCB->pcTaskName[x];
  3589. # DEBUG BEGIN_STMT
  3590. _16 = pcNameToQuery + x;
  3591. _17 = *_16;
  3592. if (cNextChar != _17)
  3593. goto <bb 10>; [INV]
  3594. else
  3595. goto <bb 11>; [INV]
  3596. <bb 10> :
  3597. # DEBUG BEGIN_STMT
  3598. xBreakLoop = 1;
  3599. goto <bb 13>; [INV]
  3600. <bb 11> :
  3601. # DEBUG BEGIN_STMT
  3602. if (cNextChar == 0)
  3603. goto <bb 12>; [INV]
  3604. else
  3605. goto <bb 13>; [INV]
  3606. <bb 12> :
  3607. # DEBUG BEGIN_STMT
  3608. pxReturn = pxNextTCB;
  3609. # DEBUG BEGIN_STMT
  3610. xBreakLoop = 1;
  3611. <bb 13> :
  3612. # DEBUG BEGIN_STMT
  3613. # DEBUG BEGIN_STMT
  3614. if (xBreakLoop != 0)
  3615. goto <bb 16>; [INV]
  3616. else
  3617. goto <bb 14>; [INV]
  3618. <bb 14> :
  3619. # DEBUG BEGIN_STMT
  3620. x = x + 1;
  3621. <bb 15> :
  3622. # DEBUG BEGIN_STMT
  3623. if (x <= 9)
  3624. goto <bb 9>; [INV]
  3625. else
  3626. goto <bb 16>; [INV]
  3627. <bb 16> :
  3628. # DEBUG BEGIN_STMT
  3629. if (pxReturn != 0B)
  3630. goto <bb 18>; [INV]
  3631. else
  3632. goto <bb 17>; [INV]
  3633. <bb 17> :
  3634. # DEBUG BEGIN_STMT
  3635. if (pxNextTCB != pxFirstTCB)
  3636. goto <bb 6>; [INV]
  3637. else
  3638. goto <bb 18>; [INV]
  3639. <bb 18> :
  3640. # DEBUG BEGIN_STMT
  3641. # DEBUG BEGIN_STMT
  3642. D.7845 = pxReturn;
  3643. return D.7845;
  3644. }
  3645. pcTaskGetName (struct tskTaskControlBlock * xTaskToQuery)
  3646. {
  3647. struct TCB_t * pxTCB;
  3648. char * D.7815;
  3649. struct TCB_t * iftmp.69;
  3650. <bb 2> :
  3651. # DEBUG BEGIN_STMT
  3652. # DEBUG BEGIN_STMT
  3653. if (xTaskToQuery == 0B)
  3654. goto <bb 3>; [INV]
  3655. else
  3656. goto <bb 4>; [INV]
  3657. <bb 3> :
  3658. iftmp.69 = pxCurrentTCB;
  3659. goto <bb 5>; [INV]
  3660. <bb 4> :
  3661. iftmp.69 = xTaskToQuery;
  3662. <bb 5> :
  3663. pxTCB = iftmp.69;
  3664. # DEBUG BEGIN_STMT
  3665. if (pxTCB == 0B)
  3666. goto <bb 6>; [INV]
  3667. else
  3668. goto <bb 8>; [INV]
  3669. <bb 6> :
  3670. # DEBUG BEGIN_STMT
  3671. vPortRaiseBASEPRI ();
  3672. <bb 7> :
  3673. # DEBUG BEGIN_STMT
  3674. # DEBUG BEGIN_STMT
  3675. # DEBUG BEGIN_STMT
  3676. goto <bb 7>; [INV]
  3677. <bb 8> :
  3678. # DEBUG BEGIN_STMT
  3679. # DEBUG BEGIN_STMT
  3680. D.7815 = &pxTCB->pcTaskName[0];
  3681. return D.7815;
  3682. }
  3683. uxTaskGetNumberOfTasks ()
  3684. {
  3685. UBaseType_t D.7807;
  3686. <bb 2> :
  3687. # DEBUG BEGIN_STMT
  3688. D.7807 = uxCurrentNumberOfTasks;
  3689. return D.7807;
  3690. }
  3691. xTaskGetTickCountFromISR ()
  3692. {
  3693. UBaseType_t uxSavedInterruptStatus;
  3694. TickType_t xReturn;
  3695. TickType_t D.7805;
  3696. <bb 2> :
  3697. # DEBUG BEGIN_STMT
  3698. # DEBUG BEGIN_STMT
  3699. # DEBUG BEGIN_STMT
  3700. vPortValidateInterruptPriority ();
  3701. # DEBUG BEGIN_STMT
  3702. uxSavedInterruptStatus = 0;
  3703. # DEBUG BEGIN_STMT
  3704. xReturn = xTickCount;
  3705. # DEBUG BEGIN_STMT
  3706. # DEBUG BEGIN_STMT
  3707. D.7805 = xReturn;
  3708. return D.7805;
  3709. }
  3710. xTaskGetTickCount ()
  3711. {
  3712. TickType_t xTicks;
  3713. TickType_t D.7803;
  3714. <bb 2> :
  3715. # DEBUG BEGIN_STMT
  3716. # DEBUG BEGIN_STMT
  3717. # DEBUG BEGIN_STMT
  3718. xTicks = xTickCount;
  3719. # DEBUG BEGIN_STMT
  3720. # DEBUG BEGIN_STMT
  3721. D.7803 = xTicks;
  3722. return D.7803;
  3723. }
  3724. xTaskResumeAll ()
  3725. {
  3726. TickType_t xPendedCounts;
  3727. struct ListItem_t * const pxIndex;
  3728. struct List_t * const pxList;
  3729. struct List_t * const pxList;
  3730. BaseType_t xAlreadyYielded;
  3731. struct TCB_t * pxTCB;
  3732. BaseType_t D.7801;
  3733. <bb 2> :
  3734. # DEBUG BEGIN_STMT
  3735. pxTCB = 0B;
  3736. # DEBUG BEGIN_STMT
  3737. xAlreadyYielded = 0;
  3738. # DEBUG BEGIN_STMT
  3739. uxSchedulerSuspended.62_1 = uxSchedulerSuspended;
  3740. if (uxSchedulerSuspended.62_1 == 0)
  3741. goto <bb 3>; [INV]
  3742. else
  3743. goto <bb 5>; [INV]
  3744. <bb 3> :
  3745. # DEBUG BEGIN_STMT
  3746. vPortRaiseBASEPRI ();
  3747. <bb 4> :
  3748. # DEBUG BEGIN_STMT
  3749. # DEBUG BEGIN_STMT
  3750. # DEBUG BEGIN_STMT
  3751. goto <bb 4>; [INV]
  3752. <bb 5> :
  3753. # DEBUG BEGIN_STMT
  3754. # DEBUG BEGIN_STMT
  3755. vPortEnterCritical ();
  3756. # DEBUG BEGIN_STMT
  3757. uxSchedulerSuspended.63_2 = uxSchedulerSuspended;
  3758. _3 = uxSchedulerSuspended.63_2 + 4294967295;
  3759. uxSchedulerSuspended = _3;
  3760. # DEBUG BEGIN_STMT
  3761. uxSchedulerSuspended.64_4 = uxSchedulerSuspended;
  3762. if (uxSchedulerSuspended.64_4 == 0)
  3763. goto <bb 6>; [INV]
  3764. else
  3765. goto <bb 25>; [INV]
  3766. <bb 6> :
  3767. # DEBUG BEGIN_STMT
  3768. uxCurrentNumberOfTasks.65_5 = uxCurrentNumberOfTasks;
  3769. if (uxCurrentNumberOfTasks.65_5 != 0)
  3770. goto <bb 15>; [INV]
  3771. else
  3772. goto <bb 25>; [INV]
  3773. <bb 7> :
  3774. # DEBUG BEGIN_STMT
  3775. _6 = xPendingReadyList.xListEnd.pxNext;
  3776. pxTCB = _6->pvOwner;
  3777. # DEBUG BEGIN_STMT
  3778. pxList = pxTCB->xEventListItem.pvContainer;
  3779. # DEBUG BEGIN_STMT
  3780. _7 = pxTCB->xEventListItem.pxNext;
  3781. _8 = pxTCB->xEventListItem.pxPrevious;
  3782. _7->pxPrevious = _8;
  3783. # DEBUG BEGIN_STMT
  3784. _9 = pxTCB->xEventListItem.pxPrevious;
  3785. _10 = pxTCB->xEventListItem.pxNext;
  3786. _9->pxNext = _10;
  3787. # DEBUG BEGIN_STMT
  3788. _11 = pxList->pxIndex;
  3789. _12 = &pxTCB->xEventListItem;
  3790. if (_11 == _12)
  3791. goto <bb 8>; [INV]
  3792. else
  3793. goto <bb 9>; [INV]
  3794. <bb 8> :
  3795. # DEBUG BEGIN_STMT
  3796. _13 = pxTCB->xEventListItem.pxPrevious;
  3797. pxList->pxIndex = _13;
  3798. <bb 9> :
  3799. # DEBUG BEGIN_STMT
  3800. pxTCB->xEventListItem.pvContainer = 0B;
  3801. # DEBUG BEGIN_STMT
  3802. _14 = pxList->uxNumberOfItems;
  3803. _15 = _14 + 4294967295;
  3804. pxList->uxNumberOfItems = _15;
  3805. # DEBUG BEGIN_STMT
  3806. # DEBUG BEGIN_STMT
  3807. __asm__ __volatile__("" : : : "memory");
  3808. # DEBUG BEGIN_STMT
  3809. pxList = pxTCB->xStateListItem.pvContainer;
  3810. # DEBUG BEGIN_STMT
  3811. _16 = pxTCB->xStateListItem.pxNext;
  3812. _17 = pxTCB->xStateListItem.pxPrevious;
  3813. _16->pxPrevious = _17;
  3814. # DEBUG BEGIN_STMT
  3815. _18 = pxTCB->xStateListItem.pxPrevious;
  3816. _19 = pxTCB->xStateListItem.pxNext;
  3817. _18->pxNext = _19;
  3818. # DEBUG BEGIN_STMT
  3819. _20 = pxList->pxIndex;
  3820. _21 = &pxTCB->xStateListItem;
  3821. if (_20 == _21)
  3822. goto <bb 10>; [INV]
  3823. else
  3824. goto <bb 11>; [INV]
  3825. <bb 10> :
  3826. # DEBUG BEGIN_STMT
  3827. _22 = pxTCB->xStateListItem.pxPrevious;
  3828. pxList->pxIndex = _22;
  3829. <bb 11> :
  3830. # DEBUG BEGIN_STMT
  3831. pxTCB->xStateListItem.pvContainer = 0B;
  3832. # DEBUG BEGIN_STMT
  3833. _23 = pxList->uxNumberOfItems;
  3834. _24 = _23 + 4294967295;
  3835. pxList->uxNumberOfItems = _24;
  3836. # DEBUG BEGIN_STMT
  3837. # DEBUG BEGIN_STMT
  3838. # DEBUG BEGIN_STMT
  3839. _25 = pxTCB->uxPriority;
  3840. uxTopReadyPriority.66_26 = uxTopReadyPriority;
  3841. if (_25 > uxTopReadyPriority.66_26)
  3842. goto <bb 12>; [INV]
  3843. else
  3844. goto <bb 13>; [INV]
  3845. <bb 12> :
  3846. # DEBUG BEGIN_STMT
  3847. _27 = pxTCB->uxPriority;
  3848. uxTopReadyPriority = _27;
  3849. <bb 13> :
  3850. # DEBUG BEGIN_STMT
  3851. # DEBUG BEGIN_STMT
  3852. _28 = pxTCB->uxPriority;
  3853. pxIndex = pxReadyTasksLists[_28].pxIndex;
  3854. # DEBUG BEGIN_STMT
  3855. # DEBUG BEGIN_STMT
  3856. # DEBUG BEGIN_STMT
  3857. pxTCB->xStateListItem.pxNext = pxIndex;
  3858. # DEBUG BEGIN_STMT
  3859. _29 = pxIndex->pxPrevious;
  3860. pxTCB->xStateListItem.pxPrevious = _29;
  3861. # DEBUG BEGIN_STMT
  3862. _30 = pxIndex->pxPrevious;
  3863. _31 = &pxTCB->xStateListItem;
  3864. _30->pxNext = _31;
  3865. # DEBUG BEGIN_STMT
  3866. _32 = &pxTCB->xStateListItem;
  3867. pxIndex->pxPrevious = _32;
  3868. # DEBUG BEGIN_STMT
  3869. _33 = pxTCB->uxPriority;
  3870. _34 = &pxReadyTasksLists[_33];
  3871. pxTCB->xStateListItem.pvContainer = _34;
  3872. # DEBUG BEGIN_STMT
  3873. _35 = pxTCB->uxPriority;
  3874. _36 = pxReadyTasksLists[_35].uxNumberOfItems;
  3875. _37 = _36 + 1;
  3876. pxReadyTasksLists[_35].uxNumberOfItems = _37;
  3877. # DEBUG BEGIN_STMT
  3878. # DEBUG BEGIN_STMT
  3879. # DEBUG BEGIN_STMT
  3880. _38 = pxTCB->uxPriority;
  3881. pxCurrentTCB.67_39 = pxCurrentTCB;
  3882. _40 = pxCurrentTCB.67_39->uxPriority;
  3883. if (_38 >= _40)
  3884. goto <bb 14>; [INV]
  3885. else
  3886. goto <bb 15>; [INV]
  3887. <bb 14> :
  3888. # DEBUG BEGIN_STMT
  3889. xYieldPending = 1;
  3890. <bb 15> :
  3891. # DEBUG BEGIN_STMT
  3892. # DEBUG BEGIN_STMT
  3893. _41 = xPendingReadyList.uxNumberOfItems;
  3894. if (_41 != 0)
  3895. goto <bb 7>; [INV]
  3896. else
  3897. goto <bb 16>; [INV]
  3898. <bb 16> :
  3899. # DEBUG BEGIN_STMT
  3900. if (pxTCB != 0B)
  3901. goto <bb 17>; [INV]
  3902. else
  3903. goto <bb 18>; [INV]
  3904. <bb 17> :
  3905. # DEBUG BEGIN_STMT
  3906. prvResetNextTaskUnblockTime ();
  3907. <bb 18> :
  3908. # DEBUG BEGIN_STMT
  3909. xPendedCounts = xPendedTicks;
  3910. # DEBUG BEGIN_STMT
  3911. if (xPendedCounts != 0)
  3912. goto <bb 19>; [INV]
  3913. else
  3914. goto <bb 23>; [INV]
  3915. <bb 19> :
  3916. # DEBUG BEGIN_STMT
  3917. # DEBUG BEGIN_STMT
  3918. _42 = xTaskIncrementTick ();
  3919. if (_42 != 0)
  3920. goto <bb 20>; [INV]
  3921. else
  3922. goto <bb 21>; [INV]
  3923. <bb 20> :
  3924. # DEBUG BEGIN_STMT
  3925. xYieldPending = 1;
  3926. <bb 21> :
  3927. # DEBUG BEGIN_STMT
  3928. # DEBUG BEGIN_STMT
  3929. xPendedCounts = xPendedCounts + 4294967295;
  3930. # DEBUG BEGIN_STMT
  3931. if (xPendedCounts != 0)
  3932. goto <bb 19>; [INV]
  3933. else
  3934. goto <bb 22>; [INV]
  3935. <bb 22> :
  3936. # DEBUG BEGIN_STMT
  3937. xPendedTicks = 0;
  3938. <bb 23> :
  3939. # DEBUG BEGIN_STMT
  3940. # DEBUG BEGIN_STMT
  3941. xYieldPending.68_43 = xYieldPending;
  3942. if (xYieldPending.68_43 != 0)
  3943. goto <bb 24>; [INV]
  3944. else
  3945. goto <bb 25>; [INV]
  3946. <bb 24> :
  3947. # DEBUG BEGIN_STMT
  3948. xAlreadyYielded = 1;
  3949. # DEBUG BEGIN_STMT
  3950. _44 = 3758157060B;
  3951. *_44 = 268435456;
  3952. # DEBUG BEGIN_STMT
  3953. __asm__ __volatile__("dsb" : : : "memory");
  3954. # DEBUG BEGIN_STMT
  3955. __asm__ __volatile__("isb");
  3956. # DEBUG BEGIN_STMT
  3957. <bb 25> :
  3958. # DEBUG BEGIN_STMT
  3959. # DEBUG BEGIN_STMT
  3960. vPortExitCritical ();
  3961. # DEBUG BEGIN_STMT
  3962. D.7801 = xAlreadyYielded;
  3963. return D.7801;
  3964. }
  3965. vTaskSuspendAll ()
  3966. {
  3967. <bb 2> :
  3968. # DEBUG BEGIN_STMT
  3969. # DEBUG BEGIN_STMT
  3970. uxSchedulerSuspended.61_1 = uxSchedulerSuspended;
  3971. _2 = uxSchedulerSuspended.61_1 + 1;
  3972. uxSchedulerSuspended = _2;
  3973. # DEBUG BEGIN_STMT
  3974. __asm__ __volatile__("" : : : "memory");
  3975. return;
  3976. }
  3977. vTaskEndScheduler ()
  3978. {
  3979. <bb 2> :
  3980. # DEBUG BEGIN_STMT
  3981. vPortRaiseBASEPRI ();
  3982. # DEBUG BEGIN_STMT
  3983. xSchedulerRunning = 0;
  3984. # DEBUG BEGIN_STMT
  3985. vPortEndScheduler ();
  3986. return;
  3987. }
  3988. vTaskStartScheduler ()
  3989. {
  3990. BaseType_t xReturn;
  3991. long unsigned int vol.57;
  3992. <bb 2> :
  3993. # DEBUG BEGIN_STMT
  3994. # DEBUG BEGIN_STMT
  3995. xReturn = xTaskCreate (prvIdleTask, "IDLE", 90, 0B, 0, &xIdleTaskHandle);
  3996. # DEBUG BEGIN_STMT
  3997. if (xReturn == 1)
  3998. goto <bb 3>; [INV]
  3999. else
  4000. goto <bb 4>; [INV]
  4001. <bb 3> :
  4002. # DEBUG BEGIN_STMT
  4003. xReturn = xTimerCreateTimerTask ();
  4004. <bb 4> :
  4005. # DEBUG BEGIN_STMT
  4006. # DEBUG BEGIN_STMT
  4007. if (xReturn == 1)
  4008. goto <bb 5>; [INV]
  4009. else
  4010. goto <bb 6>; [INV]
  4011. <bb 5> :
  4012. # DEBUG BEGIN_STMT
  4013. vPortRaiseBASEPRI ();
  4014. # DEBUG BEGIN_STMT
  4015. xNextTaskUnblockTime = 4294967295;
  4016. # DEBUG BEGIN_STMT
  4017. xSchedulerRunning = 1;
  4018. # DEBUG BEGIN_STMT
  4019. xTickCount = 0;
  4020. # DEBUG BEGIN_STMT
  4021. # DEBUG BEGIN_STMT
  4022. # DEBUG BEGIN_STMT
  4023. _1 = xPortStartScheduler ();
  4024. goto <bb 9>; [INV]
  4025. <bb 6> :
  4026. # DEBUG BEGIN_STMT
  4027. if (xReturn == -1)
  4028. goto <bb 7>; [INV]
  4029. else
  4030. goto <bb 9>; [INV]
  4031. <bb 7> :
  4032. # DEBUG BEGIN_STMT
  4033. vPortRaiseBASEPRI ();
  4034. <bb 8> :
  4035. # DEBUG BEGIN_STMT
  4036. # DEBUG BEGIN_STMT
  4037. # DEBUG BEGIN_STMT
  4038. goto <bb 8>; [INV]
  4039. <bb 9> :
  4040. # DEBUG BEGIN_STMT
  4041. # DEBUG BEGIN_STMT
  4042. # DEBUG BEGIN_STMT
  4043. vol.57 = uxTopUsedPriority;
  4044. return;
  4045. }
  4046. xTaskResumeFromISR (struct tskTaskControlBlock * xTaskToResume)
  4047. {
  4048. struct ListItem_t * const pxIndex;
  4049. UBaseType_t uxSavedInterruptStatus;
  4050. struct TCB_t * const pxTCB;
  4051. BaseType_t xYieldRequired;
  4052. BaseType_t D.7757;
  4053. <bb 2> :
  4054. # DEBUG BEGIN_STMT
  4055. xYieldRequired = 0;
  4056. # DEBUG BEGIN_STMT
  4057. pxTCB = xTaskToResume;
  4058. # DEBUG BEGIN_STMT
  4059. # DEBUG BEGIN_STMT
  4060. if (xTaskToResume == 0B)
  4061. goto <bb 3>; [INV]
  4062. else
  4063. goto <bb 5>; [INV]
  4064. <bb 3> :
  4065. # DEBUG BEGIN_STMT
  4066. vPortRaiseBASEPRI ();
  4067. <bb 4> :
  4068. # DEBUG BEGIN_STMT
  4069. # DEBUG BEGIN_STMT
  4070. # DEBUG BEGIN_STMT
  4071. goto <bb 4>; [INV]
  4072. <bb 5> :
  4073. # DEBUG BEGIN_STMT
  4074. # DEBUG BEGIN_STMT
  4075. vPortValidateInterruptPriority ();
  4076. # DEBUG BEGIN_STMT
  4077. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  4078. # DEBUG BEGIN_STMT
  4079. _1 = prvTaskIsTaskSuspended (pxTCB);
  4080. if (_1 != 0)
  4081. goto <bb 6>; [INV]
  4082. else
  4083. goto <bb 13>; [INV]
  4084. <bb 6> :
  4085. # DEBUG BEGIN_STMT
  4086. # DEBUG BEGIN_STMT
  4087. uxSchedulerSuspended.54_2 = uxSchedulerSuspended;
  4088. if (uxSchedulerSuspended.54_2 == 0)
  4089. goto <bb 7>; [INV]
  4090. else
  4091. goto <bb 12>; [INV]
  4092. <bb 7> :
  4093. # DEBUG BEGIN_STMT
  4094. _3 = pxTCB->uxPriority;
  4095. pxCurrentTCB.55_4 = pxCurrentTCB;
  4096. _5 = pxCurrentTCB.55_4->uxPriority;
  4097. if (_3 >= _5)
  4098. goto <bb 8>; [INV]
  4099. else
  4100. goto <bb 9>; [INV]
  4101. <bb 8> :
  4102. # DEBUG BEGIN_STMT
  4103. xYieldRequired = 1;
  4104. # DEBUG BEGIN_STMT
  4105. xYieldPending = 1;
  4106. <bb 9> :
  4107. # DEBUG BEGIN_STMT
  4108. # DEBUG BEGIN_STMT
  4109. _6 = &pxTCB->xStateListItem;
  4110. uxListRemove (_6);
  4111. # DEBUG BEGIN_STMT
  4112. # DEBUG BEGIN_STMT
  4113. _7 = pxTCB->uxPriority;
  4114. uxTopReadyPriority.56_8 = uxTopReadyPriority;
  4115. if (_7 > uxTopReadyPriority.56_8)
  4116. goto <bb 10>; [INV]
  4117. else
  4118. goto <bb 11>; [INV]
  4119. <bb 10> :
  4120. # DEBUG BEGIN_STMT
  4121. _9 = pxTCB->uxPriority;
  4122. uxTopReadyPriority = _9;
  4123. <bb 11> :
  4124. # DEBUG BEGIN_STMT
  4125. # DEBUG BEGIN_STMT
  4126. _10 = pxTCB->uxPriority;
  4127. pxIndex = pxReadyTasksLists[_10].pxIndex;
  4128. # DEBUG BEGIN_STMT
  4129. # DEBUG BEGIN_STMT
  4130. # DEBUG BEGIN_STMT
  4131. pxTCB->xStateListItem.pxNext = pxIndex;
  4132. # DEBUG BEGIN_STMT
  4133. _11 = pxIndex->pxPrevious;
  4134. pxTCB->xStateListItem.pxPrevious = _11;
  4135. # DEBUG BEGIN_STMT
  4136. _12 = pxIndex->pxPrevious;
  4137. _13 = &pxTCB->xStateListItem;
  4138. _12->pxNext = _13;
  4139. # DEBUG BEGIN_STMT
  4140. _14 = &pxTCB->xStateListItem;
  4141. pxIndex->pxPrevious = _14;
  4142. # DEBUG BEGIN_STMT
  4143. _15 = pxTCB->uxPriority;
  4144. _16 = &pxReadyTasksLists[_15];
  4145. pxTCB->xStateListItem.pvContainer = _16;
  4146. # DEBUG BEGIN_STMT
  4147. _17 = pxTCB->uxPriority;
  4148. _18 = pxReadyTasksLists[_17].uxNumberOfItems;
  4149. _19 = _18 + 1;
  4150. pxReadyTasksLists[_17].uxNumberOfItems = _19;
  4151. # DEBUG BEGIN_STMT
  4152. # DEBUG BEGIN_STMT
  4153. goto <bb 13>; [INV]
  4154. <bb 12> :
  4155. # DEBUG BEGIN_STMT
  4156. _20 = &pxTCB->xEventListItem;
  4157. vListInsertEnd (&xPendingReadyList, _20);
  4158. <bb 13> :
  4159. # DEBUG BEGIN_STMT
  4160. # DEBUG BEGIN_STMT
  4161. vPortSetBASEPRI (uxSavedInterruptStatus);
  4162. # DEBUG BEGIN_STMT
  4163. D.7757 = xYieldRequired;
  4164. return D.7757;
  4165. }
  4166. vTaskResume (struct tskTaskControlBlock * xTaskToResume)
  4167. {
  4168. struct ListItem_t * const pxIndex;
  4169. struct TCB_t * const pxTCB;
  4170. <bb 2> :
  4171. # DEBUG BEGIN_STMT
  4172. pxTCB = xTaskToResume;
  4173. # DEBUG BEGIN_STMT
  4174. if (xTaskToResume == 0B)
  4175. goto <bb 3>; [INV]
  4176. else
  4177. goto <bb 5>; [INV]
  4178. <bb 3> :
  4179. # DEBUG BEGIN_STMT
  4180. vPortRaiseBASEPRI ();
  4181. <bb 4> :
  4182. # DEBUG BEGIN_STMT
  4183. # DEBUG BEGIN_STMT
  4184. # DEBUG BEGIN_STMT
  4185. goto <bb 4>; [INV]
  4186. <bb 5> :
  4187. # DEBUG BEGIN_STMT
  4188. # DEBUG BEGIN_STMT
  4189. pxCurrentTCB.51_1 = pxCurrentTCB;
  4190. if (pxTCB != pxCurrentTCB.51_1)
  4191. goto <bb 6>; [INV]
  4192. else
  4193. goto <bb 13>; [INV]
  4194. <bb 6> :
  4195. if (pxTCB != 0B)
  4196. goto <bb 7>; [INV]
  4197. else
  4198. goto <bb 13>; [INV]
  4199. <bb 7> :
  4200. # DEBUG BEGIN_STMT
  4201. vPortEnterCritical ();
  4202. # DEBUG BEGIN_STMT
  4203. _2 = prvTaskIsTaskSuspended (pxTCB);
  4204. if (_2 != 0)
  4205. goto <bb 8>; [INV]
  4206. else
  4207. goto <bb 12>; [INV]
  4208. <bb 8> :
  4209. # DEBUG BEGIN_STMT
  4210. # DEBUG BEGIN_STMT
  4211. _3 = &pxTCB->xStateListItem;
  4212. uxListRemove (_3);
  4213. # DEBUG BEGIN_STMT
  4214. # DEBUG BEGIN_STMT
  4215. _4 = pxTCB->uxPriority;
  4216. uxTopReadyPriority.52_5 = uxTopReadyPriority;
  4217. if (_4 > uxTopReadyPriority.52_5)
  4218. goto <bb 9>; [INV]
  4219. else
  4220. goto <bb 10>; [INV]
  4221. <bb 9> :
  4222. # DEBUG BEGIN_STMT
  4223. _6 = pxTCB->uxPriority;
  4224. uxTopReadyPriority = _6;
  4225. <bb 10> :
  4226. # DEBUG BEGIN_STMT
  4227. # DEBUG BEGIN_STMT
  4228. _7 = pxTCB->uxPriority;
  4229. pxIndex = pxReadyTasksLists[_7].pxIndex;
  4230. # DEBUG BEGIN_STMT
  4231. # DEBUG BEGIN_STMT
  4232. # DEBUG BEGIN_STMT
  4233. pxTCB->xStateListItem.pxNext = pxIndex;
  4234. # DEBUG BEGIN_STMT
  4235. _8 = pxIndex->pxPrevious;
  4236. pxTCB->xStateListItem.pxPrevious = _8;
  4237. # DEBUG BEGIN_STMT
  4238. _9 = pxIndex->pxPrevious;
  4239. _10 = &pxTCB->xStateListItem;
  4240. _9->pxNext = _10;
  4241. # DEBUG BEGIN_STMT
  4242. _11 = &pxTCB->xStateListItem;
  4243. pxIndex->pxPrevious = _11;
  4244. # DEBUG BEGIN_STMT
  4245. _12 = pxTCB->uxPriority;
  4246. _13 = &pxReadyTasksLists[_12];
  4247. pxTCB->xStateListItem.pvContainer = _13;
  4248. # DEBUG BEGIN_STMT
  4249. _14 = pxTCB->uxPriority;
  4250. _15 = pxReadyTasksLists[_14].uxNumberOfItems;
  4251. _16 = _15 + 1;
  4252. pxReadyTasksLists[_14].uxNumberOfItems = _16;
  4253. # DEBUG BEGIN_STMT
  4254. # DEBUG BEGIN_STMT
  4255. # DEBUG BEGIN_STMT
  4256. _17 = pxTCB->uxPriority;
  4257. pxCurrentTCB.53_18 = pxCurrentTCB;
  4258. _19 = pxCurrentTCB.53_18->uxPriority;
  4259. if (_17 >= _19)
  4260. goto <bb 11>; [INV]
  4261. else
  4262. goto <bb 12>; [INV]
  4263. <bb 11> :
  4264. # DEBUG BEGIN_STMT
  4265. _20 = 3758157060B;
  4266. *_20 = 268435456;
  4267. # DEBUG BEGIN_STMT
  4268. __asm__ __volatile__("dsb" : : : "memory");
  4269. # DEBUG BEGIN_STMT
  4270. __asm__ __volatile__("isb");
  4271. # DEBUG BEGIN_STMT
  4272. <bb 12> :
  4273. # DEBUG BEGIN_STMT
  4274. # DEBUG BEGIN_STMT
  4275. vPortExitCritical ();
  4276. <bb 13> :
  4277. # DEBUG BEGIN_STMT
  4278. return;
  4279. }
  4280. prvTaskIsTaskSuspended (struct tskTaskControlBlock * const xTask)
  4281. {
  4282. const struct TCB_t * const pxTCB;
  4283. BaseType_t xReturn;
  4284. BaseType_t D.7742;
  4285. <bb 2> :
  4286. # DEBUG BEGIN_STMT
  4287. xReturn = 0;
  4288. # DEBUG BEGIN_STMT
  4289. pxTCB = xTask;
  4290. # DEBUG BEGIN_STMT
  4291. if (xTask == 0B)
  4292. goto <bb 3>; [INV]
  4293. else
  4294. goto <bb 5>; [INV]
  4295. <bb 3> :
  4296. # DEBUG BEGIN_STMT
  4297. vPortRaiseBASEPRI ();
  4298. <bb 4> :
  4299. # DEBUG BEGIN_STMT
  4300. # DEBUG BEGIN_STMT
  4301. # DEBUG BEGIN_STMT
  4302. goto <bb 4>; [INV]
  4303. <bb 5> :
  4304. # DEBUG BEGIN_STMT
  4305. # DEBUG BEGIN_STMT
  4306. _1 = pxTCB->xStateListItem.pvContainer;
  4307. if (_1 == &xSuspendedTaskList)
  4308. goto <bb 6>; [INV]
  4309. else
  4310. goto <bb 9>; [INV]
  4311. <bb 6> :
  4312. # DEBUG BEGIN_STMT
  4313. _2 = pxTCB->xEventListItem.pvContainer;
  4314. if (_2 != &xPendingReadyList)
  4315. goto <bb 7>; [INV]
  4316. else
  4317. goto <bb 9>; [INV]
  4318. <bb 7> :
  4319. # DEBUG BEGIN_STMT
  4320. _3 = pxTCB->xEventListItem.pvContainer;
  4321. if (_3 == 0B)
  4322. goto <bb 8>; [INV]
  4323. else
  4324. goto <bb 9>; [INV]
  4325. <bb 8> :
  4326. # DEBUG BEGIN_STMT
  4327. xReturn = 1;
  4328. <bb 9> :
  4329. # DEBUG BEGIN_STMT
  4330. # DEBUG BEGIN_STMT
  4331. D.7742 = xReturn;
  4332. return D.7742;
  4333. }
  4334. vTaskSuspend (struct tskTaskControlBlock * xTaskToSuspend)
  4335. {
  4336. BaseType_t x;
  4337. struct TCB_t * pxTCB;
  4338. struct TCB_t * iftmp.45;
  4339. <bb 2> :
  4340. # DEBUG BEGIN_STMT
  4341. # DEBUG BEGIN_STMT
  4342. vPortEnterCritical ();
  4343. # DEBUG BEGIN_STMT
  4344. if (xTaskToSuspend == 0B)
  4345. goto <bb 3>; [INV]
  4346. else
  4347. goto <bb 4>; [INV]
  4348. <bb 3> :
  4349. iftmp.45 = pxCurrentTCB;
  4350. goto <bb 5>; [INV]
  4351. <bb 4> :
  4352. iftmp.45 = xTaskToSuspend;
  4353. <bb 5> :
  4354. pxTCB = iftmp.45;
  4355. # DEBUG BEGIN_STMT
  4356. # DEBUG BEGIN_STMT
  4357. _1 = &pxTCB->xStateListItem;
  4358. _2 = uxListRemove (_1);
  4359. # DEBUG BEGIN_STMT
  4360. # DEBUG BEGIN_STMT
  4361. _3 = pxTCB->xEventListItem.pvContainer;
  4362. if (_3 != 0B)
  4363. goto <bb 6>; [INV]
  4364. else
  4365. goto <bb 7>; [INV]
  4366. <bb 6> :
  4367. # DEBUG BEGIN_STMT
  4368. _4 = &pxTCB->xEventListItem;
  4369. uxListRemove (_4);
  4370. <bb 7> :
  4371. # DEBUG BEGIN_STMT
  4372. # DEBUG BEGIN_STMT
  4373. _5 = &pxTCB->xStateListItem;
  4374. vListInsertEnd (&xSuspendedTaskList, _5);
  4375. # DEBUG BEGIN_STMT
  4376. # DEBUG BEGIN_STMT
  4377. x = 0;
  4378. goto <bb 11>; [INV]
  4379. <bb 8> :
  4380. # DEBUG BEGIN_STMT
  4381. _6 = pxTCB->ucNotifyState[x];
  4382. if (_6 == 1)
  4383. goto <bb 9>; [INV]
  4384. else
  4385. goto <bb 10>; [INV]
  4386. <bb 9> :
  4387. # DEBUG BEGIN_STMT
  4388. pxTCB->ucNotifyState[x] = 0;
  4389. <bb 10> :
  4390. # DEBUG BEGIN_STMT
  4391. x = x + 1;
  4392. <bb 11> :
  4393. # DEBUG BEGIN_STMT
  4394. if (x <= 0)
  4395. goto <bb 8>; [INV]
  4396. else
  4397. goto <bb 12>; [INV]
  4398. <bb 12> :
  4399. # DEBUG BEGIN_STMT
  4400. vPortExitCritical ();
  4401. # DEBUG BEGIN_STMT
  4402. xSchedulerRunning.46_7 = xSchedulerRunning;
  4403. if (xSchedulerRunning.46_7 != 0)
  4404. goto <bb 13>; [INV]
  4405. else
  4406. goto <bb 14>; [INV]
  4407. <bb 13> :
  4408. # DEBUG BEGIN_STMT
  4409. vPortEnterCritical ();
  4410. # DEBUG BEGIN_STMT
  4411. prvResetNextTaskUnblockTime ();
  4412. # DEBUG BEGIN_STMT
  4413. vPortExitCritical ();
  4414. <bb 14> :
  4415. # DEBUG BEGIN_STMT
  4416. # DEBUG BEGIN_STMT
  4417. pxCurrentTCB.47_8 = pxCurrentTCB;
  4418. if (pxTCB == pxCurrentTCB.47_8)
  4419. goto <bb 15>; [INV]
  4420. else
  4421. goto <bb 23>; [INV]
  4422. <bb 15> :
  4423. # DEBUG BEGIN_STMT
  4424. xSchedulerRunning.48_9 = xSchedulerRunning;
  4425. if (xSchedulerRunning.48_9 != 0)
  4426. goto <bb 16>; [INV]
  4427. else
  4428. goto <bb 20>; [INV]
  4429. <bb 16> :
  4430. # DEBUG BEGIN_STMT
  4431. uxSchedulerSuspended.49_10 = uxSchedulerSuspended;
  4432. if (uxSchedulerSuspended.49_10 != 0)
  4433. goto <bb 17>; [INV]
  4434. else
  4435. goto <bb 19>; [INV]
  4436. <bb 17> :
  4437. # DEBUG BEGIN_STMT
  4438. vPortRaiseBASEPRI ();
  4439. <bb 18> :
  4440. # DEBUG BEGIN_STMT
  4441. # DEBUG BEGIN_STMT
  4442. # DEBUG BEGIN_STMT
  4443. goto <bb 18>; [INV]
  4444. <bb 19> :
  4445. # DEBUG BEGIN_STMT
  4446. # DEBUG BEGIN_STMT
  4447. _11 = 3758157060B;
  4448. *_11 = 268435456;
  4449. # DEBUG BEGIN_STMT
  4450. __asm__ __volatile__("dsb" : : : "memory");
  4451. # DEBUG BEGIN_STMT
  4452. __asm__ __volatile__("isb");
  4453. # DEBUG BEGIN_STMT
  4454. goto <bb 23>; [INV]
  4455. <bb 20> :
  4456. # DEBUG BEGIN_STMT
  4457. _12 = xSuspendedTaskList.uxNumberOfItems;
  4458. uxCurrentNumberOfTasks.50_13 = uxCurrentNumberOfTasks;
  4459. if (_12 == uxCurrentNumberOfTasks.50_13)
  4460. goto <bb 21>; [INV]
  4461. else
  4462. goto <bb 22>; [INV]
  4463. <bb 21> :
  4464. # DEBUG BEGIN_STMT
  4465. pxCurrentTCB = 0B;
  4466. goto <bb 23>; [INV]
  4467. <bb 22> :
  4468. # DEBUG BEGIN_STMT
  4469. vTaskSwitchContext ();
  4470. <bb 23> :
  4471. # DEBUG BEGIN_STMT
  4472. return;
  4473. }
  4474. vTaskPrioritySet (struct tskTaskControlBlock * xTask, UBaseType_t uxNewPriority)
  4475. {
  4476. struct ListItem_t * const pxIndex;
  4477. BaseType_t xYieldRequired;
  4478. UBaseType_t uxPriorityUsedOnEntry;
  4479. UBaseType_t uxCurrentBasePriority;
  4480. struct TCB_t * pxTCB;
  4481. struct TCB_t * iftmp.40;
  4482. <bb 2> :
  4483. # DEBUG BEGIN_STMT
  4484. # DEBUG BEGIN_STMT
  4485. # DEBUG BEGIN_STMT
  4486. xYieldRequired = 0;
  4487. # DEBUG BEGIN_STMT
  4488. if (uxNewPriority > 4)
  4489. goto <bb 3>; [INV]
  4490. else
  4491. goto <bb 5>; [INV]
  4492. <bb 3> :
  4493. # DEBUG BEGIN_STMT
  4494. vPortRaiseBASEPRI ();
  4495. <bb 4> :
  4496. # DEBUG BEGIN_STMT
  4497. # DEBUG BEGIN_STMT
  4498. # DEBUG BEGIN_STMT
  4499. goto <bb 4>; [INV]
  4500. <bb 5> :
  4501. # DEBUG BEGIN_STMT
  4502. # DEBUG BEGIN_STMT
  4503. if (uxNewPriority > 4)
  4504. goto <bb 6>; [INV]
  4505. else
  4506. goto <bb 7>; [INV]
  4507. <bb 6> :
  4508. # DEBUG BEGIN_STMT
  4509. uxNewPriority = 4;
  4510. <bb 7> :
  4511. # DEBUG BEGIN_STMT
  4512. # DEBUG BEGIN_STMT
  4513. vPortEnterCritical ();
  4514. # DEBUG BEGIN_STMT
  4515. if (xTask == 0B)
  4516. goto <bb 8>; [INV]
  4517. else
  4518. goto <bb 9>; [INV]
  4519. <bb 8> :
  4520. iftmp.40 = pxCurrentTCB;
  4521. goto <bb 10>; [INV]
  4522. <bb 9> :
  4523. iftmp.40 = xTask;
  4524. <bb 10> :
  4525. pxTCB = iftmp.40;
  4526. # DEBUG BEGIN_STMT
  4527. # DEBUG BEGIN_STMT
  4528. uxCurrentBasePriority = pxTCB->uxBasePriority;
  4529. # DEBUG BEGIN_STMT
  4530. if (uxCurrentBasePriority != uxNewPriority)
  4531. goto <bb 11>; [INV]
  4532. else
  4533. goto <bb 27>; [INV]
  4534. <bb 11> :
  4535. # DEBUG BEGIN_STMT
  4536. if (uxNewPriority > uxCurrentBasePriority)
  4537. goto <bb 12>; [INV]
  4538. else
  4539. goto <bb 15>; [INV]
  4540. <bb 12> :
  4541. # DEBUG BEGIN_STMT
  4542. pxCurrentTCB.41_1 = pxCurrentTCB;
  4543. if (pxTCB != pxCurrentTCB.41_1)
  4544. goto <bb 13>; [INV]
  4545. else
  4546. goto <bb 17>; [INV]
  4547. <bb 13> :
  4548. # DEBUG BEGIN_STMT
  4549. pxCurrentTCB.42_2 = pxCurrentTCB;
  4550. _3 = pxCurrentTCB.42_2->uxPriority;
  4551. if (uxNewPriority >= _3)
  4552. goto <bb 14>; [INV]
  4553. else
  4554. goto <bb 17>; [INV]
  4555. <bb 14> :
  4556. # DEBUG BEGIN_STMT
  4557. xYieldRequired = 1;
  4558. goto <bb 17>; [INV]
  4559. <bb 15> :
  4560. # DEBUG BEGIN_STMT
  4561. pxCurrentTCB.43_4 = pxCurrentTCB;
  4562. if (pxTCB == pxCurrentTCB.43_4)
  4563. goto <bb 16>; [INV]
  4564. else
  4565. goto <bb 17>; [INV]
  4566. <bb 16> :
  4567. # DEBUG BEGIN_STMT
  4568. xYieldRequired = 1;
  4569. <bb 17> :
  4570. # DEBUG BEGIN_STMT
  4571. # DEBUG BEGIN_STMT
  4572. uxPriorityUsedOnEntry = pxTCB->uxPriority;
  4573. # DEBUG BEGIN_STMT
  4574. _5 = pxTCB->uxBasePriority;
  4575. _6 = pxTCB->uxPriority;
  4576. if (_5 == _6)
  4577. goto <bb 18>; [INV]
  4578. else
  4579. goto <bb 19>; [INV]
  4580. <bb 18> :
  4581. # DEBUG BEGIN_STMT
  4582. pxTCB->uxPriority = uxNewPriority;
  4583. <bb 19> :
  4584. # DEBUG BEGIN_STMT
  4585. # DEBUG BEGIN_STMT
  4586. pxTCB->uxBasePriority = uxNewPriority;
  4587. # DEBUG BEGIN_STMT
  4588. _7 = pxTCB->xEventListItem.xItemValue;
  4589. _8 = (signed int) _7;
  4590. if (_8 >= 0)
  4591. goto <bb 20>; [INV]
  4592. else
  4593. goto <bb 21>; [INV]
  4594. <bb 20> :
  4595. # DEBUG BEGIN_STMT
  4596. _9 = 5 - uxNewPriority;
  4597. pxTCB->xEventListItem.xItemValue = _9;
  4598. <bb 21> :
  4599. # DEBUG BEGIN_STMT
  4600. # DEBUG BEGIN_STMT
  4601. _10 = pxTCB->xStateListItem.pvContainer;
  4602. _11 = &pxReadyTasksLists[uxPriorityUsedOnEntry];
  4603. if (_10 == _11)
  4604. goto <bb 22>; [INV]
  4605. else
  4606. goto <bb 25>; [INV]
  4607. <bb 22> :
  4608. # DEBUG BEGIN_STMT
  4609. _12 = &pxTCB->xStateListItem;
  4610. _13 = uxListRemove (_12);
  4611. # DEBUG BEGIN_STMT
  4612. # DEBUG BEGIN_STMT
  4613. # DEBUG BEGIN_STMT
  4614. _14 = pxTCB->uxPriority;
  4615. uxTopReadyPriority.44_15 = uxTopReadyPriority;
  4616. if (_14 > uxTopReadyPriority.44_15)
  4617. goto <bb 23>; [INV]
  4618. else
  4619. goto <bb 24>; [INV]
  4620. <bb 23> :
  4621. # DEBUG BEGIN_STMT
  4622. _16 = pxTCB->uxPriority;
  4623. uxTopReadyPriority = _16;
  4624. <bb 24> :
  4625. # DEBUG BEGIN_STMT
  4626. # DEBUG BEGIN_STMT
  4627. _17 = pxTCB->uxPriority;
  4628. pxIndex = pxReadyTasksLists[_17].pxIndex;
  4629. # DEBUG BEGIN_STMT
  4630. # DEBUG BEGIN_STMT
  4631. # DEBUG BEGIN_STMT
  4632. pxTCB->xStateListItem.pxNext = pxIndex;
  4633. # DEBUG BEGIN_STMT
  4634. _18 = pxIndex->pxPrevious;
  4635. pxTCB->xStateListItem.pxPrevious = _18;
  4636. # DEBUG BEGIN_STMT
  4637. _19 = pxIndex->pxPrevious;
  4638. _20 = &pxTCB->xStateListItem;
  4639. _19->pxNext = _20;
  4640. # DEBUG BEGIN_STMT
  4641. _21 = &pxTCB->xStateListItem;
  4642. pxIndex->pxPrevious = _21;
  4643. # DEBUG BEGIN_STMT
  4644. _22 = pxTCB->uxPriority;
  4645. _23 = &pxReadyTasksLists[_22];
  4646. pxTCB->xStateListItem.pvContainer = _23;
  4647. # DEBUG BEGIN_STMT
  4648. _24 = pxTCB->uxPriority;
  4649. _25 = pxReadyTasksLists[_24].uxNumberOfItems;
  4650. _26 = _25 + 1;
  4651. pxReadyTasksLists[_24].uxNumberOfItems = _26;
  4652. # DEBUG BEGIN_STMT
  4653. # DEBUG BEGIN_STMT
  4654. <bb 25> :
  4655. # DEBUG BEGIN_STMT
  4656. # DEBUG BEGIN_STMT
  4657. if (xYieldRequired != 0)
  4658. goto <bb 26>; [INV]
  4659. else
  4660. goto <bb 27>; [INV]
  4661. <bb 26> :
  4662. # DEBUG BEGIN_STMT
  4663. _27 = 3758157060B;
  4664. *_27 = 268435456;
  4665. # DEBUG BEGIN_STMT
  4666. __asm__ __volatile__("dsb" : : : "memory");
  4667. # DEBUG BEGIN_STMT
  4668. __asm__ __volatile__("isb");
  4669. # DEBUG BEGIN_STMT
  4670. <bb 27> :
  4671. # DEBUG BEGIN_STMT
  4672. # DEBUG BEGIN_STMT
  4673. # DEBUG BEGIN_STMT
  4674. vPortExitCritical ();
  4675. return;
  4676. }
  4677. uxTaskPriorityGetFromISR (struct tskTaskControlBlock * const xTask)
  4678. {
  4679. UBaseType_t uxSavedInterruptState;
  4680. UBaseType_t uxReturn;
  4681. const struct TCB_t * pxTCB;
  4682. UBaseType_t D.7646;
  4683. const struct TCB_t * iftmp.39;
  4684. <bb 2> :
  4685. # DEBUG BEGIN_STMT
  4686. # DEBUG BEGIN_STMT
  4687. # DEBUG BEGIN_STMT
  4688. vPortValidateInterruptPriority ();
  4689. # DEBUG BEGIN_STMT
  4690. uxSavedInterruptState = ulPortRaiseBASEPRI ();
  4691. # DEBUG BEGIN_STMT
  4692. if (xTask == 0B)
  4693. goto <bb 3>; [INV]
  4694. else
  4695. goto <bb 4>; [INV]
  4696. <bb 3> :
  4697. iftmp.39 = pxCurrentTCB;
  4698. goto <bb 5>; [INV]
  4699. <bb 4> :
  4700. iftmp.39 = xTask;
  4701. <bb 5> :
  4702. pxTCB = iftmp.39;
  4703. # DEBUG BEGIN_STMT
  4704. uxReturn = pxTCB->uxPriority;
  4705. # DEBUG BEGIN_STMT
  4706. vPortSetBASEPRI (uxSavedInterruptState);
  4707. # DEBUG BEGIN_STMT
  4708. D.7646 = uxReturn;
  4709. return D.7646;
  4710. }
  4711. uxTaskPriorityGet (struct tskTaskControlBlock * const xTask)
  4712. {
  4713. UBaseType_t uxReturn;
  4714. const struct TCB_t * pxTCB;
  4715. UBaseType_t D.7640;
  4716. const struct TCB_t * iftmp.38;
  4717. <bb 2> :
  4718. # DEBUG BEGIN_STMT
  4719. # DEBUG BEGIN_STMT
  4720. # DEBUG BEGIN_STMT
  4721. vPortEnterCritical ();
  4722. # DEBUG BEGIN_STMT
  4723. if (xTask == 0B)
  4724. goto <bb 3>; [INV]
  4725. else
  4726. goto <bb 4>; [INV]
  4727. <bb 3> :
  4728. iftmp.38 = pxCurrentTCB;
  4729. goto <bb 5>; [INV]
  4730. <bb 4> :
  4731. iftmp.38 = xTask;
  4732. <bb 5> :
  4733. pxTCB = iftmp.38;
  4734. # DEBUG BEGIN_STMT
  4735. uxReturn = pxTCB->uxPriority;
  4736. # DEBUG BEGIN_STMT
  4737. vPortExitCritical ();
  4738. # DEBUG BEGIN_STMT
  4739. D.7640 = uxReturn;
  4740. return D.7640;
  4741. }
  4742. eTaskGetState (struct tskTaskControlBlock * xTask)
  4743. {
  4744. BaseType_t x;
  4745. const struct TCB_t * const pxTCB;
  4746. const struct List_t * pxOverflowedDelayedList;
  4747. const struct List_t * pxDelayedList;
  4748. const struct List_t * pxStateList;
  4749. eTaskState eReturn;
  4750. eTaskState D.7634;
  4751. <bb 2> :
  4752. # DEBUG BEGIN_STMT
  4753. # DEBUG BEGIN_STMT
  4754. # DEBUG BEGIN_STMT
  4755. pxTCB = xTask;
  4756. # DEBUG BEGIN_STMT
  4757. if (pxTCB == 0B)
  4758. goto <bb 3>; [INV]
  4759. else
  4760. goto <bb 5>; [INV]
  4761. <bb 3> :
  4762. # DEBUG BEGIN_STMT
  4763. vPortRaiseBASEPRI ();
  4764. <bb 4> :
  4765. # DEBUG BEGIN_STMT
  4766. # DEBUG BEGIN_STMT
  4767. # DEBUG BEGIN_STMT
  4768. goto <bb 4>; [INV]
  4769. <bb 5> :
  4770. # DEBUG BEGIN_STMT
  4771. # DEBUG BEGIN_STMT
  4772. pxCurrentTCB.37_1 = pxCurrentTCB;
  4773. if (pxTCB == pxCurrentTCB.37_1)
  4774. goto <bb 6>; [INV]
  4775. else
  4776. goto <bb 7>; [INV]
  4777. <bb 6> :
  4778. # DEBUG BEGIN_STMT
  4779. eReturn = 0;
  4780. goto <bb 22>; [INV]
  4781. <bb 7> :
  4782. # DEBUG BEGIN_STMT
  4783. vPortEnterCritical ();
  4784. # DEBUG BEGIN_STMT
  4785. pxStateList = pxTCB->xStateListItem.pvContainer;
  4786. # DEBUG BEGIN_STMT
  4787. pxDelayedList = pxDelayedTaskList;
  4788. # DEBUG BEGIN_STMT
  4789. pxOverflowedDelayedList = pxOverflowDelayedTaskList;
  4790. # DEBUG BEGIN_STMT
  4791. vPortExitCritical ();
  4792. # DEBUG BEGIN_STMT
  4793. if (pxStateList == pxDelayedList)
  4794. goto <bb 9>; [INV]
  4795. else
  4796. goto <bb 8>; [INV]
  4797. <bb 8> :
  4798. if (pxStateList == pxOverflowedDelayedList)
  4799. goto <bb 9>; [INV]
  4800. else
  4801. goto <bb 10>; [INV]
  4802. <bb 9> :
  4803. # DEBUG BEGIN_STMT
  4804. eReturn = 2;
  4805. goto <bb 22>; [INV]
  4806. <bb 10> :
  4807. # DEBUG BEGIN_STMT
  4808. if (pxStateList == &xSuspendedTaskList)
  4809. goto <bb 11>; [INV]
  4810. else
  4811. goto <bb 18>; [INV]
  4812. <bb 11> :
  4813. # DEBUG BEGIN_STMT
  4814. _2 = pxTCB->xEventListItem.pvContainer;
  4815. if (_2 == 0B)
  4816. goto <bb 12>; [INV]
  4817. else
  4818. goto <bb 17>; [INV]
  4819. <bb 12> :
  4820. # DEBUG BEGIN_STMT
  4821. # DEBUG BEGIN_STMT
  4822. eReturn = 3;
  4823. # DEBUG BEGIN_STMT
  4824. x = 0;
  4825. goto <bb 16>; [INV]
  4826. <bb 13> :
  4827. # DEBUG BEGIN_STMT
  4828. _3 = pxTCB->ucNotifyState[x];
  4829. if (_3 == 1)
  4830. goto <bb 14>; [INV]
  4831. else
  4832. goto <bb 15>; [INV]
  4833. <bb 14> :
  4834. # DEBUG BEGIN_STMT
  4835. eReturn = 2;
  4836. # DEBUG BEGIN_STMT
  4837. goto <bb 22>; [INV]
  4838. <bb 15> :
  4839. # DEBUG BEGIN_STMT
  4840. x = x + 1;
  4841. <bb 16> :
  4842. # DEBUG BEGIN_STMT
  4843. if (x <= 0)
  4844. goto <bb 13>; [INV]
  4845. else
  4846. goto <bb 22>; [INV]
  4847. <bb 17> :
  4848. # DEBUG BEGIN_STMT
  4849. eReturn = 2;
  4850. goto <bb 22>; [INV]
  4851. <bb 18> :
  4852. # DEBUG BEGIN_STMT
  4853. if (pxStateList == &xTasksWaitingTermination)
  4854. goto <bb 20>; [INV]
  4855. else
  4856. goto <bb 19>; [INV]
  4857. <bb 19> :
  4858. if (pxStateList == 0B)
  4859. goto <bb 20>; [INV]
  4860. else
  4861. goto <bb 21>; [INV]
  4862. <bb 20> :
  4863. # DEBUG BEGIN_STMT
  4864. eReturn = 4;
  4865. goto <bb 22>; [INV]
  4866. <bb 21> :
  4867. # DEBUG BEGIN_STMT
  4868. eReturn = 1;
  4869. <bb 22> :
  4870. # DEBUG BEGIN_STMT
  4871. D.7634 = eReturn;
  4872. return D.7634;
  4873. }
  4874. vTaskDelay (const TickType_t xTicksToDelay)
  4875. {
  4876. BaseType_t xAlreadyYielded;
  4877. <bb 2> :
  4878. # DEBUG BEGIN_STMT
  4879. xAlreadyYielded = 0;
  4880. # DEBUG BEGIN_STMT
  4881. if (xTicksToDelay != 0)
  4882. goto <bb 3>; [INV]
  4883. else
  4884. goto <bb 7>; [INV]
  4885. <bb 3> :
  4886. # DEBUG BEGIN_STMT
  4887. uxSchedulerSuspended.36_1 = uxSchedulerSuspended;
  4888. if (uxSchedulerSuspended.36_1 != 0)
  4889. goto <bb 4>; [INV]
  4890. else
  4891. goto <bb 6>; [INV]
  4892. <bb 4> :
  4893. # DEBUG BEGIN_STMT
  4894. vPortRaiseBASEPRI ();
  4895. <bb 5> :
  4896. # DEBUG BEGIN_STMT
  4897. # DEBUG BEGIN_STMT
  4898. # DEBUG BEGIN_STMT
  4899. goto <bb 5>; [INV]
  4900. <bb 6> :
  4901. # DEBUG BEGIN_STMT
  4902. # DEBUG BEGIN_STMT
  4903. vTaskSuspendAll ();
  4904. # DEBUG BEGIN_STMT
  4905. # DEBUG BEGIN_STMT
  4906. prvAddCurrentTaskToDelayedList (xTicksToDelay, 0);
  4907. # DEBUG BEGIN_STMT
  4908. xAlreadyYielded = xTaskResumeAll ();
  4909. <bb 7> :
  4910. # DEBUG BEGIN_STMT
  4911. # DEBUG BEGIN_STMT
  4912. if (xAlreadyYielded == 0)
  4913. goto <bb 8>; [INV]
  4914. else
  4915. goto <bb 9>; [INV]
  4916. <bb 8> :
  4917. # DEBUG BEGIN_STMT
  4918. _2 = 3758157060B;
  4919. *_2 = 268435456;
  4920. # DEBUG BEGIN_STMT
  4921. __asm__ __volatile__("dsb" : : : "memory");
  4922. # DEBUG BEGIN_STMT
  4923. __asm__ __volatile__("isb");
  4924. # DEBUG BEGIN_STMT
  4925. <bb 9> :
  4926. # DEBUG BEGIN_STMT
  4927. return;
  4928. }
  4929. xTaskDelayUntil (TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement)
  4930. {
  4931. const TickType_t xConstTickCount;
  4932. BaseType_t xShouldDelay;
  4933. BaseType_t xAlreadyYielded;
  4934. TickType_t xTimeToWake;
  4935. BaseType_t D.7590;
  4936. <bb 2> :
  4937. # DEBUG BEGIN_STMT
  4938. # DEBUG BEGIN_STMT
  4939. xShouldDelay = 0;
  4940. # DEBUG BEGIN_STMT
  4941. if (pxPreviousWakeTime == 0B)
  4942. goto <bb 3>; [INV]
  4943. else
  4944. goto <bb 5>; [INV]
  4945. <bb 3> :
  4946. # DEBUG BEGIN_STMT
  4947. vPortRaiseBASEPRI ();
  4948. <bb 4> :
  4949. # DEBUG BEGIN_STMT
  4950. # DEBUG BEGIN_STMT
  4951. # DEBUG BEGIN_STMT
  4952. goto <bb 4>; [INV]
  4953. <bb 5> :
  4954. # DEBUG BEGIN_STMT
  4955. # DEBUG BEGIN_STMT
  4956. if (xTimeIncrement == 0)
  4957. goto <bb 6>; [INV]
  4958. else
  4959. goto <bb 8>; [INV]
  4960. <bb 6> :
  4961. # DEBUG BEGIN_STMT
  4962. vPortRaiseBASEPRI ();
  4963. <bb 7> :
  4964. # DEBUG BEGIN_STMT
  4965. # DEBUG BEGIN_STMT
  4966. # DEBUG BEGIN_STMT
  4967. goto <bb 7>; [INV]
  4968. <bb 8> :
  4969. # DEBUG BEGIN_STMT
  4970. # DEBUG BEGIN_STMT
  4971. uxSchedulerSuspended.22_1 = uxSchedulerSuspended;
  4972. if (uxSchedulerSuspended.22_1 != 0)
  4973. goto <bb 9>; [INV]
  4974. else
  4975. goto <bb 11>; [INV]
  4976. <bb 9> :
  4977. # DEBUG BEGIN_STMT
  4978. vPortRaiseBASEPRI ();
  4979. <bb 10> :
  4980. # DEBUG BEGIN_STMT
  4981. # DEBUG BEGIN_STMT
  4982. # DEBUG BEGIN_STMT
  4983. goto <bb 10>; [INV]
  4984. <bb 11> :
  4985. # DEBUG BEGIN_STMT
  4986. # DEBUG BEGIN_STMT
  4987. vTaskSuspendAll ();
  4988. # DEBUG BEGIN_STMT
  4989. xConstTickCount = xTickCount;
  4990. # DEBUG BEGIN_STMT
  4991. _2 = *pxPreviousWakeTime;
  4992. xTimeToWake = xTimeIncrement + _2;
  4993. # DEBUG BEGIN_STMT
  4994. _3 = *pxPreviousWakeTime;
  4995. if (xConstTickCount < _3)
  4996. goto <bb 12>; [INV]
  4997. else
  4998. goto <bb 15>; [INV]
  4999. <bb 12> :
  5000. # DEBUG BEGIN_STMT
  5001. _4 = *pxPreviousWakeTime;
  5002. if (xTimeToWake < _4)
  5003. goto <bb 13>; [INV]
  5004. else
  5005. goto <bb 18>; [INV]
  5006. <bb 13> :
  5007. if (xTimeToWake > xConstTickCount)
  5008. goto <bb 14>; [INV]
  5009. else
  5010. goto <bb 18>; [INV]
  5011. <bb 14> :
  5012. # DEBUG BEGIN_STMT
  5013. xShouldDelay = 1;
  5014. goto <bb 18>; [INV]
  5015. <bb 15> :
  5016. # DEBUG BEGIN_STMT
  5017. _5 = *pxPreviousWakeTime;
  5018. if (xTimeToWake < _5)
  5019. goto <bb 17>; [INV]
  5020. else
  5021. goto <bb 16>; [INV]
  5022. <bb 16> :
  5023. if (xTimeToWake > xConstTickCount)
  5024. goto <bb 17>; [INV]
  5025. else
  5026. goto <bb 18>; [INV]
  5027. <bb 17> :
  5028. # DEBUG BEGIN_STMT
  5029. xShouldDelay = 1;
  5030. <bb 18> :
  5031. # DEBUG BEGIN_STMT
  5032. *pxPreviousWakeTime = xTimeToWake;
  5033. # DEBUG BEGIN_STMT
  5034. if (xShouldDelay != 0)
  5035. goto <bb 19>; [INV]
  5036. else
  5037. goto <bb 20>; [INV]
  5038. <bb 19> :
  5039. # DEBUG BEGIN_STMT
  5040. # DEBUG BEGIN_STMT
  5041. _6 = xTimeToWake - xConstTickCount;
  5042. prvAddCurrentTaskToDelayedList (_6, 0);
  5043. <bb 20> :
  5044. # DEBUG BEGIN_STMT
  5045. # DEBUG BEGIN_STMT
  5046. xAlreadyYielded = xTaskResumeAll ();
  5047. # DEBUG BEGIN_STMT
  5048. if (xAlreadyYielded == 0)
  5049. goto <bb 21>; [INV]
  5050. else
  5051. goto <bb 22>; [INV]
  5052. <bb 21> :
  5053. # DEBUG BEGIN_STMT
  5054. _7 = 3758157060B;
  5055. *_7 = 268435456;
  5056. # DEBUG BEGIN_STMT
  5057. __asm__ __volatile__("dsb" : : : "memory");
  5058. # DEBUG BEGIN_STMT
  5059. __asm__ __volatile__("isb");
  5060. # DEBUG BEGIN_STMT
  5061. <bb 22> :
  5062. # DEBUG BEGIN_STMT
  5063. # DEBUG BEGIN_STMT
  5064. D.7590 = xShouldDelay;
  5065. return D.7590;
  5066. }
  5067. vTaskDelete (struct tskTaskControlBlock * xTaskToDelete)
  5068. {
  5069. struct TCB_t * pxTCB;
  5070. struct TCB_t * iftmp.12;
  5071. <bb 2> :
  5072. # DEBUG BEGIN_STMT
  5073. # DEBUG BEGIN_STMT
  5074. vPortEnterCritical ();
  5075. # DEBUG BEGIN_STMT
  5076. if (xTaskToDelete == 0B)
  5077. goto <bb 3>; [INV]
  5078. else
  5079. goto <bb 4>; [INV]
  5080. <bb 3> :
  5081. iftmp.12 = pxCurrentTCB;
  5082. goto <bb 5>; [INV]
  5083. <bb 4> :
  5084. iftmp.12 = xTaskToDelete;
  5085. <bb 5> :
  5086. pxTCB = iftmp.12;
  5087. # DEBUG BEGIN_STMT
  5088. _1 = &pxTCB->xStateListItem;
  5089. _2 = uxListRemove (_1);
  5090. # DEBUG BEGIN_STMT
  5091. # DEBUG BEGIN_STMT
  5092. _3 = pxTCB->xEventListItem.pvContainer;
  5093. if (_3 != 0B)
  5094. goto <bb 6>; [INV]
  5095. else
  5096. goto <bb 7>; [INV]
  5097. <bb 6> :
  5098. # DEBUG BEGIN_STMT
  5099. _4 = &pxTCB->xEventListItem;
  5100. uxListRemove (_4);
  5101. <bb 7> :
  5102. # DEBUG BEGIN_STMT
  5103. # DEBUG BEGIN_STMT
  5104. uxTaskNumber.13_5 = uxTaskNumber;
  5105. _6 = uxTaskNumber.13_5 + 1;
  5106. uxTaskNumber = _6;
  5107. # DEBUG BEGIN_STMT
  5108. pxCurrentTCB.14_7 = pxCurrentTCB;
  5109. if (pxTCB == pxCurrentTCB.14_7)
  5110. goto <bb 8>; [INV]
  5111. else
  5112. goto <bb 9>; [INV]
  5113. <bb 8> :
  5114. # DEBUG BEGIN_STMT
  5115. _8 = &pxTCB->xStateListItem;
  5116. vListInsertEnd (&xTasksWaitingTermination, _8);
  5117. # DEBUG BEGIN_STMT
  5118. uxDeletedTasksWaitingCleanUp.15_9 = uxDeletedTasksWaitingCleanUp;
  5119. _10 = uxDeletedTasksWaitingCleanUp.15_9 + 1;
  5120. uxDeletedTasksWaitingCleanUp = _10;
  5121. # DEBUG BEGIN_STMT
  5122. # DEBUG BEGIN_STMT
  5123. goto <bb 10>; [INV]
  5124. <bb 9> :
  5125. # DEBUG BEGIN_STMT
  5126. uxCurrentNumberOfTasks.16_11 = uxCurrentNumberOfTasks;
  5127. _12 = uxCurrentNumberOfTasks.16_11 + 4294967295;
  5128. uxCurrentNumberOfTasks = _12;
  5129. # DEBUG BEGIN_STMT
  5130. # DEBUG BEGIN_STMT
  5131. prvDeleteTCB (pxTCB);
  5132. # DEBUG BEGIN_STMT
  5133. prvResetNextTaskUnblockTime ();
  5134. <bb 10> :
  5135. # DEBUG BEGIN_STMT
  5136. vPortExitCritical ();
  5137. # DEBUG BEGIN_STMT
  5138. xSchedulerRunning.17_13 = xSchedulerRunning;
  5139. if (xSchedulerRunning.17_13 != 0)
  5140. goto <bb 11>; [INV]
  5141. else
  5142. goto <bb 16>; [INV]
  5143. <bb 11> :
  5144. # DEBUG BEGIN_STMT
  5145. pxCurrentTCB.18_14 = pxCurrentTCB;
  5146. if (pxTCB == pxCurrentTCB.18_14)
  5147. goto <bb 12>; [INV]
  5148. else
  5149. goto <bb 16>; [INV]
  5150. <bb 12> :
  5151. # DEBUG BEGIN_STMT
  5152. uxSchedulerSuspended.19_15 = uxSchedulerSuspended;
  5153. if (uxSchedulerSuspended.19_15 != 0)
  5154. goto <bb 13>; [INV]
  5155. else
  5156. goto <bb 15>; [INV]
  5157. <bb 13> :
  5158. # DEBUG BEGIN_STMT
  5159. vPortRaiseBASEPRI ();
  5160. <bb 14> :
  5161. # DEBUG BEGIN_STMT
  5162. # DEBUG BEGIN_STMT
  5163. # DEBUG BEGIN_STMT
  5164. goto <bb 14>; [INV]
  5165. <bb 15> :
  5166. # DEBUG BEGIN_STMT
  5167. # DEBUG BEGIN_STMT
  5168. _16 = 3758157060B;
  5169. *_16 = 268435456;
  5170. # DEBUG BEGIN_STMT
  5171. __asm__ __volatile__("dsb" : : : "memory");
  5172. # DEBUG BEGIN_STMT
  5173. __asm__ __volatile__("isb");
  5174. # DEBUG BEGIN_STMT
  5175. <bb 16> :
  5176. # DEBUG BEGIN_STMT
  5177. return;
  5178. }
  5179. prvAddNewTaskToReadyList (struct TCB_t * pxNewTCB)
  5180. {
  5181. struct ListItem_t * const pxIndex;
  5182. <bb 2> :
  5183. # DEBUG BEGIN_STMT
  5184. vPortEnterCritical ();
  5185. # DEBUG BEGIN_STMT
  5186. uxCurrentNumberOfTasks.2_1 = uxCurrentNumberOfTasks;
  5187. _2 = uxCurrentNumberOfTasks.2_1 + 1;
  5188. uxCurrentNumberOfTasks = _2;
  5189. # DEBUG BEGIN_STMT
  5190. pxCurrentTCB.3_3 = pxCurrentTCB;
  5191. if (pxCurrentTCB.3_3 == 0B)
  5192. goto <bb 3>; [INV]
  5193. else
  5194. goto <bb 5>; [INV]
  5195. <bb 3> :
  5196. # DEBUG BEGIN_STMT
  5197. pxCurrentTCB = pxNewTCB;
  5198. # DEBUG BEGIN_STMT
  5199. uxCurrentNumberOfTasks.4_4 = uxCurrentNumberOfTasks;
  5200. if (uxCurrentNumberOfTasks.4_4 == 1)
  5201. goto <bb 4>; [INV]
  5202. else
  5203. goto <bb 8>; [INV]
  5204. <bb 4> :
  5205. # DEBUG BEGIN_STMT
  5206. prvInitialiseTaskLists ();
  5207. goto <bb 8>; [INV]
  5208. <bb 5> :
  5209. # DEBUG BEGIN_STMT
  5210. xSchedulerRunning.5_5 = xSchedulerRunning;
  5211. if (xSchedulerRunning.5_5 == 0)
  5212. goto <bb 6>; [INV]
  5213. else
  5214. goto <bb 8>; [INV]
  5215. <bb 6> :
  5216. # DEBUG BEGIN_STMT
  5217. pxCurrentTCB.6_6 = pxCurrentTCB;
  5218. _7 = pxCurrentTCB.6_6->uxPriority;
  5219. _8 = pxNewTCB->uxPriority;
  5220. if (_7 <= _8)
  5221. goto <bb 7>; [INV]
  5222. else
  5223. goto <bb 8>; [INV]
  5224. <bb 7> :
  5225. # DEBUG BEGIN_STMT
  5226. pxCurrentTCB = pxNewTCB;
  5227. <bb 8> :
  5228. # DEBUG BEGIN_STMT
  5229. # DEBUG BEGIN_STMT
  5230. uxTaskNumber.7_9 = uxTaskNumber;
  5231. _10 = uxTaskNumber.7_9 + 1;
  5232. uxTaskNumber = _10;
  5233. # DEBUG BEGIN_STMT
  5234. uxTaskNumber.8_11 = uxTaskNumber;
  5235. pxNewTCB->uxTCBNumber = uxTaskNumber.8_11;
  5236. # DEBUG BEGIN_STMT
  5237. # DEBUG BEGIN_STMT
  5238. # DEBUG BEGIN_STMT
  5239. _12 = pxNewTCB->uxPriority;
  5240. uxTopReadyPriority.9_13 = uxTopReadyPriority;
  5241. if (_12 > uxTopReadyPriority.9_13)
  5242. goto <bb 9>; [INV]
  5243. else
  5244. goto <bb 10>; [INV]
  5245. <bb 9> :
  5246. # DEBUG BEGIN_STMT
  5247. _14 = pxNewTCB->uxPriority;
  5248. uxTopReadyPriority = _14;
  5249. <bb 10> :
  5250. # DEBUG BEGIN_STMT
  5251. # DEBUG BEGIN_STMT
  5252. _15 = pxNewTCB->uxPriority;
  5253. pxIndex = pxReadyTasksLists[_15].pxIndex;
  5254. # DEBUG BEGIN_STMT
  5255. # DEBUG BEGIN_STMT
  5256. # DEBUG BEGIN_STMT
  5257. pxNewTCB->xStateListItem.pxNext = pxIndex;
  5258. # DEBUG BEGIN_STMT
  5259. _16 = pxIndex->pxPrevious;
  5260. pxNewTCB->xStateListItem.pxPrevious = _16;
  5261. # DEBUG BEGIN_STMT
  5262. _17 = pxIndex->pxPrevious;
  5263. _18 = &pxNewTCB->xStateListItem;
  5264. _17->pxNext = _18;
  5265. # DEBUG BEGIN_STMT
  5266. _19 = &pxNewTCB->xStateListItem;
  5267. pxIndex->pxPrevious = _19;
  5268. # DEBUG BEGIN_STMT
  5269. _20 = pxNewTCB->uxPriority;
  5270. _21 = &pxReadyTasksLists[_20];
  5271. pxNewTCB->xStateListItem.pvContainer = _21;
  5272. # DEBUG BEGIN_STMT
  5273. _22 = pxNewTCB->uxPriority;
  5274. _23 = pxReadyTasksLists[_22].uxNumberOfItems;
  5275. _24 = _23 + 1;
  5276. pxReadyTasksLists[_22].uxNumberOfItems = _24;
  5277. # DEBUG BEGIN_STMT
  5278. # DEBUG BEGIN_STMT
  5279. # DEBUG BEGIN_STMT
  5280. # DEBUG BEGIN_STMT
  5281. vPortExitCritical ();
  5282. # DEBUG BEGIN_STMT
  5283. xSchedulerRunning.10_25 = xSchedulerRunning;
  5284. if (xSchedulerRunning.10_25 != 0)
  5285. goto <bb 11>; [INV]
  5286. else
  5287. goto <bb 13>; [INV]
  5288. <bb 11> :
  5289. # DEBUG BEGIN_STMT
  5290. pxCurrentTCB.11_26 = pxCurrentTCB;
  5291. _27 = pxCurrentTCB.11_26->uxPriority;
  5292. _28 = pxNewTCB->uxPriority;
  5293. if (_27 < _28)
  5294. goto <bb 12>; [INV]
  5295. else
  5296. goto <bb 13>; [INV]
  5297. <bb 12> :
  5298. # DEBUG BEGIN_STMT
  5299. _29 = 3758157060B;
  5300. *_29 = 268435456;
  5301. # DEBUG BEGIN_STMT
  5302. __asm__ __volatile__("dsb" : : : "memory");
  5303. # DEBUG BEGIN_STMT
  5304. __asm__ __volatile__("isb");
  5305. # DEBUG BEGIN_STMT
  5306. <bb 13> :
  5307. # DEBUG BEGIN_STMT
  5308. return;
  5309. }
  5310. 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)
  5311. {
  5312. UBaseType_t x;
  5313. StackType_t * pxTopOfStack;
  5314. <bb 2> :
  5315. # DEBUG BEGIN_STMT
  5316. # DEBUG BEGIN_STMT
  5317. # DEBUG BEGIN_STMT
  5318. _1 = pxNewTCB->pxStack;
  5319. _2 = ulStackDepth * 4;
  5320. memset (_1, 165, _2);
  5321. # DEBUG BEGIN_STMT
  5322. _3 = pxNewTCB->pxStack;
  5323. _4 = ulStackDepth + 1073741823;
  5324. _5 = _4 * 4;
  5325. pxTopOfStack = _3 + _5;
  5326. # DEBUG BEGIN_STMT
  5327. pxTopOfStack.0_6 = (long unsigned int) pxTopOfStack;
  5328. _7 = pxTopOfStack.0_6 & 4294967288;
  5329. pxTopOfStack = (StackType_t *) _7;
  5330. # DEBUG BEGIN_STMT
  5331. pxTopOfStack.1_8 = (long unsigned int) pxTopOfStack;
  5332. _9 = pxTopOfStack.1_8 & 7;
  5333. if (_9 != 0)
  5334. goto <bb 3>; [INV]
  5335. else
  5336. goto <bb 5>; [INV]
  5337. <bb 3> :
  5338. # DEBUG BEGIN_STMT
  5339. vPortRaiseBASEPRI ();
  5340. <bb 4> :
  5341. # DEBUG BEGIN_STMT
  5342. # DEBUG BEGIN_STMT
  5343. # DEBUG BEGIN_STMT
  5344. goto <bb 4>; [INV]
  5345. <bb 5> :
  5346. # DEBUG BEGIN_STMT
  5347. # DEBUG BEGIN_STMT
  5348. if (pcName != 0B)
  5349. goto <bb 6>; [INV]
  5350. else
  5351. goto <bb 11>; [INV]
  5352. <bb 6> :
  5353. # DEBUG BEGIN_STMT
  5354. x = 0;
  5355. goto <bb 9>; [INV]
  5356. <bb 7> :
  5357. # DEBUG BEGIN_STMT
  5358. _10 = pcName + x;
  5359. _11 = *_10;
  5360. pxNewTCB->pcTaskName[x] = _11;
  5361. # DEBUG BEGIN_STMT
  5362. _12 = pcName + x;
  5363. _13 = *_12;
  5364. if (_13 == 0)
  5365. goto <bb 10>; [INV]
  5366. else
  5367. goto <bb 8>; [INV]
  5368. <bb 8> :
  5369. # DEBUG BEGIN_STMT
  5370. # DEBUG BEGIN_STMT
  5371. x = x + 1;
  5372. <bb 9> :
  5373. # DEBUG BEGIN_STMT
  5374. if (x <= 9)
  5375. goto <bb 7>; [INV]
  5376. else
  5377. goto <bb 10>; [INV]
  5378. <bb 10> :
  5379. # DEBUG BEGIN_STMT
  5380. pxNewTCB->pcTaskName[9] = 0;
  5381. goto <bb 12>; [INV]
  5382. <bb 11> :
  5383. # DEBUG BEGIN_STMT
  5384. pxNewTCB->pcTaskName[0] = 0;
  5385. <bb 12> :
  5386. # DEBUG BEGIN_STMT
  5387. if (uxPriority > 4)
  5388. goto <bb 13>; [INV]
  5389. else
  5390. goto <bb 15>; [INV]
  5391. <bb 13> :
  5392. # DEBUG BEGIN_STMT
  5393. vPortRaiseBASEPRI ();
  5394. <bb 14> :
  5395. # DEBUG BEGIN_STMT
  5396. # DEBUG BEGIN_STMT
  5397. # DEBUG BEGIN_STMT
  5398. goto <bb 14>; [INV]
  5399. <bb 15> :
  5400. # DEBUG BEGIN_STMT
  5401. # DEBUG BEGIN_STMT
  5402. if (uxPriority > 4)
  5403. goto <bb 16>; [INV]
  5404. else
  5405. goto <bb 17>; [INV]
  5406. <bb 16> :
  5407. # DEBUG BEGIN_STMT
  5408. uxPriority = 4;
  5409. <bb 17> :
  5410. # DEBUG BEGIN_STMT
  5411. # DEBUG BEGIN_STMT
  5412. pxNewTCB->uxPriority = uxPriority;
  5413. # DEBUG BEGIN_STMT
  5414. pxNewTCB->uxBasePriority = uxPriority;
  5415. # DEBUG BEGIN_STMT
  5416. pxNewTCB->uxMutexesHeld = 0;
  5417. # DEBUG BEGIN_STMT
  5418. _14 = &pxNewTCB->xStateListItem;
  5419. vListInitialiseItem (_14);
  5420. # DEBUG BEGIN_STMT
  5421. _15 = &pxNewTCB->xEventListItem;
  5422. vListInitialiseItem (_15);
  5423. # DEBUG BEGIN_STMT
  5424. pxNewTCB->xStateListItem.pvOwner = pxNewTCB;
  5425. # DEBUG BEGIN_STMT
  5426. _16 = 5 - uxPriority;
  5427. pxNewTCB->xEventListItem.xItemValue = _16;
  5428. # DEBUG BEGIN_STMT
  5429. pxNewTCB->xEventListItem.pvOwner = pxNewTCB;
  5430. # DEBUG BEGIN_STMT
  5431. # DEBUG BEGIN_STMT
  5432. _17 = &pxNewTCB->ulNotifiedValue[0];
  5433. memset (_17, 0, 4);
  5434. # DEBUG BEGIN_STMT
  5435. _18 = &pxNewTCB->ucNotifyState[0];
  5436. memset (_18, 0, 1);
  5437. # DEBUG BEGIN_STMT
  5438. pxNewTCB->ucDelayAborted = 0;
  5439. # DEBUG BEGIN_STMT
  5440. _19 = pxPortInitialiseStack (pxTopOfStack, pxTaskCode, pvParameters);
  5441. pxNewTCB->pxTopOfStack = _19;
  5442. # DEBUG BEGIN_STMT
  5443. if (pxCreatedTask != 0B)
  5444. goto <bb 18>; [INV]
  5445. else
  5446. goto <bb 19>; [INV]
  5447. <bb 18> :
  5448. # DEBUG BEGIN_STMT
  5449. *pxCreatedTask = pxNewTCB;
  5450. <bb 19> :
  5451. # DEBUG BEGIN_STMT
  5452. return;
  5453. }
  5454. xTaskCreate (void (*TaskFunction_t) (void *) pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, struct tskTaskControlBlock * * const pxCreatedTask)
  5455. {
  5456. StackType_t * pxStack;
  5457. BaseType_t xReturn;
  5458. struct TCB_t * pxNewTCB;
  5459. BaseType_t D.7508;
  5460. <bb 2> :
  5461. # DEBUG BEGIN_STMT
  5462. # DEBUG BEGIN_STMT
  5463. # DEBUG BEGIN_STMT
  5464. # DEBUG BEGIN_STMT
  5465. _1 = (unsigned int) usStackDepth;
  5466. _2 = _1 * 4;
  5467. pxStack = pvPortMalloc (_2);
  5468. # DEBUG BEGIN_STMT
  5469. if (pxStack != 0B)
  5470. goto <bb 3>; [INV]
  5471. else
  5472. goto <bb 6>; [INV]
  5473. <bb 3> :
  5474. # DEBUG BEGIN_STMT
  5475. pxNewTCB = pvPortMalloc (88);
  5476. # DEBUG BEGIN_STMT
  5477. if (pxNewTCB != 0B)
  5478. goto <bb 4>; [INV]
  5479. else
  5480. goto <bb 5>; [INV]
  5481. <bb 4> :
  5482. # DEBUG BEGIN_STMT
  5483. pxNewTCB->pxStack = pxStack;
  5484. goto <bb 7>; [INV]
  5485. <bb 5> :
  5486. # DEBUG BEGIN_STMT
  5487. vPortFree (pxStack);
  5488. goto <bb 7>; [INV]
  5489. <bb 6> :
  5490. # DEBUG BEGIN_STMT
  5491. pxNewTCB = 0B;
  5492. <bb 7> :
  5493. # DEBUG BEGIN_STMT
  5494. if (pxNewTCB != 0B)
  5495. goto <bb 8>; [INV]
  5496. else
  5497. goto <bb 9>; [INV]
  5498. <bb 8> :
  5499. # DEBUG BEGIN_STMT
  5500. _3 = (long unsigned int) usStackDepth;
  5501. prvInitialiseNewTask (pxTaskCode, pcName, _3, pvParameters, uxPriority, pxCreatedTask, pxNewTCB, 0B);
  5502. # DEBUG BEGIN_STMT
  5503. prvAddNewTaskToReadyList (pxNewTCB);
  5504. # DEBUG BEGIN_STMT
  5505. xReturn = 1;
  5506. goto <bb 10>; [INV]
  5507. <bb 9> :
  5508. # DEBUG BEGIN_STMT
  5509. xReturn = -1;
  5510. <bb 10> :
  5511. # DEBUG BEGIN_STMT
  5512. D.7508 = xReturn;
  5513. return D.7508;
  5514. }
  5515. __attribute__((always_inline))
  5516. vPortSetBASEPRI (uint32_t ulNewMaskValue)
  5517. {
  5518. <bb 2> :
  5519. # DEBUG BEGIN_STMT
  5520. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue : "memory");
  5521. return;
  5522. }
  5523. __attribute__((always_inline))
  5524. ulPortRaiseBASEPRI ()
  5525. {
  5526. uint32_t ulNewBASEPRI;
  5527. uint32_t ulOriginalBASEPRI;
  5528. uint32_t D.7648;
  5529. <bb 2> :
  5530. # DEBUG BEGIN_STMT
  5531. # DEBUG BEGIN_STMT
  5532. __asm__ __volatile__(" mrs %0, basepri
  5533. mov %1, %2
  5534. msr basepri, %1
  5535. isb
  5536. dsb
  5537. " : "=r" ulOriginalBASEPRI, "=r" ulNewBASEPRI : "i" 16 : "memory");
  5538. # DEBUG BEGIN_STMT
  5539. D.7648 = ulOriginalBASEPRI;
  5540. return D.7648;
  5541. }
  5542. __attribute__((always_inline))
  5543. vPortRaiseBASEPRI ()
  5544. {
  5545. uint32_t ulNewBASEPRI;
  5546. <bb 2> :
  5547. # DEBUG BEGIN_STMT
  5548. # DEBUG BEGIN_STMT
  5549. __asm__ __volatile__(" mov %0, %1
  5550. msr basepri, %0
  5551. isb
  5552. dsb
  5553. " : "=r" ulNewBASEPRI : "i" 16 : "memory");
  5554. return;
  5555. }