timers.c.068i.whole-program 61 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069
  1. Marking local functions: prvInsertTimerInActiveList.part.0 prvCheckForValidListAndQueue prvSwitchTimerLists prvProcessReceivedCommands prvInsertTimerInActiveList prvSampleTimeNow prvGetNextExpireTime prvProcessTimerOrBlockTask prvProcessExpiredTimer prvReloadTimer prvInitialiseNewTimer
  2. Marking externally visible functions: vTimerSetTimerNumber uxTimerGetTimerNumber xTimerPendFunctionCall xTimerPendFunctionCallFromISR vTimerSetTimerID pvTimerGetTimerID xTimerIsTimerActive pcTimerGetName xTimerGetExpiryTime uxTimerGetReloadMode vTimerSetReloadMode xTimerGetPeriod xTimerGetTimerDaemonTaskHandle xTimerGenericCommand xTimerCreate xTimerCreateTimerTask
  3. Marking externally visible variables:
  4. Clearing variable flags:
  5. Reclaiming functions:
  6. Reclaiming variables:
  7. Clearing address taken flags:
  8. Symbol table:
  9. prvInsertTimerInActiveList.part.0/57 (prvInsertTimerInActiveList.part.0) @05dfba80
  10. Type: function definition analyzed
  11. Visibility: prevailing_def_ironly artificial
  12. References: pxOverflowTimerList/7 (read)
  13. Referring:
  14. Availability: local
  15. Function flags: count:1073741824 (estimated locally) first_run:1 body local split_part optimize_size
  16. Called by: prvInsertTimerInActiveList/26 (177167400 (estimated locally),0.16 per call)
  17. Calls: vListInsert/44 (1073741824 (estimated locally),1.00 per call)
  18. xQueueGenericSendFromISR/56 (xQueueGenericSendFromISR) @05f06c40
  19. Type: function
  20. Visibility: external public
  21. References:
  22. Referring:
  23. Availability: not_available
  24. Function flags: optimize_size
  25. Called by: xTimerPendFunctionCallFromISR/33 (1073741824 (estimated locally),1.00 per call) xTimerGenericCommand/13 (87689 (estimated locally),0.25 per call)
  26. Calls:
  27. xQueueGenericSend/55 (xQueueGenericSend) @05f06b60
  28. Type: function
  29. Visibility: external public
  30. References:
  31. Referring:
  32. Availability: not_available
  33. Function flags: optimize_size
  34. Called by: xTimerPendFunctionCall/34 (123389 (estimated locally),0.53 per call) xTimerGenericCommand/13 (57875 (estimated locally),0.16 per call) xTimerGenericCommand/13 (29814 (estimated locally),0.08 per call)
  35. Calls:
  36. xTaskGetSchedulerState/54 (xTaskGetSchedulerState) @05f06a80
  37. Type: function
  38. Visibility: external public
  39. References:
  40. Referring:
  41. Availability: not_available
  42. Function flags: optimize_size
  43. Called by: xTimerGenericCommand/13 (87689 (estimated locally),0.25 per call)
  44. Calls:
  45. vListInitialiseItem/53 (vListInitialiseItem) @05f068c0
  46. Type: function
  47. Visibility: external public
  48. References:
  49. Referring:
  50. Availability: not_available
  51. Function flags: optimize_size
  52. Called by: prvInitialiseNewTimer/12 (52886 (estimated locally),0.33 per call)
  53. Calls:
  54. pvPortMalloc/52 (pvPortMalloc) @05f06700
  55. Type: function
  56. Visibility: external public
  57. References:
  58. Referring:
  59. Availability: not_available
  60. Function flags: optimize_size
  61. Called by: xTimerCreate/11 (1073741824 (estimated locally),1.00 per call)
  62. Calls:
  63. vPortExitCritical/51 (vPortExitCritical) @05f06460
  64. Type: function
  65. Visibility: external public
  66. References:
  67. Referring:
  68. Availability: not_available
  69. Function flags: optimize_size
  70. Called by: vTimerSetTimerID/32 (123389 (estimated locally),0.53 per call) pvTimerGetTimerID/31 (123389 (estimated locally),0.53 per call) xTimerIsTimerActive/30 (123389 (estimated locally),0.53 per call) uxTimerGetReloadMode/17 (123389 (estimated locally),0.53 per call) vTimerSetReloadMode/16 (123389 (estimated locally),0.53 per call) prvCheckForValidListAndQueue/29 (1073741824 (estimated locally),1.00 per call)
  71. Calls:
  72. vQueueAddToRegistry/50 (vQueueAddToRegistry) @05f06380
  73. Type: function
  74. Visibility: external public
  75. References:
  76. Referring:
  77. Availability: not_available
  78. Function flags: optimize_size
  79. Called by: prvCheckForValidListAndQueue/29 (100070816 (estimated locally),0.09 per call)
  80. Calls:
  81. xQueueGenericCreate/49 (xQueueGenericCreate) @05f062a0
  82. Type: function
  83. Visibility: external public
  84. References:
  85. Referring:
  86. Availability: not_available
  87. Function flags: optimize_size
  88. Called by: prvCheckForValidListAndQueue/29 (187153200 (estimated locally),0.17 per call)
  89. Calls:
  90. vListInitialise/48 (vListInitialise) @05f060e0
  91. Type: function
  92. Visibility: external public
  93. References:
  94. Referring:
  95. Availability: not_available
  96. Function flags: optimize_size
  97. Called by: prvCheckForValidListAndQueue/29 (187153200 (estimated locally),0.17 per call) prvCheckForValidListAndQueue/29 (187153200 (estimated locally),0.17 per call)
  98. Calls:
  99. vPortEnterCritical/47 (vPortEnterCritical) @05f06000
  100. Type: function
  101. Visibility: external public
  102. References:
  103. Referring:
  104. Availability: not_available
  105. Function flags: optimize_size
  106. Called by: vTimerSetTimerID/32 (123389 (estimated locally),0.53 per call) pvTimerGetTimerID/31 (123389 (estimated locally),0.53 per call) xTimerIsTimerActive/30 (123389 (estimated locally),0.53 per call) uxTimerGetReloadMode/17 (123389 (estimated locally),0.53 per call) vTimerSetReloadMode/16 (123389 (estimated locally),0.53 per call) prvCheckForValidListAndQueue/29 (1073741824 (estimated locally),1.00 per call)
  107. Calls:
  108. xQueueReceive/46 (xQueueReceive) @05ed9e00
  109. Type: function
  110. Visibility: external public
  111. References:
  112. Referring:
  113. Availability: not_available
  114. Function flags: optimize_size
  115. Called by: prvProcessReceivedCommands/27 (187807075 (estimated locally),17.99 per call)
  116. Calls:
  117. vPortFree/45 (vPortFree) @05ed9d20
  118. Type: function
  119. Visibility: external public
  120. References:
  121. Referring:
  122. Availability: not_available
  123. Function flags: optimize_size
  124. Called by: prvProcessReceivedCommands/27 (644244 (estimated locally),0.06 per call)
  125. Calls:
  126. vListInsert/44 (vListInsert) @05ed99a0
  127. Type: function
  128. Visibility: external public
  129. References:
  130. Referring:
  131. Availability: not_available
  132. Function flags: optimize_size
  133. Called by: prvInsertTimerInActiveList/26 (357019157 (estimated locally),0.33 per call) prvInsertTimerInActiveList.part.0/57 (1073741824 (estimated locally),1.00 per call)
  134. Calls:
  135. uxListRemove/43 (uxListRemove) @05ed9700
  136. Type: function
  137. Visibility: external public
  138. References:
  139. Referring:
  140. Availability: not_available
  141. Function flags: optimize_size
  142. Called by: prvProcessReceivedCommands/27 (5219353 (estimated locally),0.50 per call) prvProcessExpiredTimer/21 (1073741824 (estimated locally),1.00 per call)
  143. Calls:
  144. xLastTime.6551/42 (xLastTime) @05ef6120
  145. Type: variable definition analyzed
  146. Visibility: prevailing_def_ironly
  147. References:
  148. Referring: prvSampleTimeNow/25 (read)prvSampleTimeNow/25 (write)
  149. Availability: available
  150. Varpool flags: initialized
  151. xTaskGetTickCount/41 (xTaskGetTickCount) @05ed9380
  152. Type: function
  153. Visibility: external public
  154. References:
  155. Referring:
  156. Availability: not_available
  157. Function flags: optimize_size
  158. Called by: prvSampleTimeNow/25 (1073741824 (estimated locally),1.00 per call)
  159. Calls:
  160. vQueueWaitForMessageRestricted/40 (vQueueWaitForMessageRestricted) @05ed91c0
  161. Type: function
  162. Visibility: external public
  163. References:
  164. Referring:
  165. Availability: not_available
  166. Function flags: optimize_size
  167. Called by: prvProcessTimerOrBlockTask/23 (600704864 (estimated locally),0.56 per call)
  168. Calls:
  169. xTaskResumeAll/39 (xTaskResumeAll) @05ed90e0
  170. Type: function
  171. Visibility: external public
  172. References:
  173. Referring:
  174. Availability: not_available
  175. Function flags: optimize_size
  176. Called by: prvProcessTimerOrBlockTask/23 (354334802 (estimated locally),0.33 per call) prvProcessTimerOrBlockTask/23 (600704864 (estimated locally),0.56 per call) prvProcessTimerOrBlockTask/23 (118702158 (estimated locally),0.11 per call)
  177. Calls:
  178. vTaskSuspendAll/38 (vTaskSuspendAll) @05ed9000
  179. Type: function
  180. Visibility: external public
  181. References:
  182. Referring:
  183. Availability: not_available
  184. Function flags: optimize_size
  185. Called by: prvProcessTimerOrBlockTask/23 (1073741823 (estimated locally),1.00 per call)
  186. Calls:
  187. xTaskCreate/37 (xTaskCreate) @05ecdee0
  188. Type: function
  189. Visibility: external public
  190. References:
  191. Referring:
  192. Availability: not_available
  193. Function flags: optimize_size
  194. Called by: xTimerCreateTimerTask/10 (78363 (estimated locally),0.53 per call)
  195. Calls:
  196. vTimerSetTimerNumber/36 (vTimerSetTimerNumber) @05ecda80
  197. Type: function definition analyzed
  198. Visibility: externally_visible public
  199. References:
  200. Referring:
  201. Availability: available
  202. Function flags: count:1073741824 (estimated locally) body optimize_size
  203. Called by:
  204. Calls:
  205. uxTimerGetTimerNumber/35 (uxTimerGetTimerNumber) @05ecd7e0
  206. Type: function definition analyzed
  207. Visibility: externally_visible public
  208. References:
  209. Referring:
  210. Availability: available
  211. Function flags: count:1073741824 (estimated locally) body optimize_size
  212. Called by:
  213. Calls:
  214. xTimerPendFunctionCall/34 (xTimerPendFunctionCall) @05ecd540
  215. Type: function definition analyzed
  216. Visibility: externally_visible public
  217. References: xTimerQueue/8 (read)
  218. Referring:
  219. Availability: available
  220. Function flags: count:230763 (estimated locally) body optimize_size
  221. Called by:
  222. Calls: xQueueGenericSend/55 (123389 (estimated locally),0.53 per call)
  223. xTimerPendFunctionCallFromISR/33 (xTimerPendFunctionCallFromISR) @05ecd0e0
  224. Type: function definition analyzed
  225. Visibility: externally_visible public
  226. References: xTimerQueue/8 (read)
  227. Referring:
  228. Availability: available
  229. Function flags: count:1073741824 (estimated locally) body optimize_size
  230. Called by:
  231. Calls: xQueueGenericSendFromISR/56 (1073741824 (estimated locally),1.00 per call)
  232. vTimerSetTimerID/32 (vTimerSetTimerID) @05ec78c0
  233. Type: function definition analyzed
  234. Visibility: externally_visible public
  235. References:
  236. Referring:
  237. Availability: available
  238. Function flags: count:230763 (estimated locally) body optimize_size
  239. Called by:
  240. Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call)
  241. pvTimerGetTimerID/31 (pvTimerGetTimerID) @05ec7ee0
  242. Type: function definition analyzed
  243. Visibility: externally_visible public
  244. References:
  245. Referring:
  246. Availability: available
  247. Function flags: count:230763 (estimated locally) body optimize_size
  248. Called by:
  249. Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call)
  250. xTimerIsTimerActive/30 (xTimerIsTimerActive) @05ec7b60
  251. Type: function definition analyzed
  252. Visibility: externally_visible public
  253. References:
  254. Referring:
  255. Availability: available
  256. Function flags: count:230763 (estimated locally) body optimize_size
  257. Called by:
  258. Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call)
  259. prvCheckForValidListAndQueue/29 (prvCheckForValidListAndQueue) @05ec77e0
  260. Type: function definition analyzed
  261. Visibility: prevailing_def_ironly
  262. References: xTimerQueue/8 (read)xActiveTimerList1/4 (addr)xActiveTimerList2/5 (addr)pxCurrentTimerList/6 (write)xActiveTimerList1/4 (addr)pxOverflowTimerList/7 (write)xActiveTimerList2/5 (addr)xTimerQueue/8 (write)
  263. Referring:
  264. Availability: local
  265. Function flags: count:1073741824 (estimated locally) body local optimize_size
  266. Called by: xTimerCreateTimerTask/10 (146556 (estimated locally),1.00 per call) prvInitialiseNewTimer/12 (52886 (estimated locally),0.33 per call)
  267. Calls: vPortExitCritical/51 (1073741824 (estimated locally),1.00 per call) vQueueAddToRegistry/50 (100070816 (estimated locally),0.09 per call) xQueueGenericCreate/49 (187153200 (estimated locally),0.17 per call) vListInitialise/48 (187153200 (estimated locally),0.17 per call) vListInitialise/48 (187153200 (estimated locally),0.17 per call) vPortEnterCritical/47 (1073741824 (estimated locally),1.00 per call)
  268. prvSwitchTimerLists/28 (prvSwitchTimerLists) @05ec7460
  269. Type: function definition analyzed
  270. Visibility: prevailing_def_ironly
  271. References: pxCurrentTimerList/6 (read)pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (write)pxOverflowTimerList/7 (write)
  272. Referring:
  273. Availability: local
  274. Function flags: count:118111600 (estimated locally) body local optimize_size
  275. Called by: prvSampleTimeNow/25 (354334802 (estimated locally),0.33 per call)
  276. Calls: prvProcessExpiredTimer/21 (955630223 (estimated locally),8.09 per call)
  277. prvProcessReceivedCommands/27 (prvProcessReceivedCommands) @05ec70e0
  278. Type: function definition analyzed
  279. Visibility: prevailing_def_ironly
  280. References: xTimerQueue/8 (read)
  281. Referring:
  282. Availability: local
  283. Function flags: count:10436763 (estimated locally) body local optimize_size
  284. Called by: prvTimerTask/22 (1073741824 (estimated locally),10000.02 per call)
  285. Calls: xQueueReceive/46 (187807075 (estimated locally),17.99 per call) vPortFree/45 (644244 (estimated locally),0.06 per call) prvInsertTimerInActiveList/26 (1844881 (estimated locally),0.18 per call) prvReloadTimer/20 (322122 (estimated locally),0.03 per call) prvInsertTimerInActiveList/26 (1952255 (estimated locally),0.19 per call) prvSampleTimeNow/25 (9761273 (estimated locally),0.94 per call) uxListRemove/43 (5219353 (estimated locally),0.50 per call)
  286. Indirect call(976127 (estimated locally),0.09 per call)
  287. Indirect call(72765851 (estimated locally),6.97 per call)
  288. prvInsertTimerInActiveList/26 (prvInsertTimerInActiveList) @05ebb7e0
  289. Type: function definition analyzed
  290. Visibility: prevailing_def_ironly
  291. References: pxCurrentTimerList/6 (read)
  292. Referring:
  293. Availability: local
  294. Function flags: count:1073741824 (estimated locally) body local optimize_size
  295. Called by: prvProcessReceivedCommands/27 (1844881 (estimated locally),0.18 per call) prvProcessReceivedCommands/27 (1952255 (estimated locally),0.19 per call) prvReloadTimer/20 (1073741824 (estimated locally),9.09 per call)
  296. Calls: vListInsert/44 (357019157 (estimated locally),0.33 per call) prvInsertTimerInActiveList.part.0/57 (177167400 (estimated locally),0.16 per call)
  297. prvSampleTimeNow/25 (prvSampleTimeNow) @05ebbd20
  298. Type: function definition analyzed
  299. Visibility: prevailing_def_ironly
  300. References: xLastTime.6551/42 (read)xLastTime.6551/42 (write)
  301. Referring:
  302. Availability: local
  303. Function flags: count:1073741824 (estimated locally) body local optimize_size
  304. Called by: prvProcessReceivedCommands/27 (9761273 (estimated locally),0.94 per call) prvProcessTimerOrBlockTask/23 (1073741823 (estimated locally),1.00 per call)
  305. Calls: prvSwitchTimerLists/28 (354334802 (estimated locally),0.33 per call) xTaskGetTickCount/41 (1073741824 (estimated locally),1.00 per call)
  306. prvGetNextExpireTime/24 (prvGetNextExpireTime) @05ebba80
  307. Type: function definition analyzed
  308. Visibility: prevailing_def_ironly
  309. References: pxCurrentTimerList/6 (read)
  310. Referring:
  311. Availability: local
  312. Function flags: count:1073741824 (estimated locally) body local optimize_size
  313. Called by: prvTimerTask/22 (1073741824 (estimated locally),10000.02 per call)
  314. Calls:
  315. prvProcessTimerOrBlockTask/23 (prvProcessTimerOrBlockTask) @05ebb700
  316. Type: function definition analyzed
  317. Visibility: prevailing_def_ironly
  318. References: pxOverflowTimerList/7 (read)xTimerQueue/8 (read)
  319. Referring:
  320. Availability: local
  321. Function flags: count:1073741823 (estimated locally) body local optimize_size
  322. Called by: prvTimerTask/22 (1073741824 (estimated locally),10000.02 per call)
  323. Calls: xTaskResumeAll/39 (354334802 (estimated locally),0.33 per call) xTaskResumeAll/39 (600704864 (estimated locally),0.56 per call) vQueueWaitForMessageRestricted/40 (600704864 (estimated locally),0.56 per call) prvProcessExpiredTimer/21 (118702158 (estimated locally),0.11 per call) xTaskResumeAll/39 (118702158 (estimated locally),0.11 per call) prvSampleTimeNow/25 (1073741823 (estimated locally),1.00 per call) vTaskSuspendAll/38 (1073741823 (estimated locally),1.00 per call)
  324. prvTimerTask/22 (prvTimerTask) @05ebb2a0
  325. Type: function definition analyzed
  326. Visibility: prevailing_def_ironly
  327. Address is taken.
  328. References:
  329. Referring: xTimerCreateTimerTask/10 (addr)
  330. Availability: available
  331. Function flags: count:107374 (estimated locally) body executed_once optimize_size
  332. Called by:
  333. Calls: prvProcessReceivedCommands/27 (1073741824 (estimated locally),10000.02 per call) prvProcessTimerOrBlockTask/23 (1073741824 (estimated locally),10000.02 per call) prvGetNextExpireTime/24 (1073741824 (estimated locally),10000.02 per call)
  334. prvProcessExpiredTimer/21 (prvProcessExpiredTimer) @05ebb000
  335. Type: function definition analyzed
  336. Visibility: prevailing_def_ironly
  337. References: pxCurrentTimerList/6 (read)
  338. Referring:
  339. Availability: local
  340. Function flags: count:1073741824 (estimated locally) body local optimize_size
  341. Called by: prvProcessTimerOrBlockTask/23 (118702158 (estimated locally),0.11 per call) prvSwitchTimerLists/28 (955630223 (estimated locally),8.09 per call)
  342. Calls: prvReloadTimer/20 (354334802 (estimated locally),0.33 per call) uxListRemove/43 (1073741824 (estimated locally),1.00 per call)
  343. Indirect call(1073741824 (estimated locally),1.00 per call)
  344. prvReloadTimer/20 (prvReloadTimer) @05e60540
  345. Type: function definition analyzed
  346. Visibility: prevailing_def_ironly
  347. References:
  348. Referring:
  349. Availability: local
  350. Function flags: count:118111600 (estimated locally) body local optimize_size
  351. Called by: prvProcessReceivedCommands/27 (322122 (estimated locally),0.03 per call) prvProcessExpiredTimer/21 (354334802 (estimated locally),0.33 per call)
  352. Calls: prvInsertTimerInActiveList/26 (1073741824 (estimated locally),9.09 per call)
  353. Indirect call(955630223 (estimated locally),8.09 per call) of param:0 loaded from aggregate passed by reference at offset 256 (vptr maybe changed)
  354. pcTimerGetName/19 (pcTimerGetName) @05e60ee0
  355. Type: function definition analyzed
  356. Visibility: externally_visible public
  357. References:
  358. Referring:
  359. Availability: available
  360. Function flags: count:357913 (estimated locally) body optimize_size
  361. Called by:
  362. Calls:
  363. xTimerGetExpiryTime/18 (xTimerGetExpiryTime) @05e60b60
  364. Type: function definition analyzed
  365. Visibility: externally_visible public
  366. References:
  367. Referring:
  368. Availability: available
  369. Function flags: count:357913 (estimated locally) body optimize_size
  370. Called by:
  371. Calls:
  372. uxTimerGetReloadMode/17 (uxTimerGetReloadMode) @05e607e0
  373. Type: function definition analyzed
  374. Visibility: externally_visible public
  375. References:
  376. Referring:
  377. Availability: available
  378. Function flags: count:230763 (estimated locally) body optimize_size
  379. Called by:
  380. Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call)
  381. vTimerSetReloadMode/16 (vTimerSetReloadMode) @05e60460
  382. Type: function definition analyzed
  383. Visibility: externally_visible public
  384. References:
  385. Referring:
  386. Availability: available
  387. Function flags: count:230763 (estimated locally) body optimize_size
  388. Called by:
  389. Calls: vPortExitCritical/51 (123389 (estimated locally),0.53 per call) vPortEnterCritical/47 (123389 (estimated locally),0.53 per call)
  390. xTimerGetPeriod/15 (xTimerGetPeriod) @05e600e0
  391. Type: function definition analyzed
  392. Visibility: externally_visible public
  393. References:
  394. Referring:
  395. Availability: available
  396. Function flags: count:357913 (estimated locally) body optimize_size
  397. Called by:
  398. Calls:
  399. xTimerGetTimerDaemonTaskHandle/14 (xTimerGetTimerDaemonTaskHandle) @05eb67e0
  400. Type: function definition analyzed
  401. Visibility: externally_visible public
  402. References: xTimerTaskHandle/9 (read)
  403. Referring:
  404. Availability: available
  405. Function flags: count:357913 (estimated locally) body optimize_size
  406. Called by:
  407. Calls:
  408. xTimerGenericCommand/13 (xTimerGenericCommand) @05eb61c0
  409. Type: function definition analyzed
  410. Visibility: externally_visible public
  411. References: xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read)
  412. Referring:
  413. Availability: available
  414. Function flags: count:357913 (estimated locally) body optimize_size
  415. Called by:
  416. Calls: xQueueGenericSendFromISR/56 (87689 (estimated locally),0.25 per call) xQueueGenericSend/55 (57875 (estimated locally),0.16 per call) xQueueGenericSend/55 (29814 (estimated locally),0.08 per call) xTaskGetSchedulerState/54 (87689 (estimated locally),0.25 per call)
  417. prvInitialiseNewTimer/12 (prvInitialiseNewTimer) @05eb6a80
  418. Type: function definition analyzed
  419. Visibility: prevailing_def_ironly
  420. References:
  421. Referring:
  422. Availability: local
  423. Function flags: count:160260 (estimated locally) body local optimize_size
  424. Called by: xTimerCreate/11 (574129754 (estimated locally),0.53 per call)
  425. Calls: vListInitialiseItem/53 (52886 (estimated locally),0.33 per call) prvCheckForValidListAndQueue/29 (52886 (estimated locally),0.33 per call)
  426. xTimerCreate/11 (xTimerCreate) @05eb6700
  427. Type: function definition analyzed
  428. Visibility: externally_visible public
  429. References:
  430. Referring:
  431. Availability: available
  432. Function flags: count:1073741824 (estimated locally) body optimize_size
  433. Called by:
  434. Calls: prvInitialiseNewTimer/12 (574129754 (estimated locally),0.53 per call) pvPortMalloc/52 (1073741824 (estimated locally),1.00 per call)
  435. xTimerCreateTimerTask/10 (xTimerCreateTimerTask) @05eb6460
  436. Type: function definition analyzed
  437. Visibility: externally_visible public
  438. References: xTimerQueue/8 (read)prvTimerTask/22 (addr)xTimerTaskHandle/9 (addr)
  439. Referring:
  440. Availability: available
  441. Function flags: count:146556 (estimated locally) body optimize_size
  442. Called by:
  443. Calls: xTaskCreate/37 (78363 (estimated locally),0.53 per call) prvCheckForValidListAndQueue/29 (146556 (estimated locally),1.00 per call)
  444. xTimerTaskHandle/9 (xTimerTaskHandle) @05eb0678
  445. Type: variable definition analyzed
  446. Visibility: prevailing_def_ironly
  447. References:
  448. Referring: xTimerCreateTimerTask/10 (addr)xTimerGetTimerDaemonTaskHandle/14 (read)
  449. Availability: available
  450. Varpool flags: initialized
  451. xTimerQueue/8 (xTimerQueue) @05eb05e8
  452. Type: variable definition analyzed
  453. Visibility: prevailing_def_ironly
  454. References:
  455. Referring: prvProcessReceivedCommands/27 (read)xTimerGenericCommand/13 (read)xTimerPendFunctionCallFromISR/33 (read)prvCheckForValidListAndQueue/29 (write)xTimerCreateTimerTask/10 (read)prvCheckForValidListAndQueue/29 (read)prvProcessTimerOrBlockTask/23 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerPendFunctionCall/34 (read)
  456. Availability: available
  457. Varpool flags: initialized
  458. pxOverflowTimerList/7 (pxOverflowTimerList) @05eb0558
  459. Type: variable definition analyzed
  460. Visibility: prevailing_def_ironly
  461. References:
  462. Referring: prvInsertTimerInActiveList.part.0/57 (read)prvSwitchTimerLists/28 (write)prvProcessTimerOrBlockTask/23 (read)prvSwitchTimerLists/28 (read)prvCheckForValidListAndQueue/29 (write)
  463. Availability: available
  464. Varpool flags:
  465. pxCurrentTimerList/6 (pxCurrentTimerList) @05eb04c8
  466. Type: variable definition analyzed
  467. Visibility: prevailing_def_ironly
  468. References:
  469. Referring: prvSwitchTimerLists/28 (write)prvProcessExpiredTimer/21 (read)prvInsertTimerInActiveList/26 (read)prvGetNextExpireTime/24 (read)prvSwitchTimerLists/28 (read)prvCheckForValidListAndQueue/29 (write)
  470. Availability: available
  471. Varpool flags:
  472. xActiveTimerList2/5 (xActiveTimerList2) @05eb0438
  473. Type: variable definition analyzed
  474. Visibility: prevailing_def_ironly
  475. References:
  476. Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr)
  477. Availability: available
  478. Varpool flags:
  479. xActiveTimerList1/4 (xActiveTimerList1) @05eb03a8
  480. Type: variable definition analyzed
  481. Visibility: prevailing_def_ironly
  482. References:
  483. Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr)
  484. Availability: available
  485. Varpool flags:
  486. prvInsertTimerInActiveList.part.0 (struct Timer_t * const pxTimer)
  487. {
  488. BaseType_t xProcessTimerNow;
  489. const TickType_t xNextExpiryTime;
  490. const TickType_t xTimeNow;
  491. const TickType_t xCommandTime;
  492. struct List_t * pxOverflowTimerList.14_1;
  493. struct ListItem_t * _3;
  494. <bb 4> [local count: 1073741824]:
  495. # DEBUG D#6 s=> xNextExpiryTime
  496. # DEBUG xNextExpiryTime => D#6
  497. # DEBUG D#5 s=> xTimeNow
  498. # DEBUG xTimeNow => D#5
  499. # DEBUG D#4 s=> xCommandTime
  500. # DEBUG xCommandTime => D#4
  501. <bb 2> [local count: 1073741824]:
  502. # DEBUG BEGIN_STMT
  503. pxOverflowTimerList.14_1 = pxOverflowTimerList;
  504. _3 = &pxTimer_2(D)->xTimerListItem;
  505. vListInsert (pxOverflowTimerList.14_1, _3);
  506. <bb 3> [local count: 1073741824]:
  507. # xProcessTimerNow_4 = PHI <0(2)>
  508. # DEBUG xProcessTimerNow => xProcessTimerNow_4
  509. # DEBUG BEGIN_STMT
  510. return xProcessTimerNow_4;
  511. }
  512. vTimerSetTimerNumber (struct tmrTimerControl * xTimer, UBaseType_t uxTimerNumber)
  513. {
  514. <bb 2> [local count: 1073741824]:
  515. # DEBUG BEGIN_STMT
  516. MEM[(struct Timer_t *)xTimer_2(D)].uxTimerNumber = uxTimerNumber_3(D);
  517. return;
  518. }
  519. uxTimerGetTimerNumber (struct tmrTimerControl * xTimer)
  520. {
  521. UBaseType_t _3;
  522. <bb 2> [local count: 1073741824]:
  523. # DEBUG BEGIN_STMT
  524. _3 = MEM[(struct Timer_t *)xTimer_2(D)].uxTimerNumber;
  525. return _3;
  526. }
  527. xTimerPendFunctionCall (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait)
  528. {
  529. uint32_t ulNewBASEPRI;
  530. BaseType_t xReturn;
  531. struct DaemonTaskMessage_t xMessage;
  532. struct QueueDefinition * xTimerQueue.26_1;
  533. <bb 2> [local count: 230763]:
  534. # DEBUG BEGIN_STMT
  535. # DEBUG BEGIN_STMT
  536. # DEBUG BEGIN_STMT
  537. xTimerQueue.26_1 = xTimerQueue;
  538. if (xTimerQueue.26_1 == 0B)
  539. goto <bb 3>; [46.53%]
  540. else
  541. goto <bb 5>; [53.47%]
  542. <bb 3> [local count: 107374]:
  543. # DEBUG BEGIN_STMT
  544. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  545. # DEBUG BEGIN_STMT
  546. # DEBUG BEGIN_STMT
  547. __asm__ __volatile__(" mov %0, %1
  548. msr basepri, %0
  549. isb
  550. dsb
  551. " : "=r" ulNewBASEPRI_14 : "i" 16 : "memory");
  552. # DEBUG ulNewBASEPRI => ulNewBASEPRI_14
  553. <bb 4> [local count: 1073741824]:
  554. # DEBUG ulNewBASEPRI => NULL
  555. # DEBUG BEGIN_STMT
  556. # DEBUG BEGIN_STMT
  557. # DEBUG BEGIN_STMT
  558. <bb 6> [local count: 1073741824]:
  559. goto <bb 4>; [100.00%]
  560. <bb 5> [local count: 123389]:
  561. # DEBUG BEGIN_STMT
  562. # DEBUG BEGIN_STMT
  563. xMessage.xMessageID = -1;
  564. # DEBUG BEGIN_STMT
  565. xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend_4(D);
  566. # DEBUG BEGIN_STMT
  567. xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1_6(D);
  568. # DEBUG BEGIN_STMT
  569. xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2_8(D);
  570. # DEBUG BEGIN_STMT
  571. xReturn_12 = xQueueGenericSend (xTimerQueue.26_1, &xMessage, xTicksToWait_10(D), 0);
  572. # DEBUG xReturn => xReturn_12
  573. # DEBUG BEGIN_STMT
  574. # DEBUG BEGIN_STMT
  575. xMessage ={v} {CLOBBER};
  576. return xReturn_12;
  577. }
  578. xTimerPendFunctionCallFromISR (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, BaseType_t * pxHigherPriorityTaskWoken)
  579. {
  580. BaseType_t xReturn;
  581. struct DaemonTaskMessage_t xMessage;
  582. struct QueueDefinition * xTimerQueue.25_1;
  583. <bb 2> [local count: 1073741824]:
  584. # DEBUG BEGIN_STMT
  585. # DEBUG BEGIN_STMT
  586. # DEBUG BEGIN_STMT
  587. xMessage.xMessageID = -2;
  588. # DEBUG BEGIN_STMT
  589. xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend_4(D);
  590. # DEBUG BEGIN_STMT
  591. xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1_6(D);
  592. # DEBUG BEGIN_STMT
  593. xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2_8(D);
  594. # DEBUG BEGIN_STMT
  595. xTimerQueue.25_1 = xTimerQueue;
  596. xReturn_12 = xQueueGenericSendFromISR (xTimerQueue.25_1, &xMessage, pxHigherPriorityTaskWoken_10(D), 0);
  597. # DEBUG xReturn => xReturn_12
  598. # DEBUG BEGIN_STMT
  599. # DEBUG BEGIN_STMT
  600. xMessage ={v} {CLOBBER};
  601. return xReturn_12;
  602. }
  603. vTimerSetTimerID (struct tmrTimerControl * xTimer, void * pvNewID)
  604. {
  605. uint32_t ulNewBASEPRI;
  606. <bb 2> [local count: 230763]:
  607. # DEBUG BEGIN_STMT
  608. # DEBUG pxTimer => xTimer_1(D)
  609. # DEBUG BEGIN_STMT
  610. if (xTimer_1(D) == 0B)
  611. goto <bb 3>; [46.53%]
  612. else
  613. goto <bb 5>; [53.47%]
  614. <bb 3> [local count: 107374]:
  615. # DEBUG BEGIN_STMT
  616. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  617. # DEBUG BEGIN_STMT
  618. # DEBUG BEGIN_STMT
  619. __asm__ __volatile__(" mov %0, %1
  620. msr basepri, %0
  621. isb
  622. dsb
  623. " : "=r" ulNewBASEPRI_7 : "i" 16 : "memory");
  624. # DEBUG ulNewBASEPRI => ulNewBASEPRI_7
  625. <bb 4> [local count: 1073741824]:
  626. # DEBUG ulNewBASEPRI => NULL
  627. # DEBUG BEGIN_STMT
  628. # DEBUG BEGIN_STMT
  629. # DEBUG BEGIN_STMT
  630. <bb 6> [local count: 1073741824]:
  631. goto <bb 4>; [100.00%]
  632. <bb 5> [local count: 123389]:
  633. # DEBUG BEGIN_STMT
  634. # DEBUG BEGIN_STMT
  635. vPortEnterCritical ();
  636. # DEBUG BEGIN_STMT
  637. MEM[(struct Timer_t *)xTimer_1(D)].pvTimerID = pvNewID_4(D);
  638. # DEBUG BEGIN_STMT
  639. vPortExitCritical ();
  640. return;
  641. }
  642. pvTimerGetTimerID (struct tmrTimerControl * const xTimer)
  643. {
  644. uint32_t ulNewBASEPRI;
  645. void * pvReturn;
  646. <bb 2> [local count: 230763]:
  647. # DEBUG BEGIN_STMT
  648. # DEBUG pxTimer => xTimer_1(D)
  649. # DEBUG BEGIN_STMT
  650. # DEBUG BEGIN_STMT
  651. if (xTimer_1(D) == 0B)
  652. goto <bb 3>; [46.53%]
  653. else
  654. goto <bb 5>; [53.47%]
  655. <bb 3> [local count: 107374]:
  656. # DEBUG BEGIN_STMT
  657. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  658. # DEBUG BEGIN_STMT
  659. # DEBUG BEGIN_STMT
  660. __asm__ __volatile__(" mov %0, %1
  661. msr basepri, %0
  662. isb
  663. dsb
  664. " : "=r" ulNewBASEPRI_6 : "i" 16 : "memory");
  665. # DEBUG ulNewBASEPRI => ulNewBASEPRI_6
  666. <bb 4> [local count: 1073741824]:
  667. # DEBUG ulNewBASEPRI => NULL
  668. # DEBUG BEGIN_STMT
  669. # DEBUG BEGIN_STMT
  670. # DEBUG BEGIN_STMT
  671. <bb 6> [local count: 1073741824]:
  672. goto <bb 4>; [100.00%]
  673. <bb 5> [local count: 123389]:
  674. # DEBUG BEGIN_STMT
  675. # DEBUG BEGIN_STMT
  676. vPortEnterCritical ();
  677. # DEBUG BEGIN_STMT
  678. pvReturn_4 = MEM[(struct Timer_t *)xTimer_1(D)].pvTimerID;
  679. # DEBUG pvReturn => pvReturn_4
  680. # DEBUG BEGIN_STMT
  681. vPortExitCritical ();
  682. # DEBUG BEGIN_STMT
  683. return pvReturn_4;
  684. }
  685. xTimerIsTimerActive (struct tmrTimerControl * xTimer)
  686. {
  687. uint32_t ulNewBASEPRI;
  688. unsigned char _1;
  689. long int _2;
  690. unsigned char _4;
  691. <bb 2> [local count: 230763]:
  692. # DEBUG BEGIN_STMT
  693. # DEBUG BEGIN_STMT
  694. # DEBUG pxTimer => xTimer_3(D)
  695. # DEBUG BEGIN_STMT
  696. if (xTimer_3(D) == 0B)
  697. goto <bb 3>; [46.53%]
  698. else
  699. goto <bb 5>; [53.47%]
  700. <bb 3> [local count: 107374]:
  701. # DEBUG BEGIN_STMT
  702. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  703. # DEBUG BEGIN_STMT
  704. # DEBUG BEGIN_STMT
  705. __asm__ __volatile__(" mov %0, %1
  706. msr basepri, %0
  707. isb
  708. dsb
  709. " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory");
  710. # DEBUG ulNewBASEPRI => ulNewBASEPRI_8
  711. <bb 4> [local count: 1073741824]:
  712. # DEBUG ulNewBASEPRI => NULL
  713. # DEBUG BEGIN_STMT
  714. # DEBUG BEGIN_STMT
  715. # DEBUG BEGIN_STMT
  716. <bb 6> [local count: 1073741824]:
  717. goto <bb 4>; [100.00%]
  718. <bb 5> [local count: 123389]:
  719. # DEBUG BEGIN_STMT
  720. # DEBUG BEGIN_STMT
  721. vPortEnterCritical ();
  722. # DEBUG BEGIN_STMT
  723. _1 = MEM[(struct Timer_t *)xTimer_3(D)].ucStatus;
  724. _4 = _1 & 1;
  725. _2 = (long int) _4;
  726. # DEBUG xReturn => _2
  727. # DEBUG BEGIN_STMT
  728. vPortExitCritical ();
  729. # DEBUG BEGIN_STMT
  730. return _2;
  731. }
  732. prvCheckForValidListAndQueue ()
  733. {
  734. struct QueueDefinition * xTimerQueue.17_1;
  735. struct QueueDefinition * _2;
  736. <bb 2> [local count: 1073741824]:
  737. # DEBUG BEGIN_STMT
  738. vPortEnterCritical ();
  739. # DEBUG BEGIN_STMT
  740. xTimerQueue.17_1 = xTimerQueue;
  741. if (xTimerQueue.17_1 == 0B)
  742. goto <bb 3>; [17.43%]
  743. else
  744. goto <bb 5>; [82.57%]
  745. <bb 3> [local count: 187153200]:
  746. # DEBUG BEGIN_STMT
  747. vListInitialise (&xActiveTimerList1);
  748. # DEBUG BEGIN_STMT
  749. vListInitialise (&xActiveTimerList2);
  750. # DEBUG BEGIN_STMT
  751. pxCurrentTimerList = &xActiveTimerList1;
  752. # DEBUG BEGIN_STMT
  753. pxOverflowTimerList = &xActiveTimerList2;
  754. # DEBUG BEGIN_STMT
  755. _2 = xQueueGenericCreate (10, 16, 0);
  756. xTimerQueue = _2;
  757. # DEBUG BEGIN_STMT
  758. if (_2 != 0B)
  759. goto <bb 4>; [53.47%]
  760. else
  761. goto <bb 5>; [46.53%]
  762. <bb 4> [local count: 100070816]:
  763. # DEBUG BEGIN_STMT
  764. vQueueAddToRegistry (_2, "TmrQ");
  765. <bb 5> [local count: 1073741824]:
  766. # DEBUG BEGIN_STMT
  767. # DEBUG BEGIN_STMT
  768. vPortExitCritical ();
  769. return;
  770. }
  771. prvSwitchTimerLists ()
  772. {
  773. TickType_t xNextExpireTime;
  774. struct xLIST_ITEM * _1;
  775. struct List_t * pxCurrentTimerList.11_2;
  776. long unsigned int _3;
  777. struct List_t * pxOverflowTimerList.12_4;
  778. struct List_t * pxCurrentTimerList.11_7;
  779. <bb 2> [local count: 118111600]:
  780. # DEBUG BEGIN_STMT
  781. # DEBUG BEGIN_STMT
  782. # DEBUG BEGIN_STMT
  783. goto <bb 4>; [100.00%]
  784. <bb 3> [local count: 955630223]:
  785. # DEBUG BEGIN_STMT
  786. _1 = pxCurrentTimerList.11_2->xListEnd.pxNext;
  787. xNextExpireTime_10 = _1->xItemValue;
  788. # DEBUG xNextExpireTime => xNextExpireTime_10
  789. # DEBUG BEGIN_STMT
  790. prvProcessExpiredTimer (xNextExpireTime_10, 4294967295);
  791. <bb 4> [local count: 1073741824]:
  792. # DEBUG BEGIN_STMT
  793. pxCurrentTimerList.11_2 = pxCurrentTimerList;
  794. _3 ={v} pxCurrentTimerList.11_2->uxNumberOfItems;
  795. if (_3 != 0)
  796. goto <bb 3>; [89.00%]
  797. else
  798. goto <bb 5>; [11.00%]
  799. <bb 5> [local count: 118111601]:
  800. # pxCurrentTimerList.11_7 = PHI <pxCurrentTimerList.11_2(4)>
  801. # DEBUG BEGIN_STMT
  802. # DEBUG pxTemp => pxCurrentTimerList.11_7
  803. # DEBUG BEGIN_STMT
  804. pxOverflowTimerList.12_4 = pxOverflowTimerList;
  805. pxCurrentTimerList = pxOverflowTimerList.12_4;
  806. # DEBUG BEGIN_STMT
  807. pxOverflowTimerList = pxCurrentTimerList.11_7;
  808. return;
  809. }
  810. prvProcessReceivedCommands ()
  811. {
  812. uint32_t ulNewBASEPRI;
  813. TickType_t xTimeNow;
  814. BaseType_t xTimerListsWereSwitched;
  815. struct Timer_t * pxTimer;
  816. struct DaemonTaskMessage_t xMessage;
  817. long int _1;
  818. void (*<T68e>) (void *, uint32_t) _2;
  819. void * _3;
  820. long unsigned int _4;
  821. long int _5;
  822. struct xLIST * _6;
  823. struct ListItem_t * _7;
  824. long int _8;
  825. unsigned char _9;
  826. unsigned char _10;
  827. long unsigned int _11;
  828. long unsigned int _12;
  829. long unsigned int _13;
  830. long int _15;
  831. unsigned char _16;
  832. long unsigned int _17;
  833. long unsigned int _18;
  834. long unsigned int _19;
  835. unsigned char _21;
  836. void (*<T689>) (struct tmrTimerControl *) _22;
  837. unsigned char _23;
  838. unsigned char _24;
  839. unsigned char _25;
  840. unsigned char _26;
  841. long unsigned int _27;
  842. long unsigned int _30;
  843. unsigned char _31;
  844. unsigned char _33;
  845. struct QueueDefinition * xTimerQueue.16_34;
  846. long int _35;
  847. unsigned char _63;
  848. unsigned char _65;
  849. <bb 2> [local count: 10436763]:
  850. # DEBUG BEGIN_STMT
  851. # DEBUG BEGIN_STMT
  852. # DEBUG BEGIN_STMT
  853. # DEBUG BEGIN_STMT
  854. # DEBUG BEGIN_STMT
  855. goto <bb 23>; [100.00%]
  856. <bb 3> [local count: 177477686]:
  857. # DEBUG BEGIN_STMT
  858. _1 = xMessage.xMessageID;
  859. if (_1 < 0)
  860. goto <bb 4>; [41.00%]
  861. else
  862. goto <bb 5>; [59.00%]
  863. <bb 4> [local count: 72765851]:
  864. # DEBUG BEGIN_STMT
  865. # DEBUG pxCallback => &xMessage.u.xCallbackParameters
  866. # DEBUG BEGIN_STMT
  867. # DEBUG BEGIN_STMT
  868. # DEBUG BEGIN_STMT
  869. _2 = MEM[(const struct CallbackParameters_t *)&xMessage + 4B].pxCallbackFunction;
  870. _3 = MEM[(const struct CallbackParameters_t *)&xMessage + 4B].pvParameter1;
  871. _4 = MEM[(const struct CallbackParameters_t *)&xMessage + 4B].ulParameter2;
  872. _2 (_3, _4);
  873. <bb 5> [local count: 177477686]:
  874. # DEBUG BEGIN_STMT
  875. # DEBUG BEGIN_STMT
  876. _5 = xMessage.xMessageID;
  877. if (_5 >= 0)
  878. goto <bb 6>; [5.50%]
  879. else
  880. goto <bb 29>; [94.50%]
  881. <bb 29> [local count: 167716413]:
  882. goto <bb 25>; [100.00%]
  883. <bb 6> [local count: 9761273]:
  884. # DEBUG BEGIN_STMT
  885. pxTimer_47 = xMessage.u.xTimerParameters.pxTimer;
  886. # DEBUG pxTimer => pxTimer_47
  887. # DEBUG BEGIN_STMT
  888. _6 = pxTimer_47->xTimerListItem.pvContainer;
  889. if (_6 != 0B)
  890. goto <bb 7>; [53.47%]
  891. else
  892. goto <bb 8>; [46.53%]
  893. <bb 7> [local count: 5219353]:
  894. # DEBUG BEGIN_STMT
  895. _7 = &pxTimer_47->xTimerListItem;
  896. uxListRemove (_7);
  897. <bb 8> [local count: 9761273]:
  898. # DEBUG BEGIN_STMT
  899. # DEBUG BEGIN_STMT
  900. # DEBUG BEGIN_STMT
  901. xTimeNow_50 = prvSampleTimeNow (&xTimerListsWereSwitched);
  902. # DEBUG xTimeNow => xTimeNow_50
  903. # DEBUG BEGIN_STMT
  904. _8 = xMessage.xMessageID;
  905. switch (_8) <default: <L41> [20.00%], case 1 ... 2: <L11> [20.00%], case 3: <L21> [20.00%], case 4: <L23> [20.00%], case 5: <L28> [20.00%], case 6 ... 7: <L11> [20.00%], case 8: <L21> [20.00%], case 9: <L23> [20.00%]>
  906. <bb 28> [local count: 1952255]:
  907. <L41>:
  908. goto <bb 24>; [100.00%]
  909. <bb 9> [local count: 1952255]:
  910. # pxTimer_14 = PHI <pxTimer_47(8)>
  911. # xTimeNow_46 = PHI <xTimeNow_50(8)>
  912. <L11>:
  913. # DEBUG BEGIN_STMT
  914. _9 = pxTimer_14->ucStatus;
  915. _10 = _9 | 1;
  916. pxTimer_14->ucStatus = _10;
  917. # DEBUG BEGIN_STMT
  918. _11 = xMessage.u.xTimerParameters.xMessageValue;
  919. _12 = pxTimer_14->xTimerPeriodInTicks;
  920. _13 = _11 + _12;
  921. _15 = prvInsertTimerInActiveList (pxTimer_14, _13, xTimeNow_46, _11);
  922. if (_15 != 0)
  923. goto <bb 10>; [50.00%]
  924. else
  925. goto <bb 22>; [50.00%]
  926. <bb 10> [local count: 976127]:
  927. # DEBUG BEGIN_STMT
  928. _16 = pxTimer_14->ucStatus;
  929. _65 = _16 & 4;
  930. if (_65 != 0)
  931. goto <bb 11>; [33.00%]
  932. else
  933. goto <bb 12>; [67.00%]
  934. <bb 11> [local count: 322122]:
  935. # DEBUG BEGIN_STMT
  936. _17 = xMessage.u.xTimerParameters.xMessageValue;
  937. _18 = pxTimer_14->xTimerPeriodInTicks;
  938. _19 = _17 + _18;
  939. prvReloadTimer (pxTimer_14, _19, xTimeNow_46);
  940. goto <bb 13>; [100.00%]
  941. <bb 12> [local count: 654005]:
  942. # DEBUG BEGIN_STMT
  943. _21 = _16 & 254;
  944. pxTimer_14->ucStatus = _21;
  945. <bb 13> [local count: 976127]:
  946. # DEBUG BEGIN_STMT
  947. # DEBUG BEGIN_STMT
  948. _22 = pxTimer_14->pxCallbackFunction;
  949. _22 (pxTimer_14);
  950. goto <bb 22>; [100.00%]
  951. <bb 14> [local count: 1952255]:
  952. # pxTimer_20 = PHI <pxTimer_47(8)>
  953. <L21>:
  954. # DEBUG BEGIN_STMT
  955. _23 = pxTimer_20->ucStatus;
  956. _24 = _23 & 254;
  957. pxTimer_20->ucStatus = _24;
  958. # DEBUG BEGIN_STMT
  959. goto <bb 22>; [100.00%]
  960. <bb 15> [local count: 1952255]:
  961. # pxTimer_44 = PHI <pxTimer_47(8)>
  962. # xTimeNow_67 = PHI <xTimeNow_50(8)>
  963. <L23>:
  964. # DEBUG BEGIN_STMT
  965. _25 = pxTimer_44->ucStatus;
  966. _26 = _25 | 1;
  967. pxTimer_44->ucStatus = _26;
  968. # DEBUG BEGIN_STMT
  969. _27 = xMessage.u.xTimerParameters.xMessageValue;
  970. pxTimer_44->xTimerPeriodInTicks = _27;
  971. # DEBUG BEGIN_STMT
  972. if (_27 == 0)
  973. goto <bb 16>; [5.50%]
  974. else
  975. goto <bb 18>; [94.50%]
  976. <bb 16> [local count: 107374]:
  977. # DEBUG BEGIN_STMT
  978. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  979. # DEBUG BEGIN_STMT
  980. # DEBUG BEGIN_STMT
  981. __asm__ __volatile__(" mov %0, %1
  982. msr basepri, %0
  983. isb
  984. dsb
  985. " : "=r" ulNewBASEPRI_64 : "i" 16 : "memory");
  986. # DEBUG ulNewBASEPRI => ulNewBASEPRI_64
  987. <bb 17> [local count: 1073741824]:
  988. # DEBUG ulNewBASEPRI => NULL
  989. # DEBUG BEGIN_STMT
  990. # DEBUG BEGIN_STMT
  991. # DEBUG BEGIN_STMT
  992. <bb 27> [local count: 1073741824]:
  993. goto <bb 17>; [100.00%]
  994. <bb 18> [local count: 1844881]:
  995. # DEBUG BEGIN_STMT
  996. # DEBUG BEGIN_STMT
  997. _30 = _27 + xTimeNow_67;
  998. prvInsertTimerInActiveList (pxTimer_44, _30, xTimeNow_67, xTimeNow_67);
  999. # DEBUG BEGIN_STMT
  1000. goto <bb 22>; [100.00%]
  1001. <bb 19> [local count: 1952255]:
  1002. # pxTimer_56 = PHI <pxTimer_47(8)>
  1003. <L28>:
  1004. # DEBUG BEGIN_STMT
  1005. _31 = pxTimer_56->ucStatus;
  1006. _63 = _31 & 2;
  1007. if (_63 == 0)
  1008. goto <bb 20>; [33.00%]
  1009. else
  1010. goto <bb 21>; [67.00%]
  1011. <bb 20> [local count: 644244]:
  1012. # DEBUG BEGIN_STMT
  1013. vPortFree (pxTimer_56);
  1014. goto <bb 22>; [100.00%]
  1015. <bb 21> [local count: 1308011]:
  1016. # DEBUG BEGIN_STMT
  1017. _33 = _31 & 254;
  1018. pxTimer_56->ucStatus = _33;
  1019. <bb 22> [local count: 7701644]:
  1020. <bb 23> [local count: 18138407]:
  1021. <bb 24> [local count: 20090662]:
  1022. <L38>:
  1023. <bb 25> [local count: 187807075]:
  1024. # DEBUG BEGIN_STMT
  1025. xTimerQueue.16_34 = xTimerQueue;
  1026. _35 = xQueueReceive (xTimerQueue.16_34, &xMessage, 0);
  1027. if (_35 != 0)
  1028. goto <bb 3>; [94.50%]
  1029. else
  1030. goto <bb 26>; [5.50%]
  1031. <bb 26> [local count: 10329389]:
  1032. xMessage ={v} {CLOBBER};
  1033. xTimerListsWereSwitched ={v} {CLOBBER};
  1034. return;
  1035. }
  1036. prvInsertTimerInActiveList (struct Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime)
  1037. {
  1038. BaseType_t xProcessTimerNow;
  1039. long unsigned int _1;
  1040. long unsigned int _2;
  1041. struct List_t * pxCurrentTimerList.15_3;
  1042. struct ListItem_t * _4;
  1043. <bb 2> [local count: 1073741824]:
  1044. # DEBUG BEGIN_STMT
  1045. # DEBUG xProcessTimerNow => 0
  1046. # DEBUG BEGIN_STMT
  1047. pxTimer_8(D)->xTimerListItem.xItemValue = xNextExpiryTime_9(D);
  1048. # DEBUG BEGIN_STMT
  1049. pxTimer_8(D)->xTimerListItem.pvOwner = pxTimer_8(D);
  1050. # DEBUG BEGIN_STMT
  1051. if (xNextExpiryTime_9(D) <= xTimeNow_12(D))
  1052. goto <bb 3>; [50.00%]
  1053. else
  1054. goto <bb 5>; [50.00%]
  1055. <bb 3> [local count: 536870913]:
  1056. # DEBUG BEGIN_STMT
  1057. _1 = xTimeNow_12(D) - xCommandTime_13(D);
  1058. _2 = pxTimer_8(D)->xTimerPeriodInTicks;
  1059. if (_1 >= _2)
  1060. goto <bb 8>; [67.00%]
  1061. else
  1062. goto <bb 4>; [33.00%]
  1063. <bb 4> [local count: 177167400]:
  1064. # DEBUG D#1 => xNextExpiryTime_9(D)
  1065. # DEBUG D#2 => xTimeNow_12(D)
  1066. # DEBUG D#3 => xCommandTime_13(D)
  1067. xProcessTimerNow_16 = prvInsertTimerInActiveList.part.0 (pxTimer_8(D));
  1068. goto <bb 8>; [100.00%]
  1069. <bb 5> [local count: 536870913]:
  1070. # DEBUG BEGIN_STMT
  1071. if (xTimeNow_12(D) < xCommandTime_13(D))
  1072. goto <bb 6>; [67.00%]
  1073. else
  1074. goto <bb 7>; [33.00%]
  1075. <bb 6> [local count: 359703511]:
  1076. if (xNextExpiryTime_9(D) >= xCommandTime_13(D))
  1077. goto <bb 8>; [50.00%]
  1078. else
  1079. goto <bb 7>; [50.00%]
  1080. <bb 7> [local count: 357019157]:
  1081. # DEBUG BEGIN_STMT
  1082. pxCurrentTimerList.15_3 = pxCurrentTimerList;
  1083. _4 = &pxTimer_8(D)->xTimerListItem;
  1084. vListInsert (pxCurrentTimerList.15_3, _4);
  1085. <bb 8> [local count: 1073741824]:
  1086. # xProcessTimerNow_5 = PHI <xProcessTimerNow_16(4), 1(6), 0(7), 1(3)>
  1087. # DEBUG xProcessTimerNow => xProcessTimerNow_5
  1088. # DEBUG BEGIN_STMT
  1089. return xProcessTimerNow_5;
  1090. }
  1091. prvSampleTimeNow (BaseType_t * const pxTimerListsWereSwitched)
  1092. {
  1093. static TickType_t xLastTime = 0;
  1094. TickType_t xTimeNow;
  1095. long unsigned int xLastTime.9_1;
  1096. <bb 2> [local count: 1073741824]:
  1097. # DEBUG BEGIN_STMT
  1098. # DEBUG BEGIN_STMT
  1099. # DEBUG BEGIN_STMT
  1100. xTimeNow_5 = xTaskGetTickCount ();
  1101. # DEBUG xTimeNow => xTimeNow_5
  1102. # DEBUG BEGIN_STMT
  1103. xLastTime.9_1 = xLastTime;
  1104. if (xLastTime.9_1 > xTimeNow_5)
  1105. goto <bb 3>; [33.00%]
  1106. else
  1107. goto <bb 4>; [67.00%]
  1108. <bb 3> [local count: 354334802]:
  1109. # DEBUG BEGIN_STMT
  1110. prvSwitchTimerLists ();
  1111. # DEBUG BEGIN_STMT
  1112. *pxTimerListsWereSwitched_6(D) = 1;
  1113. goto <bb 5>; [100.00%]
  1114. <bb 4> [local count: 719407023]:
  1115. # DEBUG BEGIN_STMT
  1116. *pxTimerListsWereSwitched_6(D) = 0;
  1117. <bb 5> [local count: 1073741824]:
  1118. # DEBUG BEGIN_STMT
  1119. xLastTime = xTimeNow_5;
  1120. # DEBUG BEGIN_STMT
  1121. return xTimeNow_5;
  1122. }
  1123. prvGetNextExpireTime (BaseType_t * const pxListWasEmpty)
  1124. {
  1125. TickType_t xNextExpireTime;
  1126. struct List_t * pxCurrentTimerList.3_1;
  1127. long unsigned int _2;
  1128. struct xLIST_ITEM * _3;
  1129. long int iftmp.2_5;
  1130. <bb 2> [local count: 1073741824]:
  1131. # DEBUG BEGIN_STMT
  1132. # DEBUG BEGIN_STMT
  1133. pxCurrentTimerList.3_1 = pxCurrentTimerList;
  1134. _2 ={v} pxCurrentTimerList.3_1->uxNumberOfItems;
  1135. if (_2 == 0)
  1136. goto <bb 4>; [50.00%]
  1137. else
  1138. goto <bb 3>; [50.00%]
  1139. <bb 3> [local count: 536870913]:
  1140. <bb 4> [local count: 1073741824]:
  1141. # iftmp.2_5 = PHI <1(2), 0(3)>
  1142. *pxListWasEmpty_7(D) = iftmp.2_5;
  1143. # DEBUG BEGIN_STMT
  1144. if (iftmp.2_5 == 0)
  1145. goto <bb 5>; [50.00%]
  1146. else
  1147. goto <bb 6>; [50.00%]
  1148. <bb 5> [local count: 536870913]:
  1149. # DEBUG BEGIN_STMT
  1150. _3 = pxCurrentTimerList.3_1->xListEnd.pxNext;
  1151. xNextExpireTime_9 = _3->xItemValue;
  1152. # DEBUG xNextExpireTime => xNextExpireTime_9
  1153. <bb 6> [local count: 1073741824]:
  1154. # xNextExpireTime_4 = PHI <xNextExpireTime_9(5), 0(4)>
  1155. # DEBUG xNextExpireTime => xNextExpireTime_4
  1156. # DEBUG BEGIN_STMT
  1157. return xNextExpireTime_4;
  1158. }
  1159. prvProcessTimerOrBlockTask (const TickType_t xNextExpireTime, BaseType_t xListWasEmpty)
  1160. {
  1161. BaseType_t xTimerListsWereSwitched;
  1162. TickType_t xTimeNow;
  1163. long int xTimerListsWereSwitched.5_1;
  1164. struct List_t * pxOverflowTimerList.7_2;
  1165. long unsigned int _3;
  1166. struct QueueDefinition * xTimerQueue.8_4;
  1167. long unsigned int _5;
  1168. long int _6;
  1169. <bb 2> [local count: 1073741823]:
  1170. # DEBUG BEGIN_STMT
  1171. # DEBUG BEGIN_STMT
  1172. # DEBUG BEGIN_STMT
  1173. vTaskSuspendAll ();
  1174. # DEBUG BEGIN_STMT
  1175. xTimeNow_12 = prvSampleTimeNow (&xTimerListsWereSwitched);
  1176. # DEBUG xTimeNow => xTimeNow_12
  1177. # DEBUG BEGIN_STMT
  1178. xTimerListsWereSwitched.5_1 = xTimerListsWereSwitched;
  1179. if (xTimerListsWereSwitched.5_1 == 0)
  1180. goto <bb 3>; [67.00%]
  1181. else
  1182. goto <bb 12>; [33.00%]
  1183. <bb 3> [local count: 719407022]:
  1184. # DEBUG BEGIN_STMT
  1185. if (xListWasEmpty_14(D) == 0)
  1186. goto <bb 4>; [50.00%]
  1187. else
  1188. goto <bb 6>; [50.00%]
  1189. <bb 4> [local count: 359703511]:
  1190. if (xTimeNow_12 >= xNextExpireTime_15(D))
  1191. goto <bb 5>; [33.00%]
  1192. else
  1193. goto <bb 6>; [67.00%]
  1194. <bb 5> [local count: 118702158]:
  1195. # DEBUG BEGIN_STMT
  1196. xTaskResumeAll ();
  1197. # DEBUG BEGIN_STMT
  1198. prvProcessExpiredTimer (xNextExpireTime_15(D), xTimeNow_12);
  1199. goto <bb 13>; [100.00%]
  1200. <bb 6> [local count: 600704864]:
  1201. # DEBUG BEGIN_STMT
  1202. if (xListWasEmpty_14(D) != 0)
  1203. goto <bb 7>; [50.00%]
  1204. else
  1205. goto <bb 10>; [50.00%]
  1206. <bb 7> [local count: 300352432]:
  1207. # DEBUG BEGIN_STMT
  1208. pxOverflowTimerList.7_2 = pxOverflowTimerList;
  1209. _3 ={v} pxOverflowTimerList.7_2->uxNumberOfItems;
  1210. if (_3 == 0)
  1211. goto <bb 10>; [50.00%]
  1212. else
  1213. goto <bb 8>; [50.00%]
  1214. <bb 8> [local count: 150176216]:
  1215. <bb 10> [local count: 600704864]:
  1216. # xListWasEmpty_7 = PHI <xListWasEmpty_14(D)(6), 0(8), 1(7)>
  1217. # DEBUG xListWasEmpty => xListWasEmpty_7
  1218. # DEBUG BEGIN_STMT
  1219. xTimerQueue.8_4 = xTimerQueue;
  1220. _5 = xNextExpireTime_15(D) - xTimeNow_12;
  1221. vQueueWaitForMessageRestricted (xTimerQueue.8_4, _5, xListWasEmpty_7);
  1222. # DEBUG BEGIN_STMT
  1223. _6 = xTaskResumeAll ();
  1224. if (_6 == 0)
  1225. goto <bb 11>; [50.00%]
  1226. else
  1227. goto <bb 13>; [50.00%]
  1228. <bb 11> [local count: 300352432]:
  1229. # DEBUG BEGIN_STMT
  1230. MEM[(volatile uint32_t *)3758157060B] ={v} 268435456;
  1231. # DEBUG BEGIN_STMT
  1232. __asm__ __volatile__("dsb" : : : "memory");
  1233. # DEBUG BEGIN_STMT
  1234. __asm__ __volatile__("isb");
  1235. # DEBUG BEGIN_STMT
  1236. goto <bb 13>; [100.00%]
  1237. <bb 12> [local count: 354334802]:
  1238. # DEBUG BEGIN_STMT
  1239. xTaskResumeAll ();
  1240. <bb 13> [local count: 1073741824]:
  1241. xTimerListsWereSwitched ={v} {CLOBBER};
  1242. return;
  1243. }
  1244. prvTimerTask (void * pvParameters)
  1245. {
  1246. BaseType_t xListWasEmpty;
  1247. TickType_t xNextExpireTime;
  1248. long int xListWasEmpty.1_1;
  1249. <bb 2> [local count: 107374]:
  1250. <bb 3> [local count: 1073741824]:
  1251. # DEBUG BEGIN_STMT
  1252. # DEBUG BEGIN_STMT
  1253. # DEBUG BEGIN_STMT
  1254. # DEBUG BEGIN_STMT
  1255. # DEBUG BEGIN_STMT
  1256. xNextExpireTime_5 = prvGetNextExpireTime (&xListWasEmpty);
  1257. # DEBUG xNextExpireTime => xNextExpireTime_5
  1258. # DEBUG BEGIN_STMT
  1259. xListWasEmpty.1_1 = xListWasEmpty;
  1260. prvProcessTimerOrBlockTask (xNextExpireTime_5, xListWasEmpty.1_1);
  1261. # DEBUG BEGIN_STMT
  1262. prvProcessReceivedCommands ();
  1263. # DEBUG BEGIN_STMT
  1264. <bb 4> [local count: 1073741824]:
  1265. goto <bb 3>; [100.00%]
  1266. }
  1267. prvProcessExpiredTimer (const TickType_t xNextExpireTime, const TickType_t xTimeNow)
  1268. {
  1269. struct Timer_t * const pxTimer;
  1270. struct List_t * pxCurrentTimerList.13_1;
  1271. struct xLIST_ITEM * _2;
  1272. struct ListItem_t * _3;
  1273. unsigned char _4;
  1274. unsigned char _5;
  1275. void (*<T689>) (struct tmrTimerControl *) _6;
  1276. unsigned char _16;
  1277. <bb 2> [local count: 1073741824]:
  1278. # DEBUG BEGIN_STMT
  1279. pxCurrentTimerList.13_1 = pxCurrentTimerList;
  1280. _2 = pxCurrentTimerList.13_1->xListEnd.pxNext;
  1281. pxTimer_9 = _2->pvOwner;
  1282. # DEBUG pxTimer => pxTimer_9
  1283. # DEBUG BEGIN_STMT
  1284. _3 = &pxTimer_9->xTimerListItem;
  1285. uxListRemove (_3);
  1286. # DEBUG BEGIN_STMT
  1287. _4 = pxTimer_9->ucStatus;
  1288. _16 = _4 & 4;
  1289. if (_16 != 0)
  1290. goto <bb 3>; [33.00%]
  1291. else
  1292. goto <bb 4>; [67.00%]
  1293. <bb 3> [local count: 354334802]:
  1294. # DEBUG BEGIN_STMT
  1295. prvReloadTimer (pxTimer_9, xNextExpireTime_12(D), xTimeNow_13(D));
  1296. goto <bb 5>; [100.00%]
  1297. <bb 4> [local count: 719407023]:
  1298. # DEBUG BEGIN_STMT
  1299. _5 = _4 & 254;
  1300. pxTimer_9->ucStatus = _5;
  1301. <bb 5> [local count: 1073741824]:
  1302. # DEBUG BEGIN_STMT
  1303. # DEBUG BEGIN_STMT
  1304. _6 = pxTimer_9->pxCallbackFunction;
  1305. _6 (pxTimer_9);
  1306. return;
  1307. }
  1308. prvReloadTimer (struct Timer_t * const pxTimer, TickType_t xExpiredTime, const TickType_t xTimeNow)
  1309. {
  1310. long unsigned int _1;
  1311. void (*<T689>) (struct tmrTimerControl *) _2;
  1312. long unsigned int _3;
  1313. long unsigned int _4;
  1314. long int _5;
  1315. <bb 2> [local count: 118111600]:
  1316. # DEBUG BEGIN_STMT
  1317. goto <bb 4>; [100.00%]
  1318. <bb 3> [local count: 955630223]:
  1319. # DEBUG BEGIN_STMT
  1320. _1 = pxTimer_10(D)->xTimerPeriodInTicks;
  1321. xExpiredTime_13 = _1 + xExpiredTime_6;
  1322. # DEBUG xExpiredTime => xExpiredTime_13
  1323. # DEBUG BEGIN_STMT
  1324. # DEBUG BEGIN_STMT
  1325. _2 = pxTimer_10(D)->pxCallbackFunction;
  1326. _2 (pxTimer_10(D));
  1327. <bb 4> [local count: 1073741824]:
  1328. # xExpiredTime_6 = PHI <xExpiredTime_8(D)(2), xExpiredTime_13(3)>
  1329. # DEBUG xExpiredTime => xExpiredTime_6
  1330. # DEBUG BEGIN_STMT
  1331. _3 = pxTimer_10(D)->xTimerPeriodInTicks;
  1332. _4 = _3 + xExpiredTime_6;
  1333. _5 = prvInsertTimerInActiveList (pxTimer_10(D), _4, xTimeNow_11(D), xExpiredTime_6);
  1334. if (_5 != 0)
  1335. goto <bb 3>; [89.00%]
  1336. else
  1337. goto <bb 5>; [11.00%]
  1338. <bb 5> [local count: 118111601]:
  1339. return;
  1340. }
  1341. pcTimerGetName (struct tmrTimerControl * xTimer)
  1342. {
  1343. uint32_t ulNewBASEPRI;
  1344. const char * _3;
  1345. <bb 2> [local count: 357913]:
  1346. # DEBUG BEGIN_STMT
  1347. # DEBUG pxTimer => xTimer_1(D)
  1348. # DEBUG BEGIN_STMT
  1349. if (xTimer_1(D) == 0B)
  1350. goto <bb 3>; [30.00%]
  1351. else
  1352. goto <bb 5>; [70.00%]
  1353. <bb 3> [local count: 107374]:
  1354. # DEBUG BEGIN_STMT
  1355. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1356. # DEBUG BEGIN_STMT
  1357. # DEBUG BEGIN_STMT
  1358. __asm__ __volatile__(" mov %0, %1
  1359. msr basepri, %0
  1360. isb
  1361. dsb
  1362. " : "=r" ulNewBASEPRI_4 : "i" 16 : "memory");
  1363. # DEBUG ulNewBASEPRI => ulNewBASEPRI_4
  1364. <bb 4> [local count: 1073741824]:
  1365. # DEBUG ulNewBASEPRI => NULL
  1366. # DEBUG BEGIN_STMT
  1367. # DEBUG BEGIN_STMT
  1368. # DEBUG BEGIN_STMT
  1369. <bb 6> [local count: 1073741824]:
  1370. goto <bb 4>; [100.00%]
  1371. <bb 5> [local count: 250539]:
  1372. # DEBUG BEGIN_STMT
  1373. # DEBUG BEGIN_STMT
  1374. _3 = MEM[(struct Timer_t *)xTimer_1(D)].pcTimerName;
  1375. return _3;
  1376. }
  1377. xTimerGetExpiryTime (struct tmrTimerControl * xTimer)
  1378. {
  1379. uint32_t ulNewBASEPRI;
  1380. TickType_t xReturn;
  1381. <bb 2> [local count: 357913]:
  1382. # DEBUG BEGIN_STMT
  1383. # DEBUG pxTimer => xTimer_1(D)
  1384. # DEBUG BEGIN_STMT
  1385. # DEBUG BEGIN_STMT
  1386. if (xTimer_1(D) == 0B)
  1387. goto <bb 3>; [30.00%]
  1388. else
  1389. goto <bb 5>; [70.00%]
  1390. <bb 3> [local count: 107374]:
  1391. # DEBUG BEGIN_STMT
  1392. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1393. # DEBUG BEGIN_STMT
  1394. # DEBUG BEGIN_STMT
  1395. __asm__ __volatile__(" mov %0, %1
  1396. msr basepri, %0
  1397. isb
  1398. dsb
  1399. " : "=r" ulNewBASEPRI_4 : "i" 16 : "memory");
  1400. # DEBUG ulNewBASEPRI => ulNewBASEPRI_4
  1401. <bb 4> [local count: 1073741824]:
  1402. # DEBUG ulNewBASEPRI => NULL
  1403. # DEBUG BEGIN_STMT
  1404. # DEBUG BEGIN_STMT
  1405. # DEBUG BEGIN_STMT
  1406. <bb 6> [local count: 1073741824]:
  1407. goto <bb 4>; [100.00%]
  1408. <bb 5> [local count: 250539]:
  1409. # DEBUG BEGIN_STMT
  1410. # DEBUG BEGIN_STMT
  1411. xReturn_3 = MEM[(struct Timer_t *)xTimer_1(D)].xTimerListItem.xItemValue;
  1412. # DEBUG xReturn => xReturn_3
  1413. # DEBUG BEGIN_STMT
  1414. return xReturn_3;
  1415. }
  1416. uxTimerGetReloadMode (struct tmrTimerControl * xTimer)
  1417. {
  1418. uint32_t ulNewBASEPRI;
  1419. UBaseType_t uxReturn;
  1420. unsigned char _1;
  1421. unsigned char _4;
  1422. <bb 2> [local count: 230763]:
  1423. # DEBUG BEGIN_STMT
  1424. # DEBUG pxTimer => xTimer_3(D)
  1425. # DEBUG BEGIN_STMT
  1426. # DEBUG BEGIN_STMT
  1427. if (xTimer_3(D) == 0B)
  1428. goto <bb 3>; [46.53%]
  1429. else
  1430. goto <bb 5>; [53.47%]
  1431. <bb 3> [local count: 107374]:
  1432. # DEBUG BEGIN_STMT
  1433. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1434. # DEBUG BEGIN_STMT
  1435. # DEBUG BEGIN_STMT
  1436. __asm__ __volatile__(" mov %0, %1
  1437. msr basepri, %0
  1438. isb
  1439. dsb
  1440. " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory");
  1441. # DEBUG ulNewBASEPRI => ulNewBASEPRI_8
  1442. <bb 4> [local count: 1073741824]:
  1443. # DEBUG ulNewBASEPRI => NULL
  1444. # DEBUG BEGIN_STMT
  1445. # DEBUG BEGIN_STMT
  1446. # DEBUG BEGIN_STMT
  1447. <bb 8> [local count: 1073741824]:
  1448. goto <bb 4>; [100.00%]
  1449. <bb 5> [local count: 123389]:
  1450. # DEBUG BEGIN_STMT
  1451. # DEBUG BEGIN_STMT
  1452. vPortEnterCritical ();
  1453. # DEBUG BEGIN_STMT
  1454. _1 = MEM[(struct Timer_t *)xTimer_3(D)].ucStatus;
  1455. _4 = _1 & 4;
  1456. if (_4 == 0)
  1457. goto <bb 7>; [50.00%]
  1458. else
  1459. goto <bb 6>; [50.00%]
  1460. <bb 6> [local count: 61694]:
  1461. # DEBUG BEGIN_STMT
  1462. # DEBUG uxReturn => 1
  1463. <bb 7> [local count: 123389]:
  1464. # uxReturn_2 = PHI <0(5), 1(6)>
  1465. # DEBUG uxReturn => uxReturn_2
  1466. # DEBUG BEGIN_STMT
  1467. vPortExitCritical ();
  1468. # DEBUG BEGIN_STMT
  1469. return uxReturn_2;
  1470. }
  1471. vTimerSetReloadMode (struct tmrTimerControl * xTimer, const UBaseType_t uxAutoReload)
  1472. {
  1473. uint32_t ulNewBASEPRI;
  1474. unsigned char _1;
  1475. unsigned char _2;
  1476. unsigned char _3;
  1477. unsigned char _4;
  1478. <bb 2> [local count: 230763]:
  1479. # DEBUG BEGIN_STMT
  1480. # DEBUG pxTimer => xTimer_6(D)
  1481. # DEBUG BEGIN_STMT
  1482. if (xTimer_6(D) == 0B)
  1483. goto <bb 3>; [46.53%]
  1484. else
  1485. goto <bb 5>; [53.47%]
  1486. <bb 3> [local count: 107374]:
  1487. # DEBUG BEGIN_STMT
  1488. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1489. # DEBUG BEGIN_STMT
  1490. # DEBUG BEGIN_STMT
  1491. __asm__ __volatile__(" mov %0, %1
  1492. msr basepri, %0
  1493. isb
  1494. dsb
  1495. " : "=r" ulNewBASEPRI_13 : "i" 16 : "memory");
  1496. # DEBUG ulNewBASEPRI => ulNewBASEPRI_13
  1497. <bb 4> [local count: 1073741824]:
  1498. # DEBUG ulNewBASEPRI => NULL
  1499. # DEBUG BEGIN_STMT
  1500. # DEBUG BEGIN_STMT
  1501. # DEBUG BEGIN_STMT
  1502. <bb 9> [local count: 1073741824]:
  1503. goto <bb 4>; [100.00%]
  1504. <bb 5> [local count: 123389]:
  1505. # DEBUG BEGIN_STMT
  1506. # DEBUG BEGIN_STMT
  1507. vPortEnterCritical ();
  1508. # DEBUG BEGIN_STMT
  1509. if (uxAutoReload_9(D) != 0)
  1510. goto <bb 6>; [50.00%]
  1511. else
  1512. goto <bb 7>; [50.00%]
  1513. <bb 6> [local count: 61694]:
  1514. # DEBUG BEGIN_STMT
  1515. _1 = MEM[(struct Timer_t *)xTimer_6(D)].ucStatus;
  1516. _2 = _1 | 4;
  1517. MEM[(struct Timer_t *)xTimer_6(D)].ucStatus = _2;
  1518. goto <bb 8>; [100.00%]
  1519. <bb 7> [local count: 61694]:
  1520. # DEBUG BEGIN_STMT
  1521. _3 = MEM[(struct Timer_t *)xTimer_6(D)].ucStatus;
  1522. _4 = _3 & 251;
  1523. MEM[(struct Timer_t *)xTimer_6(D)].ucStatus = _4;
  1524. <bb 8> [local count: 123389]:
  1525. # DEBUG BEGIN_STMT
  1526. vPortExitCritical ();
  1527. return;
  1528. }
  1529. xTimerGetPeriod (struct tmrTimerControl * xTimer)
  1530. {
  1531. uint32_t ulNewBASEPRI;
  1532. TickType_t _3;
  1533. <bb 2> [local count: 357913]:
  1534. # DEBUG BEGIN_STMT
  1535. # DEBUG pxTimer => xTimer_1(D)
  1536. # DEBUG BEGIN_STMT
  1537. if (xTimer_1(D) == 0B)
  1538. goto <bb 3>; [30.00%]
  1539. else
  1540. goto <bb 5>; [70.00%]
  1541. <bb 3> [local count: 107374]:
  1542. # DEBUG BEGIN_STMT
  1543. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1544. # DEBUG BEGIN_STMT
  1545. # DEBUG BEGIN_STMT
  1546. __asm__ __volatile__(" mov %0, %1
  1547. msr basepri, %0
  1548. isb
  1549. dsb
  1550. " : "=r" ulNewBASEPRI_4 : "i" 16 : "memory");
  1551. # DEBUG ulNewBASEPRI => ulNewBASEPRI_4
  1552. <bb 4> [local count: 1073741824]:
  1553. # DEBUG ulNewBASEPRI => NULL
  1554. # DEBUG BEGIN_STMT
  1555. # DEBUG BEGIN_STMT
  1556. # DEBUG BEGIN_STMT
  1557. <bb 6> [local count: 1073741824]:
  1558. goto <bb 4>; [100.00%]
  1559. <bb 5> [local count: 250539]:
  1560. # DEBUG BEGIN_STMT
  1561. # DEBUG BEGIN_STMT
  1562. _3 = MEM[(struct Timer_t *)xTimer_1(D)].xTimerPeriodInTicks;
  1563. return _3;
  1564. }
  1565. xTimerGetTimerDaemonTaskHandle ()
  1566. {
  1567. uint32_t ulNewBASEPRI;
  1568. struct tskTaskControlBlock * xTimerTaskHandle.24_1;
  1569. <bb 2> [local count: 357913]:
  1570. # DEBUG BEGIN_STMT
  1571. xTimerTaskHandle.24_1 = xTimerTaskHandle;
  1572. if (xTimerTaskHandle.24_1 == 0B)
  1573. goto <bb 3>; [30.00%]
  1574. else
  1575. goto <bb 5>; [70.00%]
  1576. <bb 3> [local count: 107374]:
  1577. # DEBUG BEGIN_STMT
  1578. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1579. # DEBUG BEGIN_STMT
  1580. # DEBUG BEGIN_STMT
  1581. __asm__ __volatile__(" mov %0, %1
  1582. msr basepri, %0
  1583. isb
  1584. dsb
  1585. " : "=r" ulNewBASEPRI_3 : "i" 16 : "memory");
  1586. # DEBUG ulNewBASEPRI => ulNewBASEPRI_3
  1587. <bb 4> [local count: 1073741824]:
  1588. # DEBUG ulNewBASEPRI => NULL
  1589. # DEBUG BEGIN_STMT
  1590. # DEBUG BEGIN_STMT
  1591. # DEBUG BEGIN_STMT
  1592. <bb 6> [local count: 1073741824]:
  1593. goto <bb 4>; [100.00%]
  1594. <bb 5> [local count: 250539]:
  1595. # DEBUG BEGIN_STMT
  1596. # DEBUG BEGIN_STMT
  1597. return xTimerTaskHandle.24_1;
  1598. }
  1599. xTimerGenericCommand (struct tmrTimerControl * xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait)
  1600. {
  1601. uint32_t ulNewBASEPRI;
  1602. struct DaemonTaskMessage_t xMessage;
  1603. BaseType_t xReturn;
  1604. struct QueueDefinition * xTimerQueue.20_1;
  1605. long int _2;
  1606. struct QueueDefinition * xTimerQueue.21_3;
  1607. struct QueueDefinition * xTimerQueue.22_4;
  1608. <bb 2> [local count: 357913]:
  1609. # DEBUG BEGIN_STMT
  1610. # DEBUG xReturn => 0
  1611. # DEBUG BEGIN_STMT
  1612. # DEBUG BEGIN_STMT
  1613. if (xTimer_7(D) == 0B)
  1614. goto <bb 3>; [30.00%]
  1615. else
  1616. goto <bb 5>; [70.00%]
  1617. <bb 3> [local count: 107374]:
  1618. # DEBUG BEGIN_STMT
  1619. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1620. # DEBUG BEGIN_STMT
  1621. # DEBUG BEGIN_STMT
  1622. __asm__ __volatile__(" mov %0, %1
  1623. msr basepri, %0
  1624. isb
  1625. dsb
  1626. " : "=r" ulNewBASEPRI_24 : "i" 16 : "memory");
  1627. # DEBUG ulNewBASEPRI => ulNewBASEPRI_24
  1628. <bb 4> [local count: 1073741824]:
  1629. # DEBUG ulNewBASEPRI => NULL
  1630. # DEBUG BEGIN_STMT
  1631. # DEBUG BEGIN_STMT
  1632. # DEBUG BEGIN_STMT
  1633. <bb 12> [local count: 1073741824]:
  1634. goto <bb 4>; [100.00%]
  1635. <bb 5> [local count: 250539]:
  1636. # DEBUG BEGIN_STMT
  1637. # DEBUG BEGIN_STMT
  1638. xTimerQueue.20_1 = xTimerQueue;
  1639. if (xTimerQueue.20_1 != 0B)
  1640. goto <bb 6>; [70.00%]
  1641. else
  1642. goto <bb 11>; [30.00%]
  1643. <bb 6> [local count: 175378]:
  1644. # DEBUG BEGIN_STMT
  1645. xMessage.xMessageID = xCommandID_9(D);
  1646. # DEBUG BEGIN_STMT
  1647. xMessage.u.xTimerParameters.xMessageValue = xOptionalValue_11(D);
  1648. # DEBUG BEGIN_STMT
  1649. xMessage.u.xTimerParameters.pxTimer = xTimer_7(D);
  1650. # DEBUG BEGIN_STMT
  1651. if (xCommandID_9(D) <= 5)
  1652. goto <bb 7>; [50.00%]
  1653. else
  1654. goto <bb 10>; [50.00%]
  1655. <bb 7> [local count: 87689]:
  1656. # DEBUG BEGIN_STMT
  1657. _2 = xTaskGetSchedulerState ();
  1658. if (_2 == 2)
  1659. goto <bb 8>; [34.00%]
  1660. else
  1661. goto <bb 9>; [66.00%]
  1662. <bb 8> [local count: 29814]:
  1663. # DEBUG BEGIN_STMT
  1664. xTimerQueue.21_3 = xTimerQueue;
  1665. xReturn_22 = xQueueGenericSend (xTimerQueue.21_3, &xMessage, xTicksToWait_20(D), 0);
  1666. # DEBUG xReturn => xReturn_22
  1667. goto <bb 11>; [100.00%]
  1668. <bb 9> [local count: 57875]:
  1669. # DEBUG BEGIN_STMT
  1670. xTimerQueue.22_4 = xTimerQueue;
  1671. xReturn_19 = xQueueGenericSend (xTimerQueue.22_4, &xMessage, 0, 0);
  1672. # DEBUG xReturn => xReturn_19
  1673. goto <bb 11>; [100.00%]
  1674. <bb 10> [local count: 87689]:
  1675. # DEBUG BEGIN_STMT
  1676. xReturn_16 = xQueueGenericSendFromISR (xTimerQueue.20_1, &xMessage, pxHigherPriorityTaskWoken_14(D), 0);
  1677. # DEBUG xReturn => xReturn_16
  1678. <bb 11> [local count: 250539]:
  1679. # xReturn_5 = PHI <0(5), xReturn_16(10), xReturn_19(9), xReturn_22(8)>
  1680. # DEBUG xReturn => xReturn_5
  1681. # DEBUG BEGIN_STMT
  1682. # DEBUG BEGIN_STMT
  1683. xMessage ={v} {CLOBBER};
  1684. return xReturn_5;
  1685. }
  1686. prvInitialiseNewTimer (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction, struct Timer_t * pxNewTimer)
  1687. {
  1688. uint32_t ulNewBASEPRI;
  1689. struct ListItem_t * _1;
  1690. unsigned char _2;
  1691. unsigned char _3;
  1692. <bb 2> [local count: 160260]:
  1693. # DEBUG BEGIN_STMT
  1694. if (xTimerPeriodInTicks_5(D) == 0)
  1695. goto <bb 3>; [67.00%]
  1696. else
  1697. goto <bb 5>; [33.00%]
  1698. <bb 3> [local count: 107374]:
  1699. # DEBUG BEGIN_STMT
  1700. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1701. # DEBUG BEGIN_STMT
  1702. # DEBUG BEGIN_STMT
  1703. __asm__ __volatile__(" mov %0, %1
  1704. msr basepri, %0
  1705. isb
  1706. dsb
  1707. " : "=r" ulNewBASEPRI_19 : "i" 16 : "memory");
  1708. # DEBUG ulNewBASEPRI => ulNewBASEPRI_19
  1709. <bb 4> [local count: 1073741824]:
  1710. # DEBUG ulNewBASEPRI => NULL
  1711. # DEBUG BEGIN_STMT
  1712. # DEBUG BEGIN_STMT
  1713. # DEBUG BEGIN_STMT
  1714. <bb 8> [local count: 1073741824]:
  1715. goto <bb 4>; [100.00%]
  1716. <bb 5> [local count: 52886]:
  1717. # DEBUG BEGIN_STMT
  1718. # DEBUG BEGIN_STMT
  1719. prvCheckForValidListAndQueue ();
  1720. # DEBUG BEGIN_STMT
  1721. pxNewTimer_8(D)->pcTimerName = pcTimerName_9(D);
  1722. # DEBUG BEGIN_STMT
  1723. pxNewTimer_8(D)->xTimerPeriodInTicks = xTimerPeriodInTicks_5(D);
  1724. # DEBUG BEGIN_STMT
  1725. pxNewTimer_8(D)->pvTimerID = pvTimerID_12(D);
  1726. # DEBUG BEGIN_STMT
  1727. pxNewTimer_8(D)->pxCallbackFunction = pxCallbackFunction_14(D);
  1728. # DEBUG BEGIN_STMT
  1729. _1 = &pxNewTimer_8(D)->xTimerListItem;
  1730. vListInitialiseItem (_1);
  1731. # DEBUG BEGIN_STMT
  1732. if (uxAutoReload_17(D) != 0)
  1733. goto <bb 6>; [50.00%]
  1734. else
  1735. goto <bb 7>; [50.00%]
  1736. <bb 6> [local count: 26443]:
  1737. # DEBUG BEGIN_STMT
  1738. _2 = pxNewTimer_8(D)->ucStatus;
  1739. _3 = _2 | 4;
  1740. pxNewTimer_8(D)->ucStatus = _3;
  1741. <bb 7> [local count: 52886]:
  1742. # DEBUG BEGIN_STMT
  1743. return;
  1744. }
  1745. xTimerCreate (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction)
  1746. {
  1747. struct Timer_t * pxNewTimer;
  1748. <bb 2> [local count: 1073741824]:
  1749. # DEBUG BEGIN_STMT
  1750. # DEBUG BEGIN_STMT
  1751. pxNewTimer_4 = pvPortMalloc (44);
  1752. # DEBUG pxNewTimer => pxNewTimer_4
  1753. # DEBUG BEGIN_STMT
  1754. if (pxNewTimer_4 != 0B)
  1755. goto <bb 3>; [53.47%]
  1756. else
  1757. goto <bb 4>; [46.53%]
  1758. <bb 3> [local count: 574129754]:
  1759. # DEBUG BEGIN_STMT
  1760. pxNewTimer_4->ucStatus = 0;
  1761. # DEBUG BEGIN_STMT
  1762. prvInitialiseNewTimer (pcTimerName_6(D), xTimerPeriodInTicks_7(D), uxAutoReload_8(D), pvTimerID_9(D), pxCallbackFunction_10(D), pxNewTimer_4);
  1763. <bb 4> [local count: 1073741824]:
  1764. # DEBUG BEGIN_STMT
  1765. return pxNewTimer_4;
  1766. }
  1767. xTimerCreateTimerTask ()
  1768. {
  1769. uint32_t ulNewBASEPRI;
  1770. BaseType_t xReturn;
  1771. struct QueueDefinition * xTimerQueue.0_1;
  1772. <bb 2> [local count: 146556]:
  1773. # DEBUG BEGIN_STMT
  1774. # DEBUG xReturn => 0
  1775. # DEBUG BEGIN_STMT
  1776. prvCheckForValidListAndQueue ();
  1777. # DEBUG BEGIN_STMT
  1778. xTimerQueue.0_1 = xTimerQueue;
  1779. if (xTimerQueue.0_1 != 0B)
  1780. goto <bb 4>; [53.47%]
  1781. else
  1782. goto <bb 5>; [46.53%]
  1783. <bb 4> [local count: 78363]:
  1784. # DEBUG BEGIN_STMT
  1785. xReturn_5 = xTaskCreate (prvTimerTask, "Tmr Svc", 180, 0B, 2, &xTimerTaskHandle);
  1786. # DEBUG xReturn => xReturn_5
  1787. # DEBUG BEGIN_STMT
  1788. # DEBUG BEGIN_STMT
  1789. if (xReturn_5 == 0)
  1790. goto <bb 5>; [50.00%]
  1791. else
  1792. goto <bb 7>; [50.00%]
  1793. <bb 5> [local count: 107374]:
  1794. # DEBUG xReturn => NULL
  1795. # DEBUG BEGIN_STMT
  1796. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1797. # DEBUG BEGIN_STMT
  1798. # DEBUG BEGIN_STMT
  1799. __asm__ __volatile__(" mov %0, %1
  1800. msr basepri, %0
  1801. isb
  1802. dsb
  1803. " : "=r" ulNewBASEPRI_7 : "i" 16 : "memory");
  1804. # DEBUG ulNewBASEPRI => ulNewBASEPRI_7
  1805. <bb 6> [local count: 1073741824]:
  1806. # DEBUG ulNewBASEPRI => NULL
  1807. # DEBUG BEGIN_STMT
  1808. # DEBUG BEGIN_STMT
  1809. # DEBUG BEGIN_STMT
  1810. <bb 8> [local count: 1073741824]:
  1811. goto <bb 6>; [100.00%]
  1812. <bb 7> [local count: 39182]:
  1813. # DEBUG BEGIN_STMT
  1814. # DEBUG BEGIN_STMT
  1815. return xReturn_5;
  1816. }