timers.c.016i.visibility 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862
  1. Marking local functions: prvCheckForValidListAndQueue prvSwitchTimerLists prvProcessReceivedCommands prvInsertTimerInActiveList prvSampleTimeNow prvGetNextExpireTime prvProcessTimerOrBlockTask prvProcessExpiredTimer prvReloadTimer prvInitialiseNewTimer vPortRaiseBASEPRI
  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. Reclaiming functions:
  5. Reclaiming variables:
  6. Clearing address taken flags:
  7. Symbol table:
  8. xQueueGenericSendFromISR/56 (xQueueGenericSendFromISR) @05f5cc40
  9. Type: function
  10. Visibility: external public
  11. References:
  12. Referring:
  13. Availability: not_available
  14. Function flags: optimize_size
  15. Called by: xTimerPendFunctionCallFromISR/33 xTimerGenericCommand/13
  16. Calls:
  17. xQueueGenericSend/55 (xQueueGenericSend) @05f5cb60
  18. Type: function
  19. Visibility: external public
  20. References:
  21. Referring:
  22. Availability: not_available
  23. Function flags: optimize_size
  24. Called by: xTimerPendFunctionCall/34 xTimerGenericCommand/13 xTimerGenericCommand/13
  25. Calls:
  26. xTaskGetSchedulerState/54 (xTaskGetSchedulerState) @05f5ca80
  27. Type: function
  28. Visibility: external public
  29. References:
  30. Referring:
  31. Availability: not_available
  32. Function flags: optimize_size
  33. Called by: xTimerGenericCommand/13
  34. Calls:
  35. vListInitialiseItem/53 (vListInitialiseItem) @05f5c8c0
  36. Type: function
  37. Visibility: external public
  38. References:
  39. Referring:
  40. Availability: not_available
  41. Function flags: optimize_size
  42. Called by: prvInitialiseNewTimer/12
  43. Calls:
  44. pvPortMalloc/52 (pvPortMalloc) @05f5c700
  45. Type: function
  46. Visibility: external public
  47. References:
  48. Referring:
  49. Availability: not_available
  50. Function flags: optimize_size
  51. Called by: xTimerCreate/11
  52. Calls:
  53. vPortExitCritical/51 (vPortExitCritical) @05f5c460
  54. Type: function
  55. Visibility: external public
  56. References:
  57. Referring:
  58. Availability: not_available
  59. Function flags: optimize_size
  60. Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 prvCheckForValidListAndQueue/29
  61. Calls:
  62. vQueueAddToRegistry/50 (vQueueAddToRegistry) @05f5c380
  63. Type: function
  64. Visibility: external public
  65. References:
  66. Referring:
  67. Availability: not_available
  68. Function flags: optimize_size
  69. Called by: prvCheckForValidListAndQueue/29
  70. Calls:
  71. xQueueGenericCreate/49 (xQueueGenericCreate) @05f5c2a0
  72. Type: function
  73. Visibility: external public
  74. References:
  75. Referring:
  76. Availability: not_available
  77. Function flags: optimize_size
  78. Called by: prvCheckForValidListAndQueue/29
  79. Calls:
  80. vListInitialise/48 (vListInitialise) @05f5c0e0
  81. Type: function
  82. Visibility: external public
  83. References:
  84. Referring:
  85. Availability: not_available
  86. Function flags: optimize_size
  87. Called by: prvCheckForValidListAndQueue/29 prvCheckForValidListAndQueue/29
  88. Calls:
  89. vPortEnterCritical/47 (vPortEnterCritical) @05f5c000
  90. Type: function
  91. Visibility: external public
  92. References:
  93. Referring:
  94. Availability: not_available
  95. Function flags: optimize_size
  96. Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 prvCheckForValidListAndQueue/29
  97. Calls:
  98. xQueueReceive/46 (xQueueReceive) @05f36e00
  99. Type: function
  100. Visibility: external public
  101. References:
  102. Referring:
  103. Availability: not_available
  104. Function flags: optimize_size
  105. Called by: prvProcessReceivedCommands/27
  106. Calls:
  107. vPortFree/45 (vPortFree) @05f36d20
  108. Type: function
  109. Visibility: external public
  110. References:
  111. Referring:
  112. Availability: not_available
  113. Function flags: optimize_size
  114. Called by: prvProcessReceivedCommands/27
  115. Calls:
  116. vListInsert/44 (vListInsert) @05f369a0
  117. Type: function
  118. Visibility: external public
  119. References:
  120. Referring:
  121. Availability: not_available
  122. Function flags: optimize_size
  123. Called by: prvInsertTimerInActiveList/26 prvInsertTimerInActiveList/26
  124. Calls:
  125. uxListRemove/43 (uxListRemove) @05f36700
  126. Type: function
  127. Visibility: external public
  128. References:
  129. Referring:
  130. Availability: not_available
  131. Function flags: optimize_size
  132. Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21
  133. Calls:
  134. xLastTime.6551/42 (xLastTime) @05f4c120
  135. Type: variable definition analyzed
  136. Visibility: prevailing_def_ironly
  137. References:
  138. Referring: prvSampleTimeNow/25 (read)prvSampleTimeNow/25 (write)
  139. Availability: available
  140. Varpool flags: initialized
  141. xTaskGetTickCount/41 (xTaskGetTickCount) @05f36380
  142. Type: function
  143. Visibility: external public
  144. References:
  145. Referring:
  146. Availability: not_available
  147. Function flags: optimize_size
  148. Called by: prvSampleTimeNow/25
  149. Calls:
  150. vQueueWaitForMessageRestricted/40 (vQueueWaitForMessageRestricted) @05f361c0
  151. Type: function
  152. Visibility: external public
  153. References:
  154. Referring:
  155. Availability: not_available
  156. Function flags: optimize_size
  157. Called by: prvProcessTimerOrBlockTask/23
  158. Calls:
  159. xTaskResumeAll/39 (xTaskResumeAll) @05f360e0
  160. Type: function
  161. Visibility: external public
  162. References:
  163. Referring:
  164. Availability: not_available
  165. Function flags: optimize_size
  166. Called by: prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23
  167. Calls:
  168. vTaskSuspendAll/38 (vTaskSuspendAll) @05f36000
  169. Type: function
  170. Visibility: external public
  171. References:
  172. Referring:
  173. Availability: not_available
  174. Function flags: optimize_size
  175. Called by: prvProcessTimerOrBlockTask/23
  176. Calls:
  177. xTaskCreate/37 (xTaskCreate) @05f2aee0
  178. Type: function
  179. Visibility: external public
  180. References:
  181. Referring:
  182. Availability: not_available
  183. Function flags: optimize_size
  184. Called by: xTimerCreateTimerTask/10
  185. Calls:
  186. vTimerSetTimerNumber/36 (vTimerSetTimerNumber) @05f2aa80
  187. Type: function definition analyzed
  188. Visibility: externally_visible public
  189. References:
  190. Referring:
  191. Availability: available
  192. Function flags: body optimize_size
  193. Called by:
  194. Calls:
  195. uxTimerGetTimerNumber/35 (uxTimerGetTimerNumber) @05f2a7e0
  196. Type: function definition analyzed
  197. Visibility: externally_visible public
  198. References:
  199. Referring:
  200. Availability: available
  201. Function flags: body optimize_size
  202. Called by:
  203. Calls:
  204. xTimerPendFunctionCall/34 (xTimerPendFunctionCall) @05f2a540
  205. Type: function definition analyzed
  206. Visibility: externally_visible public
  207. References: xTimerQueue/8 (read)xTimerQueue/8 (read)
  208. Referring:
  209. Availability: available
  210. Function flags: body optimize_size
  211. Called by:
  212. Calls: xQueueGenericSend/55 vPortRaiseBASEPRI/1
  213. xTimerPendFunctionCallFromISR/33 (xTimerPendFunctionCallFromISR) @05f2a0e0
  214. Type: function definition analyzed
  215. Visibility: externally_visible public
  216. References: xTimerQueue/8 (read)
  217. Referring:
  218. Availability: available
  219. Function flags: body optimize_size
  220. Called by:
  221. Calls: xQueueGenericSendFromISR/56
  222. vTimerSetTimerID/32 (vTimerSetTimerID) @05f268c0
  223. Type: function definition analyzed
  224. Visibility: externally_visible public
  225. References:
  226. Referring:
  227. Availability: available
  228. Function flags: body optimize_size
  229. Called by:
  230. Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1
  231. pvTimerGetTimerID/31 (pvTimerGetTimerID) @05f26ee0
  232. Type: function definition analyzed
  233. Visibility: externally_visible public
  234. References:
  235. Referring:
  236. Availability: available
  237. Function flags: body optimize_size
  238. Called by:
  239. Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1
  240. xTimerIsTimerActive/30 (xTimerIsTimerActive) @05f26b60
  241. Type: function definition analyzed
  242. Visibility: externally_visible public
  243. References:
  244. Referring:
  245. Availability: available
  246. Function flags: body optimize_size
  247. Called by:
  248. Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1
  249. prvCheckForValidListAndQueue/29 (prvCheckForValidListAndQueue) @05f267e0
  250. Type: function definition analyzed
  251. Visibility: prevailing_def_ironly
  252. 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)xTimerQueue/8 (read)xTimerQueue/8 (read)
  253. Referring:
  254. Availability: local
  255. Function flags: body local optimize_size
  256. Called by: prvInitialiseNewTimer/12 xTimerCreateTimerTask/10
  257. Calls: vPortExitCritical/51 vQueueAddToRegistry/50 xQueueGenericCreate/49 vListInitialise/48 vListInitialise/48 vPortEnterCritical/47
  258. prvSwitchTimerLists/28 (prvSwitchTimerLists) @05f26460
  259. Type: function definition analyzed
  260. Visibility: prevailing_def_ironly
  261. References: pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (write)pxOverflowTimerList/7 (write)
  262. Referring:
  263. Availability: local
  264. Function flags: body local optimize_size
  265. Called by: prvSampleTimeNow/25
  266. Calls: prvProcessExpiredTimer/21
  267. prvProcessReceivedCommands/27 (prvProcessReceivedCommands) @05f260e0
  268. Type: function definition analyzed
  269. Visibility: prevailing_def_ironly
  270. References: xTimerQueue/8 (read)
  271. Referring:
  272. Availability: local
  273. Function flags: body local optimize_size
  274. Called by: prvTimerTask/22
  275. Calls: xQueueReceive/46 vPortFree/45 prvInsertTimerInActiveList/26 vPortRaiseBASEPRI/1 prvReloadTimer/20 prvInsertTimerInActiveList/26 prvSampleTimeNow/25 uxListRemove/43 vPortRaiseBASEPRI/1
  276. Indirect call
  277. Indirect call
  278. prvInsertTimerInActiveList/26 (prvInsertTimerInActiveList) @05f1a7e0
  279. Type: function definition analyzed
  280. Visibility: prevailing_def_ironly
  281. References: pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (read)
  282. Referring:
  283. Availability: local
  284. Function flags: body local optimize_size
  285. Called by: prvProcessReceivedCommands/27 prvProcessReceivedCommands/27 prvReloadTimer/20
  286. Calls: vListInsert/44 vListInsert/44
  287. prvSampleTimeNow/25 (prvSampleTimeNow) @05f1ad20
  288. Type: function definition analyzed
  289. Visibility: prevailing_def_ironly
  290. References: xLastTime.6551/42 (read)xLastTime.6551/42 (write)
  291. Referring:
  292. Availability: local
  293. Function flags: body local optimize_size
  294. Called by: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23
  295. Calls: prvSwitchTimerLists/28 xTaskGetTickCount/41
  296. prvGetNextExpireTime/24 (prvGetNextExpireTime) @05f1aa80
  297. Type: function definition analyzed
  298. Visibility: prevailing_def_ironly
  299. References: pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)
  300. Referring:
  301. Availability: local
  302. Function flags: body local optimize_size
  303. Called by: prvTimerTask/22
  304. Calls:
  305. prvProcessTimerOrBlockTask/23 (prvProcessTimerOrBlockTask) @05f1a700
  306. Type: function definition analyzed
  307. Visibility: prevailing_def_ironly
  308. References: pxOverflowTimerList/7 (read)xTimerQueue/8 (read)
  309. Referring:
  310. Availability: local
  311. Function flags: body local optimize_size
  312. Called by: prvTimerTask/22
  313. Calls: xTaskResumeAll/39 xTaskResumeAll/39 vQueueWaitForMessageRestricted/40 prvProcessExpiredTimer/21 xTaskResumeAll/39 prvSampleTimeNow/25 vTaskSuspendAll/38
  314. prvTimerTask/22 (prvTimerTask) @05f1a2a0
  315. Type: function definition analyzed
  316. Visibility: prevailing_def_ironly
  317. Address is taken.
  318. References:
  319. Referring: xTimerCreateTimerTask/10 (addr)
  320. Availability: available
  321. Function flags: body optimize_size
  322. Called by:
  323. Calls: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23 prvGetNextExpireTime/24
  324. prvProcessExpiredTimer/21 (prvProcessExpiredTimer) @05f1a000
  325. Type: function definition analyzed
  326. Visibility: prevailing_def_ironly
  327. References: pxCurrentTimerList/6 (read)
  328. Referring:
  329. Availability: local
  330. Function flags: body local optimize_size
  331. Called by: prvSwitchTimerLists/28 prvProcessTimerOrBlockTask/23
  332. Calls: prvReloadTimer/20 uxListRemove/43
  333. Indirect call
  334. prvReloadTimer/20 (prvReloadTimer) @05ec0540
  335. Type: function definition analyzed
  336. Visibility: prevailing_def_ironly
  337. References:
  338. Referring:
  339. Availability: local
  340. Function flags: body local optimize_size
  341. Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21
  342. Calls: prvInsertTimerInActiveList/26
  343. Indirect call
  344. pcTimerGetName/19 (pcTimerGetName) @05ec0ee0
  345. Type: function definition analyzed
  346. Visibility: externally_visible public
  347. References:
  348. Referring:
  349. Availability: available
  350. Function flags: body optimize_size
  351. Called by:
  352. Calls: vPortRaiseBASEPRI/1
  353. xTimerGetExpiryTime/18 (xTimerGetExpiryTime) @05ec0b60
  354. Type: function definition analyzed
  355. Visibility: externally_visible public
  356. References:
  357. Referring:
  358. Availability: available
  359. Function flags: body optimize_size
  360. Called by:
  361. Calls: vPortRaiseBASEPRI/1
  362. uxTimerGetReloadMode/17 (uxTimerGetReloadMode) @05ec07e0
  363. Type: function definition analyzed
  364. Visibility: externally_visible public
  365. References:
  366. Referring:
  367. Availability: available
  368. Function flags: body optimize_size
  369. Called by:
  370. Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1
  371. vTimerSetReloadMode/16 (vTimerSetReloadMode) @05ec0460
  372. Type: function definition analyzed
  373. Visibility: externally_visible public
  374. References:
  375. Referring:
  376. Availability: available
  377. Function flags: body optimize_size
  378. Called by:
  379. Calls: vPortExitCritical/51 vPortEnterCritical/47 vPortRaiseBASEPRI/1
  380. xTimerGetPeriod/15 (xTimerGetPeriod) @05ec00e0
  381. Type: function definition analyzed
  382. Visibility: externally_visible public
  383. References:
  384. Referring:
  385. Availability: available
  386. Function flags: body optimize_size
  387. Called by:
  388. Calls: vPortRaiseBASEPRI/1
  389. xTimerGetTimerDaemonTaskHandle/14 (xTimerGetTimerDaemonTaskHandle) @05f157e0
  390. Type: function definition analyzed
  391. Visibility: externally_visible public
  392. References: xTimerTaskHandle/9 (read)xTimerTaskHandle/9 (read)
  393. Referring:
  394. Availability: available
  395. Function flags: body optimize_size
  396. Called by:
  397. Calls: vPortRaiseBASEPRI/1
  398. xTimerGenericCommand/13 (xTimerGenericCommand) @05f151c0
  399. Type: function definition analyzed
  400. Visibility: externally_visible public
  401. References: xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read)
  402. Referring:
  403. Availability: available
  404. Function flags: body optimize_size
  405. Called by:
  406. Calls: xQueueGenericSendFromISR/56 xQueueGenericSend/55 xQueueGenericSend/55 xTaskGetSchedulerState/54 vPortRaiseBASEPRI/1
  407. prvInitialiseNewTimer/12 (prvInitialiseNewTimer) @05f15a80
  408. Type: function definition analyzed
  409. Visibility: prevailing_def_ironly
  410. References:
  411. Referring:
  412. Availability: local
  413. Function flags: body local optimize_size
  414. Called by: xTimerCreate/11
  415. Calls: vListInitialiseItem/53 prvCheckForValidListAndQueue/29 vPortRaiseBASEPRI/1
  416. xTimerCreate/11 (xTimerCreate) @05f15700
  417. Type: function definition analyzed
  418. Visibility: externally_visible public
  419. References:
  420. Referring:
  421. Availability: available
  422. Function flags: body optimize_size
  423. Called by:
  424. Calls: prvInitialiseNewTimer/12 pvPortMalloc/52
  425. xTimerCreateTimerTask/10 (xTimerCreateTimerTask) @05f15460
  426. Type: function definition analyzed
  427. Visibility: externally_visible public
  428. References: xTimerQueue/8 (read)prvTimerTask/22 (addr)xTimerTaskHandle/9 (addr)
  429. Referring:
  430. Availability: available
  431. Function flags: body optimize_size
  432. Called by:
  433. Calls: vPortRaiseBASEPRI/1 xTaskCreate/37 prvCheckForValidListAndQueue/29
  434. xTimerTaskHandle/9 (xTimerTaskHandle) @05f0f678
  435. Type: variable definition analyzed
  436. Visibility: prevailing_def_ironly
  437. References:
  438. Referring: xTimerCreateTimerTask/10 (addr)xTimerGetTimerDaemonTaskHandle/14 (read)xTimerGetTimerDaemonTaskHandle/14 (read)
  439. Availability: available
  440. Varpool flags: initialized
  441. xTimerQueue/8 (xTimerQueue) @05f0f5e8
  442. Type: variable definition analyzed
  443. Visibility: prevailing_def_ironly
  444. References:
  445. Referring: xTimerCreateTimerTask/10 (read)prvProcessTimerOrBlockTask/23 (read)prvProcessReceivedCommands/27 (read)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (write)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerPendFunctionCallFromISR/33 (read)xTimerPendFunctionCall/34 (read)xTimerPendFunctionCall/34 (read)
  446. Availability: available
  447. Varpool flags: initialized
  448. pxOverflowTimerList/7 (pxOverflowTimerList) @05f0f558
  449. Type: variable definition analyzed
  450. Visibility: prevailing_def_ironly
  451. References:
  452. Referring: prvProcessTimerOrBlockTask/23 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (write)prvInsertTimerInActiveList/26 (read)prvCheckForValidListAndQueue/29 (write)
  453. Availability: available
  454. Varpool flags:
  455. pxCurrentTimerList/6 (pxCurrentTimerList) @05f0f4c8
  456. Type: variable definition analyzed
  457. Visibility: prevailing_def_ironly
  458. References:
  459. Referring: prvGetNextExpireTime/24 (read)prvGetNextExpireTime/24 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (write)prvProcessExpiredTimer/21 (read)prvInsertTimerInActiveList/26 (read)prvCheckForValidListAndQueue/29 (write)
  460. Availability: available
  461. Varpool flags:
  462. xActiveTimerList2/5 (xActiveTimerList2) @05f0f438
  463. Type: variable definition analyzed
  464. Visibility: prevailing_def_ironly
  465. References:
  466. Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr)
  467. Availability: available
  468. Varpool flags:
  469. xActiveTimerList1/4 (xActiveTimerList1) @05f0f3a8
  470. Type: variable definition analyzed
  471. Visibility: prevailing_def_ironly
  472. References:
  473. Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr)
  474. Availability: available
  475. Varpool flags:
  476. vPortRaiseBASEPRI/1 (vPortRaiseBASEPRI) @05e55d20
  477. Type: function definition analyzed
  478. Visibility: prevailing_def_ironly
  479. References:
  480. Referring:
  481. Availability: local
  482. Function flags: body local optimize_size
  483. Called by: xTimerPendFunctionCall/34 vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 pcTimerGetName/19 xTimerGetExpiryTime/18 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 xTimerGetPeriod/15 xTimerGetTimerDaemonTaskHandle/14 xTimerGenericCommand/13 prvInitialiseNewTimer/12 prvProcessReceivedCommands/27 prvProcessReceivedCommands/27 xTimerCreateTimerTask/10
  484. Calls:
  485. vTimerSetTimerNumber (struct tmrTimerControl * xTimer, UBaseType_t uxTimerNumber)
  486. {
  487. <bb 2> :
  488. # DEBUG BEGIN_STMT
  489. MEM[(struct Timer_t *)xTimer].uxTimerNumber = uxTimerNumber;
  490. return;
  491. }
  492. uxTimerGetTimerNumber (struct tmrTimerControl * xTimer)
  493. {
  494. UBaseType_t D.6791;
  495. <bb 2> :
  496. # DEBUG BEGIN_STMT
  497. D.6791 = MEM[(struct Timer_t *)xTimer].uxTimerNumber;
  498. return D.6791;
  499. }
  500. xTimerPendFunctionCall (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait)
  501. {
  502. BaseType_t xReturn;
  503. struct DaemonTaskMessage_t xMessage;
  504. BaseType_t D.6788;
  505. <bb 2> :
  506. # DEBUG BEGIN_STMT
  507. # DEBUG BEGIN_STMT
  508. # DEBUG BEGIN_STMT
  509. xTimerQueue.26_1 = xTimerQueue;
  510. if (xTimerQueue.26_1 == 0B)
  511. goto <bb 3>; [INV]
  512. else
  513. goto <bb 5>; [INV]
  514. <bb 3> :
  515. # DEBUG BEGIN_STMT
  516. vPortRaiseBASEPRI ();
  517. <bb 4> :
  518. # DEBUG BEGIN_STMT
  519. # DEBUG BEGIN_STMT
  520. # DEBUG BEGIN_STMT
  521. goto <bb 4>; [INV]
  522. <bb 5> :
  523. # DEBUG BEGIN_STMT
  524. # DEBUG BEGIN_STMT
  525. xMessage.xMessageID = -1;
  526. # DEBUG BEGIN_STMT
  527. xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend;
  528. # DEBUG BEGIN_STMT
  529. xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1;
  530. # DEBUG BEGIN_STMT
  531. xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2;
  532. # DEBUG BEGIN_STMT
  533. xTimerQueue.27_2 = xTimerQueue;
  534. xReturn = xQueueGenericSend (xTimerQueue.27_2, &xMessage, xTicksToWait, 0);
  535. # DEBUG BEGIN_STMT
  536. # DEBUG BEGIN_STMT
  537. D.6788 = xReturn;
  538. xMessage = {CLOBBER};
  539. return D.6788;
  540. }
  541. xTimerPendFunctionCallFromISR (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, BaseType_t * pxHigherPriorityTaskWoken)
  542. {
  543. BaseType_t xReturn;
  544. struct DaemonTaskMessage_t xMessage;
  545. BaseType_t D.6783;
  546. <bb 2> :
  547. # DEBUG BEGIN_STMT
  548. # DEBUG BEGIN_STMT
  549. # DEBUG BEGIN_STMT
  550. xMessage.xMessageID = -2;
  551. # DEBUG BEGIN_STMT
  552. xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend;
  553. # DEBUG BEGIN_STMT
  554. xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1;
  555. # DEBUG BEGIN_STMT
  556. xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2;
  557. # DEBUG BEGIN_STMT
  558. xTimerQueue.25_1 = xTimerQueue;
  559. xReturn = xQueueGenericSendFromISR (xTimerQueue.25_1, &xMessage, pxHigherPriorityTaskWoken, 0);
  560. # DEBUG BEGIN_STMT
  561. # DEBUG BEGIN_STMT
  562. D.6783 = xReturn;
  563. xMessage = {CLOBBER};
  564. return D.6783;
  565. }
  566. vTimerSetTimerID (struct tmrTimerControl * xTimer, void * pvNewID)
  567. {
  568. struct Timer_t * const pxTimer;
  569. <bb 2> :
  570. # DEBUG BEGIN_STMT
  571. pxTimer = xTimer;
  572. # DEBUG BEGIN_STMT
  573. if (xTimer == 0B)
  574. goto <bb 3>; [INV]
  575. else
  576. goto <bb 5>; [INV]
  577. <bb 3> :
  578. # DEBUG BEGIN_STMT
  579. vPortRaiseBASEPRI ();
  580. <bb 4> :
  581. # DEBUG BEGIN_STMT
  582. # DEBUG BEGIN_STMT
  583. # DEBUG BEGIN_STMT
  584. goto <bb 4>; [INV]
  585. <bb 5> :
  586. # DEBUG BEGIN_STMT
  587. # DEBUG BEGIN_STMT
  588. vPortEnterCritical ();
  589. # DEBUG BEGIN_STMT
  590. pxTimer->pvTimerID = pvNewID;
  591. # DEBUG BEGIN_STMT
  592. vPortExitCritical ();
  593. return;
  594. }
  595. pvTimerGetTimerID (struct tmrTimerControl * const xTimer)
  596. {
  597. void * pvReturn;
  598. struct Timer_t * const pxTimer;
  599. void * D.6779;
  600. <bb 2> :
  601. # DEBUG BEGIN_STMT
  602. pxTimer = xTimer;
  603. # DEBUG BEGIN_STMT
  604. # DEBUG BEGIN_STMT
  605. if (xTimer == 0B)
  606. goto <bb 3>; [INV]
  607. else
  608. goto <bb 5>; [INV]
  609. <bb 3> :
  610. # DEBUG BEGIN_STMT
  611. vPortRaiseBASEPRI ();
  612. <bb 4> :
  613. # DEBUG BEGIN_STMT
  614. # DEBUG BEGIN_STMT
  615. # DEBUG BEGIN_STMT
  616. goto <bb 4>; [INV]
  617. <bb 5> :
  618. # DEBUG BEGIN_STMT
  619. # DEBUG BEGIN_STMT
  620. vPortEnterCritical ();
  621. # DEBUG BEGIN_STMT
  622. pvReturn = pxTimer->pvTimerID;
  623. # DEBUG BEGIN_STMT
  624. vPortExitCritical ();
  625. # DEBUG BEGIN_STMT
  626. D.6779 = pvReturn;
  627. return D.6779;
  628. }
  629. xTimerIsTimerActive (struct tmrTimerControl * xTimer)
  630. {
  631. struct Timer_t * pxTimer;
  632. BaseType_t xReturn;
  633. BaseType_t D.6775;
  634. <bb 2> :
  635. # DEBUG BEGIN_STMT
  636. # DEBUG BEGIN_STMT
  637. pxTimer = xTimer;
  638. # DEBUG BEGIN_STMT
  639. if (xTimer == 0B)
  640. goto <bb 3>; [INV]
  641. else
  642. goto <bb 5>; [INV]
  643. <bb 3> :
  644. # DEBUG BEGIN_STMT
  645. vPortRaiseBASEPRI ();
  646. <bb 4> :
  647. # DEBUG BEGIN_STMT
  648. # DEBUG BEGIN_STMT
  649. # DEBUG BEGIN_STMT
  650. goto <bb 4>; [INV]
  651. <bb 5> :
  652. # DEBUG BEGIN_STMT
  653. # DEBUG BEGIN_STMT
  654. vPortEnterCritical ();
  655. # DEBUG BEGIN_STMT
  656. _1 = pxTimer->ucStatus;
  657. _2 = (int) _1;
  658. _3 = _2 & 1;
  659. if (_3 == 0)
  660. goto <bb 6>; [INV]
  661. else
  662. goto <bb 7>; [INV]
  663. <bb 6> :
  664. # DEBUG BEGIN_STMT
  665. xReturn = 0;
  666. goto <bb 8>; [INV]
  667. <bb 7> :
  668. # DEBUG BEGIN_STMT
  669. xReturn = 1;
  670. <bb 8> :
  671. # DEBUG BEGIN_STMT
  672. vPortExitCritical ();
  673. # DEBUG BEGIN_STMT
  674. D.6775 = xReturn;
  675. return D.6775;
  676. }
  677. prvCheckForValidListAndQueue ()
  678. {
  679. <bb 2> :
  680. # DEBUG BEGIN_STMT
  681. vPortEnterCritical ();
  682. # DEBUG BEGIN_STMT
  683. xTimerQueue.17_1 = xTimerQueue;
  684. if (xTimerQueue.17_1 == 0B)
  685. goto <bb 3>; [INV]
  686. else
  687. goto <bb 5>; [INV]
  688. <bb 3> :
  689. # DEBUG BEGIN_STMT
  690. vListInitialise (&xActiveTimerList1);
  691. # DEBUG BEGIN_STMT
  692. vListInitialise (&xActiveTimerList2);
  693. # DEBUG BEGIN_STMT
  694. pxCurrentTimerList = &xActiveTimerList1;
  695. # DEBUG BEGIN_STMT
  696. pxOverflowTimerList = &xActiveTimerList2;
  697. # DEBUG BEGIN_STMT
  698. _2 = xQueueGenericCreate (10, 16, 0);
  699. xTimerQueue = _2;
  700. # DEBUG BEGIN_STMT
  701. xTimerQueue.18_3 = xTimerQueue;
  702. if (xTimerQueue.18_3 != 0B)
  703. goto <bb 4>; [INV]
  704. else
  705. goto <bb 5>; [INV]
  706. <bb 4> :
  707. # DEBUG BEGIN_STMT
  708. xTimerQueue.19_4 = xTimerQueue;
  709. vQueueAddToRegistry (xTimerQueue.19_4, "TmrQ");
  710. <bb 5> :
  711. # DEBUG BEGIN_STMT
  712. # DEBUG BEGIN_STMT
  713. vPortExitCritical ();
  714. return;
  715. }
  716. prvSwitchTimerLists ()
  717. {
  718. struct List_t * pxTemp;
  719. TickType_t xNextExpireTime;
  720. <bb 2> :
  721. # DEBUG BEGIN_STMT
  722. # DEBUG BEGIN_STMT
  723. # DEBUG BEGIN_STMT
  724. goto <bb 4>; [INV]
  725. <bb 3> :
  726. # DEBUG BEGIN_STMT
  727. pxCurrentTimerList.10_1 = pxCurrentTimerList;
  728. _2 = pxCurrentTimerList.10_1->xListEnd.pxNext;
  729. xNextExpireTime = _2->xItemValue;
  730. # DEBUG BEGIN_STMT
  731. prvProcessExpiredTimer (xNextExpireTime, 4294967295);
  732. <bb 4> :
  733. # DEBUG BEGIN_STMT
  734. pxCurrentTimerList.11_3 = pxCurrentTimerList;
  735. _4 = pxCurrentTimerList.11_3->uxNumberOfItems;
  736. if (_4 != 0)
  737. goto <bb 3>; [INV]
  738. else
  739. goto <bb 5>; [INV]
  740. <bb 5> :
  741. # DEBUG BEGIN_STMT
  742. pxTemp = pxCurrentTimerList;
  743. # DEBUG BEGIN_STMT
  744. pxOverflowTimerList.12_5 = pxOverflowTimerList;
  745. pxCurrentTimerList = pxOverflowTimerList.12_5;
  746. # DEBUG BEGIN_STMT
  747. pxOverflowTimerList = pxTemp;
  748. return;
  749. }
  750. prvProcessReceivedCommands ()
  751. {
  752. const struct CallbackParameters_t * const pxCallback;
  753. TickType_t xTimeNow;
  754. BaseType_t xTimerListsWereSwitched;
  755. struct Timer_t * pxTimer;
  756. struct DaemonTaskMessage_t xMessage;
  757. <bb 2> :
  758. # DEBUG BEGIN_STMT
  759. # DEBUG BEGIN_STMT
  760. # DEBUG BEGIN_STMT
  761. # DEBUG BEGIN_STMT
  762. # DEBUG BEGIN_STMT
  763. goto <bb 25>; [INV]
  764. <bb 3> :
  765. # DEBUG BEGIN_STMT
  766. _1 = xMessage.xMessageID;
  767. if (_1 < 0)
  768. goto <bb 4>; [INV]
  769. else
  770. goto <bb 8>; [INV]
  771. <bb 4> :
  772. # DEBUG BEGIN_STMT
  773. pxCallback = &xMessage.u.xCallbackParameters;
  774. # DEBUG BEGIN_STMT
  775. if (pxCallback == 0B)
  776. goto <bb 5>; [INV]
  777. else
  778. goto <bb 7>; [INV]
  779. <bb 5> :
  780. # DEBUG BEGIN_STMT
  781. vPortRaiseBASEPRI ();
  782. <bb 6> :
  783. # DEBUG BEGIN_STMT
  784. # DEBUG BEGIN_STMT
  785. # DEBUG BEGIN_STMT
  786. goto <bb 6>; [INV]
  787. <bb 7> :
  788. # DEBUG BEGIN_STMT
  789. # DEBUG BEGIN_STMT
  790. _2 = pxCallback->pxCallbackFunction;
  791. _3 = pxCallback->pvParameter1;
  792. _4 = pxCallback->ulParameter2;
  793. _2 (_3, _4);
  794. <bb 8> :
  795. # DEBUG BEGIN_STMT
  796. # DEBUG BEGIN_STMT
  797. _5 = xMessage.xMessageID;
  798. if (_5 >= 0)
  799. goto <bb 9>; [INV]
  800. else
  801. goto <bb 25>; [INV]
  802. <bb 9> :
  803. # DEBUG BEGIN_STMT
  804. pxTimer = xMessage.u.xTimerParameters.pxTimer;
  805. # DEBUG BEGIN_STMT
  806. _6 = pxTimer->xTimerListItem.pvContainer;
  807. if (_6 != 0B)
  808. goto <bb 10>; [INV]
  809. else
  810. goto <bb 11>; [INV]
  811. <bb 10> :
  812. # DEBUG BEGIN_STMT
  813. _7 = &pxTimer->xTimerListItem;
  814. uxListRemove (_7);
  815. <bb 11> :
  816. # DEBUG BEGIN_STMT
  817. # DEBUG BEGIN_STMT
  818. # DEBUG BEGIN_STMT
  819. xTimeNow = prvSampleTimeNow (&xTimerListsWereSwitched);
  820. # DEBUG BEGIN_STMT
  821. _8 = xMessage.xMessageID;
  822. switch (_8) <default: <L37> [INV], case 1 ... 2: <L11> [INV], case 3: <L21> [INV], case 4: <L23> [INV], case 5: <L28> [INV], case 6 ... 7: <L11> [INV], case 8: <L21> [INV], case 9: <L23> [INV]>
  823. <bb 12> :
  824. <L11>:
  825. # DEBUG BEGIN_STMT
  826. _9 = pxTimer->ucStatus;
  827. _10 = _9 | 1;
  828. pxTimer->ucStatus = _10;
  829. # DEBUG BEGIN_STMT
  830. _11 = xMessage.u.xTimerParameters.xMessageValue;
  831. _12 = pxTimer->xTimerPeriodInTicks;
  832. _13 = _11 + _12;
  833. _14 = xMessage.u.xTimerParameters.xMessageValue;
  834. _15 = prvInsertTimerInActiveList (pxTimer, _13, xTimeNow, _14);
  835. if (_15 != 0)
  836. goto <bb 13>; [INV]
  837. else
  838. goto <bb 25>; [INV]
  839. <bb 13> :
  840. # DEBUG BEGIN_STMT
  841. _16 = pxTimer->ucStatus;
  842. _17 = (int) _16;
  843. _18 = _17 & 4;
  844. if (_18 != 0)
  845. goto <bb 14>; [INV]
  846. else
  847. goto <bb 15>; [INV]
  848. <bb 14> :
  849. # DEBUG BEGIN_STMT
  850. _19 = xMessage.u.xTimerParameters.xMessageValue;
  851. _20 = pxTimer->xTimerPeriodInTicks;
  852. _21 = _19 + _20;
  853. prvReloadTimer (pxTimer, _21, xTimeNow);
  854. goto <bb 16>; [INV]
  855. <bb 15> :
  856. # DEBUG BEGIN_STMT
  857. _22 = pxTimer->ucStatus;
  858. _23 = _22 & 254;
  859. pxTimer->ucStatus = _23;
  860. <bb 16> :
  861. # DEBUG BEGIN_STMT
  862. # DEBUG BEGIN_STMT
  863. _24 = pxTimer->pxCallbackFunction;
  864. _24 (pxTimer);
  865. goto <bb 25>; [INV]
  866. <bb 17> :
  867. <L21>:
  868. # DEBUG BEGIN_STMT
  869. _25 = pxTimer->ucStatus;
  870. _26 = _25 & 254;
  871. pxTimer->ucStatus = _26;
  872. # DEBUG BEGIN_STMT
  873. goto <bb 25>; [INV]
  874. <bb 18> :
  875. <L23>:
  876. # DEBUG BEGIN_STMT
  877. _27 = pxTimer->ucStatus;
  878. _28 = _27 | 1;
  879. pxTimer->ucStatus = _28;
  880. # DEBUG BEGIN_STMT
  881. _29 = xMessage.u.xTimerParameters.xMessageValue;
  882. pxTimer->xTimerPeriodInTicks = _29;
  883. # DEBUG BEGIN_STMT
  884. _30 = pxTimer->xTimerPeriodInTicks;
  885. if (_30 == 0)
  886. goto <bb 19>; [INV]
  887. else
  888. goto <bb 21>; [INV]
  889. <bb 19> :
  890. # DEBUG BEGIN_STMT
  891. vPortRaiseBASEPRI ();
  892. <bb 20> :
  893. # DEBUG BEGIN_STMT
  894. # DEBUG BEGIN_STMT
  895. # DEBUG BEGIN_STMT
  896. goto <bb 20>; [INV]
  897. <bb 21> :
  898. # DEBUG BEGIN_STMT
  899. # DEBUG BEGIN_STMT
  900. _31 = pxTimer->xTimerPeriodInTicks;
  901. _32 = xTimeNow + _31;
  902. prvInsertTimerInActiveList (pxTimer, _32, xTimeNow, xTimeNow);
  903. # DEBUG BEGIN_STMT
  904. goto <bb 25>; [INV]
  905. <bb 22> :
  906. <L28>:
  907. # DEBUG BEGIN_STMT
  908. _33 = pxTimer->ucStatus;
  909. _34 = (int) _33;
  910. _35 = _34 & 2;
  911. if (_35 == 0)
  912. goto <bb 23>; [INV]
  913. else
  914. goto <bb 24>; [INV]
  915. <bb 23> :
  916. # DEBUG BEGIN_STMT
  917. vPortFree (pxTimer);
  918. goto <bb 25>; [INV]
  919. <bb 24> :
  920. # DEBUG BEGIN_STMT
  921. _36 = pxTimer->ucStatus;
  922. _37 = _36 & 254;
  923. pxTimer->ucStatus = _37;
  924. <bb 25> :
  925. <L37>:
  926. # DEBUG BEGIN_STMT
  927. xTimerQueue.16_38 = xTimerQueue;
  928. _39 = xQueueReceive (xTimerQueue.16_38, &xMessage, 0);
  929. if (_39 != 0)
  930. goto <bb 3>; [INV]
  931. else
  932. goto <bb 26>; [INV]
  933. <bb 26> :
  934. xMessage = {CLOBBER};
  935. xTimerListsWereSwitched = {CLOBBER};
  936. return;
  937. }
  938. prvInsertTimerInActiveList (struct Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime)
  939. {
  940. BaseType_t xProcessTimerNow;
  941. BaseType_t D.6690;
  942. <bb 2> :
  943. # DEBUG BEGIN_STMT
  944. xProcessTimerNow = 0;
  945. # DEBUG BEGIN_STMT
  946. pxTimer->xTimerListItem.xItemValue = xNextExpiryTime;
  947. # DEBUG BEGIN_STMT
  948. pxTimer->xTimerListItem.pvOwner = pxTimer;
  949. # DEBUG BEGIN_STMT
  950. if (xNextExpiryTime <= xTimeNow)
  951. goto <bb 3>; [INV]
  952. else
  953. goto <bb 6>; [INV]
  954. <bb 3> :
  955. # DEBUG BEGIN_STMT
  956. _1 = xTimeNow - xCommandTime;
  957. _2 = pxTimer->xTimerPeriodInTicks;
  958. if (_1 >= _2)
  959. goto <bb 4>; [INV]
  960. else
  961. goto <bb 5>; [INV]
  962. <bb 4> :
  963. # DEBUG BEGIN_STMT
  964. xProcessTimerNow = 1;
  965. goto <bb 10>; [INV]
  966. <bb 5> :
  967. # DEBUG BEGIN_STMT
  968. pxOverflowTimerList.14_3 = pxOverflowTimerList;
  969. _4 = &pxTimer->xTimerListItem;
  970. vListInsert (pxOverflowTimerList.14_3, _4);
  971. goto <bb 10>; [INV]
  972. <bb 6> :
  973. # DEBUG BEGIN_STMT
  974. if (xTimeNow < xCommandTime)
  975. goto <bb 7>; [INV]
  976. else
  977. goto <bb 9>; [INV]
  978. <bb 7> :
  979. if (xNextExpiryTime >= xCommandTime)
  980. goto <bb 8>; [INV]
  981. else
  982. goto <bb 9>; [INV]
  983. <bb 8> :
  984. # DEBUG BEGIN_STMT
  985. xProcessTimerNow = 1;
  986. goto <bb 10>; [INV]
  987. <bb 9> :
  988. # DEBUG BEGIN_STMT
  989. pxCurrentTimerList.15_5 = pxCurrentTimerList;
  990. _6 = &pxTimer->xTimerListItem;
  991. vListInsert (pxCurrentTimerList.15_5, _6);
  992. <bb 10> :
  993. # DEBUG BEGIN_STMT
  994. D.6690 = xProcessTimerNow;
  995. return D.6690;
  996. }
  997. prvSampleTimeNow (BaseType_t * const pxTimerListsWereSwitched)
  998. {
  999. static TickType_t xLastTime = 0;
  1000. TickType_t xTimeNow;
  1001. TickType_t D.6675;
  1002. <bb 2> :
  1003. # DEBUG BEGIN_STMT
  1004. # DEBUG BEGIN_STMT
  1005. # DEBUG BEGIN_STMT
  1006. xTimeNow = xTaskGetTickCount ();
  1007. # DEBUG BEGIN_STMT
  1008. xLastTime.9_1 = xLastTime;
  1009. if (xTimeNow < xLastTime.9_1)
  1010. goto <bb 3>; [INV]
  1011. else
  1012. goto <bb 4>; [INV]
  1013. <bb 3> :
  1014. # DEBUG BEGIN_STMT
  1015. prvSwitchTimerLists ();
  1016. # DEBUG BEGIN_STMT
  1017. *pxTimerListsWereSwitched = 1;
  1018. goto <bb 5>; [INV]
  1019. <bb 4> :
  1020. # DEBUG BEGIN_STMT
  1021. *pxTimerListsWereSwitched = 0;
  1022. <bb 5> :
  1023. # DEBUG BEGIN_STMT
  1024. xLastTime = xTimeNow;
  1025. # DEBUG BEGIN_STMT
  1026. D.6675 = xTimeNow;
  1027. return D.6675;
  1028. }
  1029. prvGetNextExpireTime (BaseType_t * const pxListWasEmpty)
  1030. {
  1031. TickType_t xNextExpireTime;
  1032. TickType_t D.6654;
  1033. long int iftmp.2;
  1034. <bb 2> :
  1035. # DEBUG BEGIN_STMT
  1036. # DEBUG BEGIN_STMT
  1037. pxCurrentTimerList.3_1 = pxCurrentTimerList;
  1038. _2 = pxCurrentTimerList.3_1->uxNumberOfItems;
  1039. if (_2 == 0)
  1040. goto <bb 3>; [INV]
  1041. else
  1042. goto <bb 4>; [INV]
  1043. <bb 3> :
  1044. iftmp.2 = 1;
  1045. goto <bb 5>; [INV]
  1046. <bb 4> :
  1047. iftmp.2 = 0;
  1048. <bb 5> :
  1049. *pxListWasEmpty = iftmp.2;
  1050. # DEBUG BEGIN_STMT
  1051. _3 = *pxListWasEmpty;
  1052. if (_3 == 0)
  1053. goto <bb 6>; [INV]
  1054. else
  1055. goto <bb 7>; [INV]
  1056. <bb 6> :
  1057. # DEBUG BEGIN_STMT
  1058. pxCurrentTimerList.4_4 = pxCurrentTimerList;
  1059. _5 = pxCurrentTimerList.4_4->xListEnd.pxNext;
  1060. xNextExpireTime = _5->xItemValue;
  1061. goto <bb 8>; [INV]
  1062. <bb 7> :
  1063. # DEBUG BEGIN_STMT
  1064. xNextExpireTime = 0;
  1065. <bb 8> :
  1066. # DEBUG BEGIN_STMT
  1067. D.6654 = xNextExpireTime;
  1068. return D.6654;
  1069. }
  1070. prvProcessTimerOrBlockTask (const TickType_t xNextExpireTime, BaseType_t xListWasEmpty)
  1071. {
  1072. BaseType_t xTimerListsWereSwitched;
  1073. TickType_t xTimeNow;
  1074. long int iftmp.6;
  1075. <bb 2> :
  1076. # DEBUG BEGIN_STMT
  1077. # DEBUG BEGIN_STMT
  1078. # DEBUG BEGIN_STMT
  1079. vTaskSuspendAll ();
  1080. # DEBUG BEGIN_STMT
  1081. xTimeNow = prvSampleTimeNow (&xTimerListsWereSwitched);
  1082. # DEBUG BEGIN_STMT
  1083. xTimerListsWereSwitched.5_1 = xTimerListsWereSwitched;
  1084. if (xTimerListsWereSwitched.5_1 == 0)
  1085. goto <bb 3>; [INV]
  1086. else
  1087. goto <bb 13>; [INV]
  1088. <bb 3> :
  1089. # DEBUG BEGIN_STMT
  1090. if (xListWasEmpty == 0)
  1091. goto <bb 4>; [INV]
  1092. else
  1093. goto <bb 6>; [INV]
  1094. <bb 4> :
  1095. if (xNextExpireTime <= xTimeNow)
  1096. goto <bb 5>; [INV]
  1097. else
  1098. goto <bb 6>; [INV]
  1099. <bb 5> :
  1100. # DEBUG BEGIN_STMT
  1101. xTaskResumeAll ();
  1102. # DEBUG BEGIN_STMT
  1103. prvProcessExpiredTimer (xNextExpireTime, xTimeNow);
  1104. goto <bb 14>; [INV]
  1105. <bb 6> :
  1106. # DEBUG BEGIN_STMT
  1107. if (xListWasEmpty != 0)
  1108. goto <bb 7>; [INV]
  1109. else
  1110. goto <bb 11>; [INV]
  1111. <bb 7> :
  1112. # DEBUG BEGIN_STMT
  1113. pxOverflowTimerList.7_2 = pxOverflowTimerList;
  1114. _3 = pxOverflowTimerList.7_2->uxNumberOfItems;
  1115. if (_3 == 0)
  1116. goto <bb 8>; [INV]
  1117. else
  1118. goto <bb 9>; [INV]
  1119. <bb 8> :
  1120. iftmp.6 = 1;
  1121. goto <bb 10>; [INV]
  1122. <bb 9> :
  1123. iftmp.6 = 0;
  1124. <bb 10> :
  1125. xListWasEmpty = iftmp.6;
  1126. <bb 11> :
  1127. # DEBUG BEGIN_STMT
  1128. xTimerQueue.8_4 = xTimerQueue;
  1129. _5 = xNextExpireTime - xTimeNow;
  1130. vQueueWaitForMessageRestricted (xTimerQueue.8_4, _5, xListWasEmpty);
  1131. # DEBUG BEGIN_STMT
  1132. _6 = xTaskResumeAll ();
  1133. if (_6 == 0)
  1134. goto <bb 12>; [INV]
  1135. else
  1136. goto <bb 14>; [INV]
  1137. <bb 12> :
  1138. # DEBUG BEGIN_STMT
  1139. _7 = 3758157060B;
  1140. *_7 = 268435456;
  1141. # DEBUG BEGIN_STMT
  1142. __asm__ __volatile__("dsb" : : : "memory");
  1143. # DEBUG BEGIN_STMT
  1144. __asm__ __volatile__("isb");
  1145. # DEBUG BEGIN_STMT
  1146. goto <bb 14>; [INV]
  1147. <bb 13> :
  1148. # DEBUG BEGIN_STMT
  1149. xTaskResumeAll ();
  1150. <bb 14> :
  1151. xTimerListsWereSwitched = {CLOBBER};
  1152. return;
  1153. }
  1154. prvTimerTask (void * pvParameters)
  1155. {
  1156. BaseType_t xListWasEmpty;
  1157. TickType_t xNextExpireTime;
  1158. <bb 2> :
  1159. # DEBUG BEGIN_STMT
  1160. # DEBUG BEGIN_STMT
  1161. # DEBUG BEGIN_STMT
  1162. # DEBUG BEGIN_STMT
  1163. # DEBUG BEGIN_STMT
  1164. xNextExpireTime = prvGetNextExpireTime (&xListWasEmpty);
  1165. # DEBUG BEGIN_STMT
  1166. xListWasEmpty.1_1 = xListWasEmpty;
  1167. prvProcessTimerOrBlockTask (xNextExpireTime, xListWasEmpty.1_1);
  1168. # DEBUG BEGIN_STMT
  1169. prvProcessReceivedCommands ();
  1170. # DEBUG BEGIN_STMT
  1171. goto <bb 2>; [INV]
  1172. }
  1173. prvProcessExpiredTimer (const TickType_t xNextExpireTime, const TickType_t xTimeNow)
  1174. {
  1175. struct Timer_t * const pxTimer;
  1176. <bb 2> :
  1177. # DEBUG BEGIN_STMT
  1178. pxCurrentTimerList.13_1 = pxCurrentTimerList;
  1179. _2 = pxCurrentTimerList.13_1->xListEnd.pxNext;
  1180. pxTimer = _2->pvOwner;
  1181. # DEBUG BEGIN_STMT
  1182. _3 = &pxTimer->xTimerListItem;
  1183. uxListRemove (_3);
  1184. # DEBUG BEGIN_STMT
  1185. _4 = pxTimer->ucStatus;
  1186. _5 = (int) _4;
  1187. _6 = _5 & 4;
  1188. if (_6 != 0)
  1189. goto <bb 3>; [INV]
  1190. else
  1191. goto <bb 4>; [INV]
  1192. <bb 3> :
  1193. # DEBUG BEGIN_STMT
  1194. prvReloadTimer (pxTimer, xNextExpireTime, xTimeNow);
  1195. goto <bb 5>; [INV]
  1196. <bb 4> :
  1197. # DEBUG BEGIN_STMT
  1198. _7 = pxTimer->ucStatus;
  1199. _8 = _7 & 254;
  1200. pxTimer->ucStatus = _8;
  1201. <bb 5> :
  1202. # DEBUG BEGIN_STMT
  1203. # DEBUG BEGIN_STMT
  1204. _9 = pxTimer->pxCallbackFunction;
  1205. _9 (pxTimer);
  1206. return;
  1207. }
  1208. prvReloadTimer (struct Timer_t * const pxTimer, TickType_t xExpiredTime, const TickType_t xTimeNow)
  1209. {
  1210. <bb 2> :
  1211. # DEBUG BEGIN_STMT
  1212. goto <bb 4>; [INV]
  1213. <bb 3> :
  1214. # DEBUG BEGIN_STMT
  1215. _1 = pxTimer->xTimerPeriodInTicks;
  1216. xExpiredTime = xExpiredTime + _1;
  1217. # DEBUG BEGIN_STMT
  1218. # DEBUG BEGIN_STMT
  1219. _2 = pxTimer->pxCallbackFunction;
  1220. _2 (pxTimer);
  1221. <bb 4> :
  1222. # DEBUG BEGIN_STMT
  1223. _3 = pxTimer->xTimerPeriodInTicks;
  1224. _4 = xExpiredTime + _3;
  1225. _5 = prvInsertTimerInActiveList (pxTimer, _4, xTimeNow, xExpiredTime);
  1226. if (_5 != 0)
  1227. goto <bb 3>; [INV]
  1228. else
  1229. goto <bb 5>; [INV]
  1230. <bb 5> :
  1231. return;
  1232. }
  1233. pcTimerGetName (struct tmrTimerControl * xTimer)
  1234. {
  1235. struct Timer_t * pxTimer;
  1236. const char * D.6768;
  1237. <bb 2> :
  1238. # DEBUG BEGIN_STMT
  1239. pxTimer = xTimer;
  1240. # DEBUG BEGIN_STMT
  1241. if (xTimer == 0B)
  1242. goto <bb 3>; [INV]
  1243. else
  1244. goto <bb 5>; [INV]
  1245. <bb 3> :
  1246. # DEBUG BEGIN_STMT
  1247. vPortRaiseBASEPRI ();
  1248. <bb 4> :
  1249. # DEBUG BEGIN_STMT
  1250. # DEBUG BEGIN_STMT
  1251. # DEBUG BEGIN_STMT
  1252. goto <bb 4>; [INV]
  1253. <bb 5> :
  1254. # DEBUG BEGIN_STMT
  1255. # DEBUG BEGIN_STMT
  1256. D.6768 = pxTimer->pcTimerName;
  1257. return D.6768;
  1258. }
  1259. xTimerGetExpiryTime (struct tmrTimerControl * xTimer)
  1260. {
  1261. TickType_t xReturn;
  1262. struct Timer_t * pxTimer;
  1263. TickType_t D.6764;
  1264. <bb 2> :
  1265. # DEBUG BEGIN_STMT
  1266. pxTimer = xTimer;
  1267. # DEBUG BEGIN_STMT
  1268. # DEBUG BEGIN_STMT
  1269. if (xTimer == 0B)
  1270. goto <bb 3>; [INV]
  1271. else
  1272. goto <bb 5>; [INV]
  1273. <bb 3> :
  1274. # DEBUG BEGIN_STMT
  1275. vPortRaiseBASEPRI ();
  1276. <bb 4> :
  1277. # DEBUG BEGIN_STMT
  1278. # DEBUG BEGIN_STMT
  1279. # DEBUG BEGIN_STMT
  1280. goto <bb 4>; [INV]
  1281. <bb 5> :
  1282. # DEBUG BEGIN_STMT
  1283. # DEBUG BEGIN_STMT
  1284. xReturn = pxTimer->xTimerListItem.xItemValue;
  1285. # DEBUG BEGIN_STMT
  1286. D.6764 = xReturn;
  1287. return D.6764;
  1288. }
  1289. uxTimerGetReloadMode (struct tmrTimerControl * xTimer)
  1290. {
  1291. UBaseType_t uxReturn;
  1292. struct Timer_t * pxTimer;
  1293. UBaseType_t D.6760;
  1294. <bb 2> :
  1295. # DEBUG BEGIN_STMT
  1296. pxTimer = xTimer;
  1297. # DEBUG BEGIN_STMT
  1298. # DEBUG BEGIN_STMT
  1299. if (xTimer == 0B)
  1300. goto <bb 3>; [INV]
  1301. else
  1302. goto <bb 5>; [INV]
  1303. <bb 3> :
  1304. # DEBUG BEGIN_STMT
  1305. vPortRaiseBASEPRI ();
  1306. <bb 4> :
  1307. # DEBUG BEGIN_STMT
  1308. # DEBUG BEGIN_STMT
  1309. # DEBUG BEGIN_STMT
  1310. goto <bb 4>; [INV]
  1311. <bb 5> :
  1312. # DEBUG BEGIN_STMT
  1313. # DEBUG BEGIN_STMT
  1314. vPortEnterCritical ();
  1315. # DEBUG BEGIN_STMT
  1316. _1 = pxTimer->ucStatus;
  1317. _2 = (int) _1;
  1318. _3 = _2 & 4;
  1319. if (_3 == 0)
  1320. goto <bb 6>; [INV]
  1321. else
  1322. goto <bb 7>; [INV]
  1323. <bb 6> :
  1324. # DEBUG BEGIN_STMT
  1325. uxReturn = 0;
  1326. goto <bb 8>; [INV]
  1327. <bb 7> :
  1328. # DEBUG BEGIN_STMT
  1329. uxReturn = 1;
  1330. <bb 8> :
  1331. # DEBUG BEGIN_STMT
  1332. vPortExitCritical ();
  1333. # DEBUG BEGIN_STMT
  1334. D.6760 = uxReturn;
  1335. return D.6760;
  1336. }
  1337. vTimerSetReloadMode (struct tmrTimerControl * xTimer, const UBaseType_t uxAutoReload)
  1338. {
  1339. struct Timer_t * pxTimer;
  1340. <bb 2> :
  1341. # DEBUG BEGIN_STMT
  1342. pxTimer = xTimer;
  1343. # DEBUG BEGIN_STMT
  1344. if (xTimer == 0B)
  1345. goto <bb 3>; [INV]
  1346. else
  1347. goto <bb 5>; [INV]
  1348. <bb 3> :
  1349. # DEBUG BEGIN_STMT
  1350. vPortRaiseBASEPRI ();
  1351. <bb 4> :
  1352. # DEBUG BEGIN_STMT
  1353. # DEBUG BEGIN_STMT
  1354. # DEBUG BEGIN_STMT
  1355. goto <bb 4>; [INV]
  1356. <bb 5> :
  1357. # DEBUG BEGIN_STMT
  1358. # DEBUG BEGIN_STMT
  1359. vPortEnterCritical ();
  1360. # DEBUG BEGIN_STMT
  1361. if (uxAutoReload != 0)
  1362. goto <bb 6>; [INV]
  1363. else
  1364. goto <bb 7>; [INV]
  1365. <bb 6> :
  1366. # DEBUG BEGIN_STMT
  1367. _1 = pxTimer->ucStatus;
  1368. _2 = _1 | 4;
  1369. pxTimer->ucStatus = _2;
  1370. goto <bb 8>; [INV]
  1371. <bb 7> :
  1372. # DEBUG BEGIN_STMT
  1373. _3 = pxTimer->ucStatus;
  1374. _4 = _3 & 251;
  1375. pxTimer->ucStatus = _4;
  1376. <bb 8> :
  1377. # DEBUG BEGIN_STMT
  1378. vPortExitCritical ();
  1379. return;
  1380. }
  1381. xTimerGetPeriod (struct tmrTimerControl * xTimer)
  1382. {
  1383. struct Timer_t * pxTimer;
  1384. TickType_t D.6748;
  1385. <bb 2> :
  1386. # DEBUG BEGIN_STMT
  1387. pxTimer = xTimer;
  1388. # DEBUG BEGIN_STMT
  1389. if (xTimer == 0B)
  1390. goto <bb 3>; [INV]
  1391. else
  1392. goto <bb 5>; [INV]
  1393. <bb 3> :
  1394. # DEBUG BEGIN_STMT
  1395. vPortRaiseBASEPRI ();
  1396. <bb 4> :
  1397. # DEBUG BEGIN_STMT
  1398. # DEBUG BEGIN_STMT
  1399. # DEBUG BEGIN_STMT
  1400. goto <bb 4>; [INV]
  1401. <bb 5> :
  1402. # DEBUG BEGIN_STMT
  1403. # DEBUG BEGIN_STMT
  1404. D.6748 = pxTimer->xTimerPeriodInTicks;
  1405. return D.6748;
  1406. }
  1407. xTimerGetTimerDaemonTaskHandle ()
  1408. {
  1409. struct tskTaskControlBlock * D.6744;
  1410. <bb 2> :
  1411. # DEBUG BEGIN_STMT
  1412. xTimerTaskHandle.24_1 = xTimerTaskHandle;
  1413. if (xTimerTaskHandle.24_1 == 0B)
  1414. goto <bb 3>; [INV]
  1415. else
  1416. goto <bb 5>; [INV]
  1417. <bb 3> :
  1418. # DEBUG BEGIN_STMT
  1419. vPortRaiseBASEPRI ();
  1420. <bb 4> :
  1421. # DEBUG BEGIN_STMT
  1422. # DEBUG BEGIN_STMT
  1423. # DEBUG BEGIN_STMT
  1424. goto <bb 4>; [INV]
  1425. <bb 5> :
  1426. # DEBUG BEGIN_STMT
  1427. # DEBUG BEGIN_STMT
  1428. D.6744 = xTimerTaskHandle;
  1429. return D.6744;
  1430. }
  1431. xTimerGenericCommand (struct tmrTimerControl * xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait)
  1432. {
  1433. struct DaemonTaskMessage_t xMessage;
  1434. BaseType_t xReturn;
  1435. BaseType_t D.6739;
  1436. <bb 2> :
  1437. # DEBUG BEGIN_STMT
  1438. xReturn = 0;
  1439. # DEBUG BEGIN_STMT
  1440. # DEBUG BEGIN_STMT
  1441. if (xTimer == 0B)
  1442. goto <bb 3>; [INV]
  1443. else
  1444. goto <bb 5>; [INV]
  1445. <bb 3> :
  1446. # DEBUG BEGIN_STMT
  1447. vPortRaiseBASEPRI ();
  1448. <bb 4> :
  1449. # DEBUG BEGIN_STMT
  1450. # DEBUG BEGIN_STMT
  1451. # DEBUG BEGIN_STMT
  1452. goto <bb 4>; [INV]
  1453. <bb 5> :
  1454. # DEBUG BEGIN_STMT
  1455. # DEBUG BEGIN_STMT
  1456. xTimerQueue.20_1 = xTimerQueue;
  1457. if (xTimerQueue.20_1 != 0B)
  1458. goto <bb 6>; [INV]
  1459. else
  1460. goto <bb 11>; [INV]
  1461. <bb 6> :
  1462. # DEBUG BEGIN_STMT
  1463. xMessage.xMessageID = xCommandID;
  1464. # DEBUG BEGIN_STMT
  1465. xMessage.u.xTimerParameters.xMessageValue = xOptionalValue;
  1466. # DEBUG BEGIN_STMT
  1467. xMessage.u.xTimerParameters.pxTimer = xTimer;
  1468. # DEBUG BEGIN_STMT
  1469. if (xCommandID <= 5)
  1470. goto <bb 7>; [INV]
  1471. else
  1472. goto <bb 10>; [INV]
  1473. <bb 7> :
  1474. # DEBUG BEGIN_STMT
  1475. _2 = xTaskGetSchedulerState ();
  1476. if (_2 == 2)
  1477. goto <bb 8>; [INV]
  1478. else
  1479. goto <bb 9>; [INV]
  1480. <bb 8> :
  1481. # DEBUG BEGIN_STMT
  1482. xTimerQueue.21_3 = xTimerQueue;
  1483. xReturn = xQueueGenericSend (xTimerQueue.21_3, &xMessage, xTicksToWait, 0);
  1484. goto <bb 11>; [INV]
  1485. <bb 9> :
  1486. # DEBUG BEGIN_STMT
  1487. xTimerQueue.22_4 = xTimerQueue;
  1488. xReturn = xQueueGenericSend (xTimerQueue.22_4, &xMessage, 0, 0);
  1489. goto <bb 11>; [INV]
  1490. <bb 10> :
  1491. # DEBUG BEGIN_STMT
  1492. xTimerQueue.23_5 = xTimerQueue;
  1493. xReturn = xQueueGenericSendFromISR (xTimerQueue.23_5, &xMessage, pxHigherPriorityTaskWoken, 0);
  1494. <bb 11> :
  1495. # DEBUG BEGIN_STMT
  1496. # DEBUG BEGIN_STMT
  1497. D.6739 = xReturn;
  1498. xMessage = {CLOBBER};
  1499. return D.6739;
  1500. }
  1501. 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)
  1502. {
  1503. <bb 2> :
  1504. # DEBUG BEGIN_STMT
  1505. if (xTimerPeriodInTicks == 0)
  1506. goto <bb 3>; [INV]
  1507. else
  1508. goto <bb 5>; [INV]
  1509. <bb 3> :
  1510. # DEBUG BEGIN_STMT
  1511. vPortRaiseBASEPRI ();
  1512. <bb 4> :
  1513. # DEBUG BEGIN_STMT
  1514. # DEBUG BEGIN_STMT
  1515. # DEBUG BEGIN_STMT
  1516. goto <bb 4>; [INV]
  1517. <bb 5> :
  1518. # DEBUG BEGIN_STMT
  1519. # DEBUG BEGIN_STMT
  1520. prvCheckForValidListAndQueue ();
  1521. # DEBUG BEGIN_STMT
  1522. pxNewTimer->pcTimerName = pcTimerName;
  1523. # DEBUG BEGIN_STMT
  1524. pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks;
  1525. # DEBUG BEGIN_STMT
  1526. pxNewTimer->pvTimerID = pvTimerID;
  1527. # DEBUG BEGIN_STMT
  1528. pxNewTimer->pxCallbackFunction = pxCallbackFunction;
  1529. # DEBUG BEGIN_STMT
  1530. _1 = &pxNewTimer->xTimerListItem;
  1531. vListInitialiseItem (_1);
  1532. # DEBUG BEGIN_STMT
  1533. if (uxAutoReload != 0)
  1534. goto <bb 6>; [INV]
  1535. else
  1536. goto <bb 7>; [INV]
  1537. <bb 6> :
  1538. # DEBUG BEGIN_STMT
  1539. _2 = pxNewTimer->ucStatus;
  1540. _3 = _2 | 4;
  1541. pxNewTimer->ucStatus = _3;
  1542. <bb 7> :
  1543. # DEBUG BEGIN_STMT
  1544. return;
  1545. }
  1546. xTimerCreate (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction)
  1547. {
  1548. struct Timer_t * pxNewTimer;
  1549. struct tmrTimerControl * D.6722;
  1550. <bb 2> :
  1551. # DEBUG BEGIN_STMT
  1552. # DEBUG BEGIN_STMT
  1553. pxNewTimer = pvPortMalloc (44);
  1554. # DEBUG BEGIN_STMT
  1555. if (pxNewTimer != 0B)
  1556. goto <bb 3>; [INV]
  1557. else
  1558. goto <bb 4>; [INV]
  1559. <bb 3> :
  1560. # DEBUG BEGIN_STMT
  1561. pxNewTimer->ucStatus = 0;
  1562. # DEBUG BEGIN_STMT
  1563. prvInitialiseNewTimer (pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer);
  1564. <bb 4> :
  1565. # DEBUG BEGIN_STMT
  1566. D.6722 = pxNewTimer;
  1567. return D.6722;
  1568. }
  1569. xTimerCreateTimerTask ()
  1570. {
  1571. BaseType_t xReturn;
  1572. BaseType_t D.6645;
  1573. <bb 2> :
  1574. # DEBUG BEGIN_STMT
  1575. xReturn = 0;
  1576. # DEBUG BEGIN_STMT
  1577. prvCheckForValidListAndQueue ();
  1578. # DEBUG BEGIN_STMT
  1579. xTimerQueue.0_1 = xTimerQueue;
  1580. if (xTimerQueue.0_1 != 0B)
  1581. goto <bb 3>; [INV]
  1582. else
  1583. goto <bb 4>; [INV]
  1584. <bb 3> :
  1585. # DEBUG BEGIN_STMT
  1586. xReturn = xTaskCreate (prvTimerTask, "Tmr Svc", 180, 0B, 2, &xTimerTaskHandle);
  1587. <bb 4> :
  1588. # DEBUG BEGIN_STMT
  1589. # DEBUG BEGIN_STMT
  1590. if (xReturn == 0)
  1591. goto <bb 5>; [INV]
  1592. else
  1593. goto <bb 7>; [INV]
  1594. <bb 5> :
  1595. # DEBUG BEGIN_STMT
  1596. vPortRaiseBASEPRI ();
  1597. <bb 6> :
  1598. # DEBUG BEGIN_STMT
  1599. # DEBUG BEGIN_STMT
  1600. # DEBUG BEGIN_STMT
  1601. goto <bb 6>; [INV]
  1602. <bb 7> :
  1603. # DEBUG BEGIN_STMT
  1604. # DEBUG BEGIN_STMT
  1605. D.6645 = xReturn;
  1606. return D.6645;
  1607. }
  1608. __attribute__((always_inline))
  1609. vPortRaiseBASEPRI ()
  1610. {
  1611. uint32_t ulNewBASEPRI;
  1612. <bb 2> :
  1613. # DEBUG BEGIN_STMT
  1614. # DEBUG BEGIN_STMT
  1615. __asm__ __volatile__(" mov %0, %1
  1616. msr basepri, %0
  1617. isb
  1618. dsb
  1619. " : "=r" ulNewBASEPRI : "i" 16 : "memory");
  1620. return;
  1621. }