timers.c.016i.visibility 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615
  1. Marking local functions: 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. vQueueAddToRegistry/56 (vQueueAddToRegistry) @06c1f2a0
  9. Type: function
  10. Visibility: external public
  11. References:
  12. Referring:
  13. Availability: not_available
  14. Function flags:
  15. Called by: prvCheckForValidListAndQueue/29
  16. Calls:
  17. xQueueGenericCreate/55 (xQueueGenericCreate) @06c1f1c0
  18. Type: function
  19. Visibility: external public
  20. References:
  21. Referring:
  22. Availability: not_available
  23. Function flags:
  24. Called by: prvCheckForValidListAndQueue/29
  25. Calls:
  26. vListInitialise/54 (vListInitialise) @06c1f000
  27. Type: function
  28. Visibility: external public
  29. References:
  30. Referring:
  31. Availability: not_available
  32. Function flags:
  33. Called by: prvCheckForValidListAndQueue/29 prvCheckForValidListAndQueue/29
  34. Calls:
  35. xQueueReceive/53 (xQueueReceive) @06c10c40
  36. Type: function
  37. Visibility: external public
  38. References:
  39. Referring:
  40. Availability: not_available
  41. Function flags:
  42. Called by: prvProcessReceivedCommands/27
  43. Calls:
  44. vPortFree/52 (vPortFree) @06c10b60
  45. Type: function
  46. Visibility: external public
  47. References:
  48. Referring:
  49. Availability: not_available
  50. Function flags:
  51. Called by: prvProcessReceivedCommands/27
  52. Calls:
  53. vListInsert/51 (vListInsert) @06c107e0
  54. Type: function
  55. Visibility: external public
  56. References:
  57. Referring:
  58. Availability: not_available
  59. Function flags:
  60. Called by: prvInsertTimerInActiveList/26 prvInsertTimerInActiveList/26
  61. Calls:
  62. xLastTime.6552/50 (xLastTime) @06c128b8
  63. Type: variable definition analyzed
  64. Visibility: force_output no_reorder prevailing_def_ironly
  65. References:
  66. Referring: prvSampleTimeNow/25 (read)prvSampleTimeNow/25 (write)
  67. Availability: available
  68. Varpool flags: initialized
  69. xTaskGetTickCount/49 (xTaskGetTickCount) @06c10620
  70. Type: function
  71. Visibility: external public
  72. References:
  73. Referring:
  74. Availability: not_available
  75. Function flags:
  76. Called by: prvSampleTimeNow/25
  77. Calls:
  78. vQueueWaitForMessageRestricted/48 (vQueueWaitForMessageRestricted) @06c10380
  79. Type: function
  80. Visibility: external public
  81. References:
  82. Referring:
  83. Availability: not_available
  84. Function flags:
  85. Called by: prvProcessTimerOrBlockTask/23
  86. Calls:
  87. xTaskResumeAll/47 (xTaskResumeAll) @06c102a0
  88. Type: function
  89. Visibility: external public
  90. References:
  91. Referring:
  92. Availability: not_available
  93. Function flags:
  94. Called by: prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23
  95. Calls:
  96. vTaskSuspendAll/46 (vTaskSuspendAll) @06c101c0
  97. Type: function
  98. Visibility: external public
  99. References:
  100. Referring:
  101. Availability: not_available
  102. Function flags:
  103. Called by: prvProcessTimerOrBlockTask/23
  104. Calls:
  105. uxListRemove/45 (uxListRemove) @06bdfee0
  106. Type: function
  107. Visibility: external public
  108. References:
  109. Referring:
  110. Availability: not_available
  111. Function flags:
  112. Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21
  113. Calls:
  114. vPortExitCritical/44 (vPortExitCritical) @06bdf9a0
  115. Type: function
  116. Visibility: external public
  117. References:
  118. Referring:
  119. Availability: not_available
  120. Function flags:
  121. Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 prvCheckForValidListAndQueue/29 uxTimerGetReloadMode/17 vTimerSetReloadMode/16
  122. Calls:
  123. vPortEnterCritical/43 (vPortEnterCritical) @06bdf8c0
  124. Type: function
  125. Visibility: external public
  126. References:
  127. Referring:
  128. Availability: not_available
  129. Function flags:
  130. Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 prvCheckForValidListAndQueue/29 uxTimerGetReloadMode/17 vTimerSetReloadMode/16
  131. Calls:
  132. xQueueGenericSendFromISR/42 (xQueueGenericSendFromISR) @06bdf540
  133. Type: function
  134. Visibility: external public
  135. References:
  136. Referring:
  137. Availability: not_available
  138. Function flags:
  139. Called by: xTimerPendFunctionCallFromISR/33 xTimerGenericCommand/13
  140. Calls:
  141. xQueueGenericSend/41 (xQueueGenericSend) @06bdf460
  142. Type: function
  143. Visibility: external public
  144. References:
  145. Referring:
  146. Availability: not_available
  147. Function flags:
  148. Called by: xTimerPendFunctionCall/34 xTimerGenericCommand/13 xTimerGenericCommand/13
  149. Calls:
  150. xTaskGetSchedulerState/40 (xTaskGetSchedulerState) @06bdf380
  151. Type: function
  152. Visibility: external public
  153. References:
  154. Referring:
  155. Availability: not_available
  156. Function flags:
  157. Called by: xTimerGenericCommand/13
  158. Calls:
  159. vListInitialiseItem/39 (vListInitialiseItem) @06bdf1c0
  160. Type: function
  161. Visibility: external public
  162. References:
  163. Referring:
  164. Availability: not_available
  165. Function flags:
  166. Called by: prvInitialiseNewTimer/12
  167. Calls:
  168. pvPortMalloc/38 (pvPortMalloc) @06bdf000
  169. Type: function
  170. Visibility: external public
  171. References:
  172. Referring:
  173. Availability: not_available
  174. Function flags:
  175. Called by: xTimerCreate/11
  176. Calls:
  177. xTaskCreate/37 (xTaskCreate) @06bd6380
  178. Type: function
  179. Visibility: external public
  180. References:
  181. Referring:
  182. Availability: not_available
  183. Function flags:
  184. Called by: xTimerCreateTimerTask/10
  185. Calls:
  186. vTimerSetTimerNumber/36 (vTimerSetTimerNumber) @06bd6c40
  187. Type: function definition analyzed
  188. Visibility: force_output externally_visible no_reorder public
  189. References:
  190. Referring:
  191. Availability: available
  192. Function flags: body
  193. Called by:
  194. Calls:
  195. uxTimerGetTimerNumber/35 (uxTimerGetTimerNumber) @06bd69a0
  196. Type: function definition analyzed
  197. Visibility: force_output externally_visible no_reorder public
  198. References:
  199. Referring:
  200. Availability: available
  201. Function flags: body
  202. Called by:
  203. Calls:
  204. xTimerPendFunctionCall/34 (xTimerPendFunctionCall) @06bd6700
  205. Type: function definition analyzed
  206. Visibility: force_output externally_visible no_reorder public
  207. References: xTimerQueue/8 (read)xTimerQueue/8 (read)
  208. Referring:
  209. Availability: available
  210. Function flags: body
  211. Called by:
  212. Calls: xQueueGenericSend/41 vPortRaiseBASEPRI/1
  213. xTimerPendFunctionCallFromISR/33 (xTimerPendFunctionCallFromISR) @06bd62a0
  214. Type: function definition analyzed
  215. Visibility: force_output externally_visible no_reorder public
  216. References: xTimerQueue/8 (read)
  217. Referring:
  218. Availability: available
  219. Function flags: body
  220. Called by:
  221. Calls: xQueueGenericSendFromISR/42
  222. vTimerSetTimerID/32 (vTimerSetTimerID) @06bcfd20
  223. Type: function definition analyzed
  224. Visibility: force_output externally_visible no_reorder public
  225. References:
  226. Referring:
  227. Availability: available
  228. Function flags: body
  229. Called by:
  230. Calls: vPortExitCritical/44 vPortEnterCritical/43 vPortRaiseBASEPRI/1
  231. pvTimerGetTimerID/31 (pvTimerGetTimerID) @06bcf2a0
  232. Type: function definition analyzed
  233. Visibility: force_output externally_visible no_reorder public
  234. References:
  235. Referring:
  236. Availability: available
  237. Function flags: body
  238. Called by:
  239. Calls: vPortExitCritical/44 vPortEnterCritical/43 vPortRaiseBASEPRI/1
  240. xTimerIsTimerActive/30 (xTimerIsTimerActive) @06bcfc40
  241. Type: function definition analyzed
  242. Visibility: force_output externally_visible no_reorder public
  243. References:
  244. Referring:
  245. Availability: available
  246. Function flags: body
  247. Called by:
  248. Calls: vPortExitCritical/44 vPortEnterCritical/43 vPortRaiseBASEPRI/1
  249. prvCheckForValidListAndQueue/29 (prvCheckForValidListAndQueue) @06bcf8c0
  250. Type: function definition analyzed
  251. Visibility: force_output no_reorder 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: available
  255. Function flags: body
  256. Called by: prvInitialiseNewTimer/12 xTimerCreateTimerTask/10
  257. Calls: vPortExitCritical/44 vQueueAddToRegistry/56 xQueueGenericCreate/55 vListInitialise/54 vListInitialise/54 vPortEnterCritical/43
  258. prvSwitchTimerLists/28 (prvSwitchTimerLists) @06bcf540
  259. Type: function definition analyzed
  260. Visibility: force_output no_reorder 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: available
  264. Function flags: body
  265. Called by: prvSampleTimeNow/25
  266. Calls: prvProcessExpiredTimer/21
  267. prvProcessReceivedCommands/27 (prvProcessReceivedCommands) @06bcf1c0
  268. Type: function definition analyzed
  269. Visibility: force_output no_reorder prevailing_def_ironly
  270. References: xTimerQueue/8 (read)
  271. Referring:
  272. Availability: available
  273. Function flags: body
  274. Called by: prvTimerTask/22
  275. Calls: xQueueReceive/53 vPortFree/52 prvInsertTimerInActiveList/26 vPortRaiseBASEPRI/1 prvReloadTimer/20 prvInsertTimerInActiveList/26 prvSampleTimeNow/25 uxListRemove/45 vPortRaiseBASEPRI/1
  276. Indirect call
  277. Indirect call
  278. prvInsertTimerInActiveList/26 (prvInsertTimerInActiveList) @06b6ec40
  279. Type: function definition analyzed
  280. Visibility: force_output no_reorder prevailing_def_ironly
  281. References: pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (read)
  282. Referring:
  283. Availability: available
  284. Function flags: body
  285. Called by: prvProcessReceivedCommands/27 prvProcessReceivedCommands/27 prvReloadTimer/20
  286. Calls: vListInsert/51 vListInsert/51
  287. prvSampleTimeNow/25 (prvSampleTimeNow) @06b6ee00
  288. Type: function definition analyzed
  289. Visibility: force_output no_reorder prevailing_def_ironly
  290. References: xLastTime.6552/50 (read)xLastTime.6552/50 (write)
  291. Referring:
  292. Availability: available
  293. Function flags: body
  294. Called by: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23
  295. Calls: prvSwitchTimerLists/28 xTaskGetTickCount/49
  296. prvGetNextExpireTime/24 (prvGetNextExpireTime) @06b6eb60
  297. Type: function definition analyzed
  298. Visibility: force_output no_reorder prevailing_def_ironly
  299. References: pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)
  300. Referring:
  301. Availability: available
  302. Function flags: body
  303. Called by: prvTimerTask/22
  304. Calls:
  305. prvProcessTimerOrBlockTask/23 (prvProcessTimerOrBlockTask) @06b6e7e0
  306. Type: function definition analyzed
  307. Visibility: force_output no_reorder prevailing_def_ironly
  308. References: pxOverflowTimerList/7 (read)xTimerQueue/8 (read)
  309. Referring:
  310. Availability: available
  311. Function flags: body
  312. Called by: prvTimerTask/22
  313. Calls: xTaskResumeAll/47 xTaskResumeAll/47 vQueueWaitForMessageRestricted/48 prvProcessExpiredTimer/21 xTaskResumeAll/47 prvSampleTimeNow/25 vTaskSuspendAll/46
  314. prvTimerTask/22 (prvTimerTask) @06b6e380
  315. Type: function definition analyzed
  316. Visibility: force_output no_reorder prevailing_def_ironly
  317. Address is taken.
  318. References:
  319. Referring: xTimerCreateTimerTask/10 (addr)
  320. Availability: available
  321. Function flags: body
  322. Called by:
  323. Calls: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23 prvGetNextExpireTime/24
  324. prvProcessExpiredTimer/21 (prvProcessExpiredTimer) @06b6e0e0
  325. Type: function definition analyzed
  326. Visibility: force_output no_reorder prevailing_def_ironly
  327. References: pxCurrentTimerList/6 (read)
  328. Referring:
  329. Availability: available
  330. Function flags: body
  331. Called by: prvSwitchTimerLists/28 prvProcessTimerOrBlockTask/23
  332. Calls: prvReloadTimer/20 uxListRemove/45
  333. Indirect call
  334. prvReloadTimer/20 (prvReloadTimer) @06b68a80
  335. Type: function definition analyzed
  336. Visibility: force_output no_reorder prevailing_def_ironly
  337. References:
  338. Referring:
  339. Availability: available
  340. Function flags: body
  341. Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21
  342. Calls: prvInsertTimerInActiveList/26
  343. Indirect call
  344. pcTimerGetName/19 (pcTimerGetName) @06b68380
  345. Type: function definition analyzed
  346. Visibility: force_output externally_visible no_reorder public
  347. References:
  348. Referring:
  349. Availability: available
  350. Function flags: body
  351. Called by:
  352. Calls: vPortRaiseBASEPRI/1
  353. xTimerGetExpiryTime/18 (xTimerGetExpiryTime) @06b68d20
  354. Type: function definition analyzed
  355. Visibility: force_output externally_visible no_reorder public
  356. References:
  357. Referring:
  358. Availability: available
  359. Function flags: body
  360. Called by:
  361. Calls: vPortRaiseBASEPRI/1
  362. uxTimerGetReloadMode/17 (uxTimerGetReloadMode) @06b689a0
  363. Type: function definition analyzed
  364. Visibility: force_output externally_visible no_reorder public
  365. References:
  366. Referring:
  367. Availability: available
  368. Function flags: body
  369. Called by:
  370. Calls: vPortExitCritical/44 vPortEnterCritical/43 vPortRaiseBASEPRI/1
  371. vTimerSetReloadMode/16 (vTimerSetReloadMode) @06b68620
  372. Type: function definition analyzed
  373. Visibility: force_output externally_visible no_reorder public
  374. References:
  375. Referring:
  376. Availability: available
  377. Function flags: body
  378. Called by:
  379. Calls: vPortExitCritical/44 vPortEnterCritical/43 vPortRaiseBASEPRI/1
  380. xTimerGetPeriod/15 (xTimerGetPeriod) @06b682a0
  381. Type: function definition analyzed
  382. Visibility: force_output externally_visible no_reorder public
  383. References:
  384. Referring:
  385. Availability: available
  386. Function flags: body
  387. Called by:
  388. Calls: vPortRaiseBASEPRI/1
  389. xTimerGetTimerDaemonTaskHandle/14 (xTimerGetTimerDaemonTaskHandle) @06bc5c40
  390. Type: function definition analyzed
  391. Visibility: force_output externally_visible no_reorder public
  392. References: xTimerTaskHandle/9 (read)xTimerTaskHandle/9 (read)
  393. Referring:
  394. Availability: available
  395. Function flags: body
  396. Called by:
  397. Calls: vPortRaiseBASEPRI/1
  398. xTimerGenericCommand/13 (xTimerGenericCommand) @06bc5620
  399. Type: function definition analyzed
  400. Visibility: force_output externally_visible no_reorder public
  401. References: xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read)
  402. Referring:
  403. Availability: available
  404. Function flags: body
  405. Called by:
  406. Calls: xQueueGenericSendFromISR/42 xQueueGenericSend/41 xQueueGenericSend/41 xTaskGetSchedulerState/40 vPortRaiseBASEPRI/1
  407. prvInitialiseNewTimer/12 (prvInitialiseNewTimer) @06bc5b60
  408. Type: function definition analyzed
  409. Visibility: force_output no_reorder prevailing_def_ironly
  410. References:
  411. Referring:
  412. Availability: available
  413. Function flags: body
  414. Called by: xTimerCreate/11
  415. Calls: vListInitialiseItem/39 prvCheckForValidListAndQueue/29 vPortRaiseBASEPRI/1
  416. xTimerCreate/11 (xTimerCreate) @06bc57e0
  417. Type: function definition analyzed
  418. Visibility: force_output externally_visible no_reorder public
  419. References:
  420. Referring:
  421. Availability: available
  422. Function flags: body
  423. Called by:
  424. Calls: prvInitialiseNewTimer/12 pvPortMalloc/38
  425. xTimerCreateTimerTask/10 (xTimerCreateTimerTask) @06bc5540
  426. Type: function definition analyzed
  427. Visibility: force_output externally_visible no_reorder public
  428. References: xTimerQueue/8 (read)prvTimerTask/22 (addr)xTimerTaskHandle/9 (addr)
  429. Referring:
  430. Availability: available
  431. Function flags: body
  432. Called by:
  433. Calls: vPortRaiseBASEPRI/1 xTaskCreate/37 prvCheckForValidListAndQueue/29
  434. xTimerTaskHandle/9 (xTimerTaskHandle) @06bbf678
  435. Type: variable definition analyzed
  436. Visibility: force_output no_reorder 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) @06bbf5e8
  442. Type: variable definition analyzed
  443. Visibility: force_output no_reorder prevailing_def_ironly
  444. References:
  445. Referring: xTimerCreateTimerTask/10 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)prvProcessTimerOrBlockTask/23 (read)prvProcessReceivedCommands/27 (read)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (write)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (read)xTimerPendFunctionCallFromISR/33 (read)xTimerPendFunctionCall/34 (read)xTimerPendFunctionCall/34 (read)
  446. Availability: available
  447. Varpool flags: initialized
  448. pxOverflowTimerList/7 (pxOverflowTimerList) @06bbf558
  449. Type: variable definition analyzed
  450. Visibility: force_output no_reorder prevailing_def_ironly
  451. References:
  452. Referring: prvProcessTimerOrBlockTask/23 (read)prvInsertTimerInActiveList/26 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (write)prvCheckForValidListAndQueue/29 (write)
  453. Availability: available
  454. Varpool flags:
  455. pxCurrentTimerList/6 (pxCurrentTimerList) @06bbf4c8
  456. Type: variable definition analyzed
  457. Visibility: force_output no_reorder prevailing_def_ironly
  458. References:
  459. Referring: prvProcessExpiredTimer/21 (read)prvGetNextExpireTime/24 (read)prvGetNextExpireTime/24 (read)prvInsertTimerInActiveList/26 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (write)prvCheckForValidListAndQueue/29 (write)
  460. Availability: available
  461. Varpool flags:
  462. xActiveTimerList2/5 (xActiveTimerList2) @06bbf438
  463. Type: variable definition analyzed
  464. Visibility: force_output no_reorder prevailing_def_ironly
  465. References:
  466. Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr)
  467. Availability: available
  468. Varpool flags:
  469. xActiveTimerList1/4 (xActiveTimerList1) @06bbf3a8
  470. Type: variable definition analyzed
  471. Visibility: force_output no_reorder prevailing_def_ironly
  472. References:
  473. Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr)
  474. Availability: available
  475. Varpool flags:
  476. vPortRaiseBASEPRI/1 (vPortRaiseBASEPRI) @06affd20
  477. Type: function definition analyzed
  478. Visibility: no_reorder prevailing_def_ironly
  479. References:
  480. Referring:
  481. Availability: local
  482. Function flags: body local
  483. Called by: xTimerPendFunctionCall/34 vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 prvProcessReceivedCommands/27 prvProcessReceivedCommands/27 pcTimerGetName/19 xTimerGetExpiryTime/18 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 xTimerGetPeriod/15 xTimerGetTimerDaemonTaskHandle/14 xTimerGenericCommand/13 prvInitialiseNewTimer/12 xTimerCreateTimerTask/10
  484. Calls:
  485. vTimerSetTimerNumber (struct tmrTimerControl * xTimer, UBaseType_t uxTimerNumber)
  486. {
  487. <bb 2> :
  488. MEM[(struct Timer_t *)xTimer].uxTimerNumber = uxTimerNumber;
  489. return;
  490. }
  491. uxTimerGetTimerNumber (struct tmrTimerControl * xTimer)
  492. {
  493. UBaseType_t D.6791;
  494. <bb 2> :
  495. D.6791 = MEM[(struct Timer_t *)xTimer].uxTimerNumber;
  496. <bb 3> :
  497. <L0>:
  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. xTimerQueue.26_1 = xTimerQueue;
  507. if (xTimerQueue.26_1 == 0B)
  508. goto <bb 3>; [INV]
  509. else
  510. goto <bb 5>; [INV]
  511. <bb 3> :
  512. vPortRaiseBASEPRI ();
  513. <bb 4> :
  514. goto <bb 4>; [INV]
  515. <bb 5> :
  516. xMessage.xMessageID = -1;
  517. xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend;
  518. xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1;
  519. xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2;
  520. xTimerQueue.27_2 = xTimerQueue;
  521. xReturn = xQueueGenericSend (xTimerQueue.27_2, &xMessage, xTicksToWait, 0);
  522. D.6788 = xReturn;
  523. xMessage = {CLOBBER};
  524. <bb 6> :
  525. <L4>:
  526. return D.6788;
  527. }
  528. xTimerPendFunctionCallFromISR (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, BaseType_t * pxHigherPriorityTaskWoken)
  529. {
  530. BaseType_t xReturn;
  531. struct DaemonTaskMessage_t xMessage;
  532. BaseType_t D.6783;
  533. <bb 2> :
  534. xMessage.xMessageID = -2;
  535. xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend;
  536. xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1;
  537. xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2;
  538. xTimerQueue.25_1 = xTimerQueue;
  539. xReturn = xQueueGenericSendFromISR (xTimerQueue.25_1, &xMessage, pxHigherPriorityTaskWoken, 0);
  540. D.6783 = xReturn;
  541. xMessage = {CLOBBER};
  542. <bb 3> :
  543. <L1>:
  544. return D.6783;
  545. }
  546. vTimerSetTimerID (struct tmrTimerControl * xTimer, void * pvNewID)
  547. {
  548. struct Timer_t * const pxTimer;
  549. <bb 2> :
  550. pxTimer = xTimer;
  551. if (xTimer == 0B)
  552. goto <bb 3>; [INV]
  553. else
  554. goto <bb 5>; [INV]
  555. <bb 3> :
  556. vPortRaiseBASEPRI ();
  557. <bb 4> :
  558. goto <bb 4>; [INV]
  559. <bb 5> :
  560. vPortEnterCritical ();
  561. pxTimer->pvTimerID = pvNewID;
  562. vPortExitCritical ();
  563. return;
  564. }
  565. pvTimerGetTimerID (struct tmrTimerControl * const xTimer)
  566. {
  567. void * pvReturn;
  568. struct Timer_t * const pxTimer;
  569. void * D.6779;
  570. <bb 2> :
  571. pxTimer = xTimer;
  572. if (xTimer == 0B)
  573. goto <bb 3>; [INV]
  574. else
  575. goto <bb 5>; [INV]
  576. <bb 3> :
  577. vPortRaiseBASEPRI ();
  578. <bb 4> :
  579. goto <bb 4>; [INV]
  580. <bb 5> :
  581. vPortEnterCritical ();
  582. pvReturn = pxTimer->pvTimerID;
  583. vPortExitCritical ();
  584. D.6779 = pvReturn;
  585. <bb 6> :
  586. <L3>:
  587. return D.6779;
  588. }
  589. xTimerIsTimerActive (struct tmrTimerControl * xTimer)
  590. {
  591. struct Timer_t * pxTimer;
  592. BaseType_t xReturn;
  593. BaseType_t D.6775;
  594. <bb 2> :
  595. pxTimer = xTimer;
  596. if (xTimer == 0B)
  597. goto <bb 3>; [INV]
  598. else
  599. goto <bb 5>; [INV]
  600. <bb 3> :
  601. vPortRaiseBASEPRI ();
  602. <bb 4> :
  603. goto <bb 4>; [INV]
  604. <bb 5> :
  605. vPortEnterCritical ();
  606. _1 = pxTimer->ucStatus;
  607. _2 = (int) _1;
  608. _3 = _2 & 1;
  609. if (_3 == 0)
  610. goto <bb 6>; [INV]
  611. else
  612. goto <bb 7>; [INV]
  613. <bb 6> :
  614. xReturn = 0;
  615. goto <bb 8>; [INV]
  616. <bb 7> :
  617. xReturn = 1;
  618. <bb 8> :
  619. vPortExitCritical ();
  620. D.6775 = xReturn;
  621. <bb 9> :
  622. <L6>:
  623. return D.6775;
  624. }
  625. prvCheckForValidListAndQueue ()
  626. {
  627. <bb 2> :
  628. vPortEnterCritical ();
  629. xTimerQueue.22_1 = xTimerQueue;
  630. if (xTimerQueue.22_1 == 0B)
  631. goto <bb 3>; [INV]
  632. else
  633. goto <bb 5>; [INV]
  634. <bb 3> :
  635. vListInitialise (&xActiveTimerList1);
  636. vListInitialise (&xActiveTimerList2);
  637. pxCurrentTimerList = &xActiveTimerList1;
  638. pxOverflowTimerList = &xActiveTimerList2;
  639. _2 = xQueueGenericCreate (10, 16, 0);
  640. xTimerQueue = _2;
  641. xTimerQueue.23_3 = xTimerQueue;
  642. if (xTimerQueue.23_3 != 0B)
  643. goto <bb 4>; [INV]
  644. else
  645. goto <bb 5>; [INV]
  646. <bb 4> :
  647. xTimerQueue.24_4 = xTimerQueue;
  648. vQueueAddToRegistry (xTimerQueue.24_4, "TmrQ");
  649. <bb 5> :
  650. vPortExitCritical ();
  651. return;
  652. }
  653. prvSwitchTimerLists ()
  654. {
  655. struct List_t * pxTemp;
  656. TickType_t xNextExpireTime;
  657. <bb 2> :
  658. goto <bb 4>; [INV]
  659. <bb 3> :
  660. pxCurrentTimerList.19_1 = pxCurrentTimerList;
  661. _2 = pxCurrentTimerList.19_1->xListEnd.pxNext;
  662. xNextExpireTime = _2->xItemValue;
  663. prvProcessExpiredTimer (xNextExpireTime, 4294967295);
  664. <bb 4> :
  665. pxCurrentTimerList.20_3 = pxCurrentTimerList;
  666. _4 = pxCurrentTimerList.20_3->uxNumberOfItems;
  667. if (_4 != 0)
  668. goto <bb 3>; [INV]
  669. else
  670. goto <bb 5>; [INV]
  671. <bb 5> :
  672. pxTemp = pxCurrentTimerList;
  673. pxOverflowTimerList.21_5 = pxOverflowTimerList;
  674. pxCurrentTimerList = pxOverflowTimerList.21_5;
  675. pxOverflowTimerList = pxTemp;
  676. return;
  677. }
  678. prvProcessReceivedCommands ()
  679. {
  680. const struct CallbackParameters_t * const pxCallback;
  681. TickType_t xTimeNow;
  682. BaseType_t xTimerListsWereSwitched;
  683. struct Timer_t * pxTimer;
  684. struct DaemonTaskMessage_t xMessage;
  685. <bb 2> :
  686. goto <bb 28>; [INV]
  687. <bb 3> :
  688. _1 = xMessage.xMessageID;
  689. if (_1 < 0)
  690. goto <bb 4>; [INV]
  691. else
  692. goto <bb 8>; [INV]
  693. <bb 4> :
  694. pxCallback = &xMessage.u.xCallbackParameters;
  695. if (pxCallback == 0B)
  696. goto <bb 5>; [INV]
  697. else
  698. goto <bb 7>; [INV]
  699. <bb 5> :
  700. vPortRaiseBASEPRI ();
  701. <bb 6> :
  702. goto <bb 6>; [INV]
  703. <bb 7> :
  704. _2 = pxCallback->pxCallbackFunction;
  705. _3 = pxCallback->pvParameter1;
  706. _4 = pxCallback->ulParameter2;
  707. _2 (_3, _4);
  708. <bb 8> :
  709. _5 = xMessage.xMessageID;
  710. if (_5 >= 0)
  711. goto <bb 9>; [INV]
  712. else
  713. goto <bb 28>; [INV]
  714. <bb 9> :
  715. pxTimer = xMessage.u.xTimerParameters.pxTimer;
  716. _6 = pxTimer->xTimerListItem.pvContainer;
  717. if (_6 != 0B)
  718. goto <bb 10>; [INV]
  719. else
  720. goto <bb 11>; [INV]
  721. <bb 10> :
  722. _7 = &pxTimer->xTimerListItem;
  723. uxListRemove (_7);
  724. <bb 11> :
  725. xTimeNow = prvSampleTimeNow (&xTimerListsWereSwitched);
  726. _8 = xMessage.xMessageID;
  727. switch (_8) <default: <L32> [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]>
  728. <bb 12> :
  729. <L11>:
  730. _9 = pxTimer->ucStatus;
  731. _10 = _9 | 1;
  732. pxTimer->ucStatus = _10;
  733. _11 = xMessage.u.xTimerParameters.xMessageValue;
  734. _12 = pxTimer->xTimerPeriodInTicks;
  735. _13 = _11 + _12;
  736. _14 = xMessage.u.xTimerParameters.xMessageValue;
  737. _15 = prvInsertTimerInActiveList (pxTimer, _13, xTimeNow, _14);
  738. if (_15 != 0)
  739. goto <bb 13>; [INV]
  740. else
  741. goto <bb 17>; [INV]
  742. <bb 13> :
  743. _16 = pxTimer->ucStatus;
  744. _17 = (int) _16;
  745. _18 = _17 & 4;
  746. if (_18 != 0)
  747. goto <bb 14>; [INV]
  748. else
  749. goto <bb 15>; [INV]
  750. <bb 14> :
  751. _19 = xMessage.u.xTimerParameters.xMessageValue;
  752. _20 = pxTimer->xTimerPeriodInTicks;
  753. _21 = _19 + _20;
  754. prvReloadTimer (pxTimer, _21, xTimeNow);
  755. goto <bb 16>; [INV]
  756. <bb 15> :
  757. _22 = pxTimer->ucStatus;
  758. _23 = _22 & 254;
  759. pxTimer->ucStatus = _23;
  760. <bb 16> :
  761. _24 = pxTimer->pxCallbackFunction;
  762. _24 (pxTimer);
  763. <bb 17> :
  764. goto <bb 28>; [INV]
  765. <bb 18> :
  766. <L21>:
  767. _25 = pxTimer->ucStatus;
  768. _26 = _25 & 254;
  769. pxTimer->ucStatus = _26;
  770. goto <bb 28>; [INV]
  771. <bb 19> :
  772. <L23>:
  773. _27 = pxTimer->ucStatus;
  774. _28 = _27 | 1;
  775. pxTimer->ucStatus = _28;
  776. _29 = xMessage.u.xTimerParameters.xMessageValue;
  777. pxTimer->xTimerPeriodInTicks = _29;
  778. _30 = pxTimer->xTimerPeriodInTicks;
  779. if (_30 == 0)
  780. goto <bb 20>; [INV]
  781. else
  782. goto <bb 22>; [INV]
  783. <bb 20> :
  784. vPortRaiseBASEPRI ();
  785. <bb 21> :
  786. goto <bb 21>; [INV]
  787. <bb 22> :
  788. _31 = pxTimer->xTimerPeriodInTicks;
  789. _32 = xTimeNow + _31;
  790. prvInsertTimerInActiveList (pxTimer, _32, xTimeNow, xTimeNow);
  791. goto <bb 28>; [INV]
  792. <bb 23> :
  793. <L28>:
  794. _33 = pxTimer->ucStatus;
  795. _34 = (int) _33;
  796. _35 = _34 & 2;
  797. if (_35 == 0)
  798. goto <bb 24>; [INV]
  799. else
  800. goto <bb 25>; [INV]
  801. <bb 24> :
  802. vPortFree (pxTimer);
  803. goto <bb 26>; [INV]
  804. <bb 25> :
  805. _36 = pxTimer->ucStatus;
  806. _37 = _36 & 254;
  807. pxTimer->ucStatus = _37;
  808. <bb 26> :
  809. goto <bb 28>; [INV]
  810. <bb 27> :
  811. <L32>:
  812. <bb 28> :
  813. xTimerQueue.18_38 = xTimerQueue;
  814. _39 = xQueueReceive (xTimerQueue.18_38, &xMessage, 0);
  815. if (_39 != 0)
  816. goto <bb 3>; [INV]
  817. else
  818. goto <bb 29>; [INV]
  819. <bb 29> :
  820. xMessage = {CLOBBER};
  821. xTimerListsWereSwitched = {CLOBBER};
  822. return;
  823. }
  824. prvInsertTimerInActiveList (struct Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime)
  825. {
  826. BaseType_t xProcessTimerNow;
  827. BaseType_t D.6741;
  828. <bb 2> :
  829. xProcessTimerNow = 0;
  830. pxTimer->xTimerListItem.xItemValue = xNextExpiryTime;
  831. pxTimer->xTimerListItem.pvOwner = pxTimer;
  832. if (xNextExpiryTime <= xTimeNow)
  833. goto <bb 3>; [INV]
  834. else
  835. goto <bb 6>; [INV]
  836. <bb 3> :
  837. _1 = xTimeNow - xCommandTime;
  838. _2 = pxTimer->xTimerPeriodInTicks;
  839. if (_1 >= _2)
  840. goto <bb 4>; [INV]
  841. else
  842. goto <bb 5>; [INV]
  843. <bb 4> :
  844. xProcessTimerNow = 1;
  845. goto <bb 10>; [INV]
  846. <bb 5> :
  847. pxOverflowTimerList.16_3 = pxOverflowTimerList;
  848. _4 = &pxTimer->xTimerListItem;
  849. vListInsert (pxOverflowTimerList.16_3, _4);
  850. goto <bb 10>; [INV]
  851. <bb 6> :
  852. if (xTimeNow < xCommandTime)
  853. goto <bb 7>; [INV]
  854. else
  855. goto <bb 9>; [INV]
  856. <bb 7> :
  857. if (xNextExpiryTime >= xCommandTime)
  858. goto <bb 8>; [INV]
  859. else
  860. goto <bb 9>; [INV]
  861. <bb 8> :
  862. xProcessTimerNow = 1;
  863. goto <bb 10>; [INV]
  864. <bb 9> :
  865. pxCurrentTimerList.17_5 = pxCurrentTimerList;
  866. _6 = &pxTimer->xTimerListItem;
  867. vListInsert (pxCurrentTimerList.17_5, _6);
  868. <bb 10> :
  869. D.6741 = xProcessTimerNow;
  870. <bb 11> :
  871. <L10>:
  872. return D.6741;
  873. }
  874. prvSampleTimeNow (BaseType_t * const pxTimerListsWereSwitched)
  875. {
  876. static TickType_t xLastTime = 0;
  877. TickType_t xTimeNow;
  878. TickType_t D.6729;
  879. <bb 2> :
  880. xTimeNow = xTaskGetTickCount ();
  881. xLastTime.15_1 = xLastTime;
  882. if (xTimeNow < xLastTime.15_1)
  883. goto <bb 3>; [INV]
  884. else
  885. goto <bb 4>; [INV]
  886. <bb 3> :
  887. prvSwitchTimerLists ();
  888. *pxTimerListsWereSwitched = 1;
  889. goto <bb 5>; [INV]
  890. <bb 4> :
  891. *pxTimerListsWereSwitched = 0;
  892. <bb 5> :
  893. xLastTime = xTimeNow;
  894. D.6729 = xTimeNow;
  895. <bb 6> :
  896. <L3>:
  897. return D.6729;
  898. }
  899. prvGetNextExpireTime (BaseType_t * const pxListWasEmpty)
  900. {
  901. TickType_t xNextExpireTime;
  902. TickType_t D.6724;
  903. long int iftmp.12;
  904. <bb 2> :
  905. pxCurrentTimerList.13_1 = pxCurrentTimerList;
  906. _2 = pxCurrentTimerList.13_1->uxNumberOfItems;
  907. if (_2 == 0)
  908. goto <bb 3>; [INV]
  909. else
  910. goto <bb 4>; [INV]
  911. <bb 3> :
  912. iftmp.12 = 1;
  913. goto <bb 5>; [INV]
  914. <bb 4> :
  915. iftmp.12 = 0;
  916. <bb 5> :
  917. *pxListWasEmpty = iftmp.12;
  918. _3 = *pxListWasEmpty;
  919. if (_3 == 0)
  920. goto <bb 6>; [INV]
  921. else
  922. goto <bb 7>; [INV]
  923. <bb 6> :
  924. pxCurrentTimerList.14_4 = pxCurrentTimerList;
  925. _5 = pxCurrentTimerList.14_4->xListEnd.pxNext;
  926. xNextExpireTime = _5->xItemValue;
  927. goto <bb 8>; [INV]
  928. <bb 7> :
  929. xNextExpireTime = 0;
  930. <bb 8> :
  931. D.6724 = xNextExpireTime;
  932. <bb 9> :
  933. <L6>:
  934. return D.6724;
  935. }
  936. prvProcessTimerOrBlockTask (const TickType_t xNextExpireTime, BaseType_t xListWasEmpty)
  937. {
  938. BaseType_t xTimerListsWereSwitched;
  939. TickType_t xTimeNow;
  940. long int iftmp.9;
  941. <bb 2> :
  942. vTaskSuspendAll ();
  943. xTimeNow = prvSampleTimeNow (&xTimerListsWereSwitched);
  944. xTimerListsWereSwitched.8_1 = xTimerListsWereSwitched;
  945. if (xTimerListsWereSwitched.8_1 == 0)
  946. goto <bb 3>; [INV]
  947. else
  948. goto <bb 14>; [INV]
  949. <bb 3> :
  950. if (xListWasEmpty == 0)
  951. goto <bb 4>; [INV]
  952. else
  953. goto <bb 6>; [INV]
  954. <bb 4> :
  955. if (xNextExpireTime <= xTimeNow)
  956. goto <bb 5>; [INV]
  957. else
  958. goto <bb 6>; [INV]
  959. <bb 5> :
  960. xTaskResumeAll ();
  961. prvProcessExpiredTimer (xNextExpireTime, xTimeNow);
  962. goto <bb 13>; [INV]
  963. <bb 6> :
  964. if (xListWasEmpty != 0)
  965. goto <bb 7>; [INV]
  966. else
  967. goto <bb 11>; [INV]
  968. <bb 7> :
  969. pxOverflowTimerList.10_2 = pxOverflowTimerList;
  970. _3 = pxOverflowTimerList.10_2->uxNumberOfItems;
  971. if (_3 == 0)
  972. goto <bb 8>; [INV]
  973. else
  974. goto <bb 9>; [INV]
  975. <bb 8> :
  976. iftmp.9 = 1;
  977. goto <bb 10>; [INV]
  978. <bb 9> :
  979. iftmp.9 = 0;
  980. <bb 10> :
  981. xListWasEmpty = iftmp.9;
  982. <bb 11> :
  983. xTimerQueue.11_4 = xTimerQueue;
  984. _5 = xNextExpireTime - xTimeNow;
  985. vQueueWaitForMessageRestricted (xTimerQueue.11_4, _5, xListWasEmpty);
  986. _6 = xTaskResumeAll ();
  987. if (_6 == 0)
  988. goto <bb 12>; [INV]
  989. else
  990. goto <bb 13>; [INV]
  991. <bb 12> :
  992. _7 = 3758157060B;
  993. *_7 = 268435456;
  994. __asm__ __volatile__("dsb" : : : "memory");
  995. __asm__ __volatile__("isb");
  996. <bb 13> :
  997. goto <bb 15>; [INV]
  998. <bb 14> :
  999. xTaskResumeAll ();
  1000. <bb 15> :
  1001. xTimerListsWereSwitched = {CLOBBER};
  1002. return;
  1003. }
  1004. prvTimerTask (void * pvParameters)
  1005. {
  1006. BaseType_t xListWasEmpty;
  1007. TickType_t xNextExpireTime;
  1008. <bb 2> :
  1009. xNextExpireTime = prvGetNextExpireTime (&xListWasEmpty);
  1010. xListWasEmpty.7_1 = xListWasEmpty;
  1011. prvProcessTimerOrBlockTask (xNextExpireTime, xListWasEmpty.7_1);
  1012. prvProcessReceivedCommands ();
  1013. goto <bb 2>; [INV]
  1014. }
  1015. prvProcessExpiredTimer (const TickType_t xNextExpireTime, const TickType_t xTimeNow)
  1016. {
  1017. struct Timer_t * const pxTimer;
  1018. <bb 2> :
  1019. pxCurrentTimerList.6_1 = pxCurrentTimerList;
  1020. _2 = pxCurrentTimerList.6_1->xListEnd.pxNext;
  1021. pxTimer = _2->pvOwner;
  1022. _3 = &pxTimer->xTimerListItem;
  1023. uxListRemove (_3);
  1024. _4 = pxTimer->ucStatus;
  1025. _5 = (int) _4;
  1026. _6 = _5 & 4;
  1027. if (_6 != 0)
  1028. goto <bb 3>; [INV]
  1029. else
  1030. goto <bb 4>; [INV]
  1031. <bb 3> :
  1032. prvReloadTimer (pxTimer, xNextExpireTime, xTimeNow);
  1033. goto <bb 5>; [INV]
  1034. <bb 4> :
  1035. _7 = pxTimer->ucStatus;
  1036. _8 = _7 & 254;
  1037. pxTimer->ucStatus = _8;
  1038. <bb 5> :
  1039. _9 = pxTimer->pxCallbackFunction;
  1040. _9 (pxTimer);
  1041. return;
  1042. }
  1043. prvReloadTimer (struct Timer_t * const pxTimer, TickType_t xExpiredTime, const TickType_t xTimeNow)
  1044. {
  1045. <bb 2> :
  1046. goto <bb 4>; [INV]
  1047. <bb 3> :
  1048. _1 = pxTimer->xTimerPeriodInTicks;
  1049. xExpiredTime = xExpiredTime + _1;
  1050. _2 = pxTimer->pxCallbackFunction;
  1051. _2 (pxTimer);
  1052. <bb 4> :
  1053. _3 = pxTimer->xTimerPeriodInTicks;
  1054. _4 = xExpiredTime + _3;
  1055. _5 = prvInsertTimerInActiveList (pxTimer, _4, xTimeNow, xExpiredTime);
  1056. if (_5 != 0)
  1057. goto <bb 3>; [INV]
  1058. else
  1059. goto <bb 5>; [INV]
  1060. <bb 5> :
  1061. return;
  1062. }
  1063. pcTimerGetName (struct tmrTimerControl * xTimer)
  1064. {
  1065. struct Timer_t * pxTimer;
  1066. const char * D.6696;
  1067. <bb 2> :
  1068. pxTimer = xTimer;
  1069. if (xTimer == 0B)
  1070. goto <bb 3>; [INV]
  1071. else
  1072. goto <bb 5>; [INV]
  1073. <bb 3> :
  1074. vPortRaiseBASEPRI ();
  1075. <bb 4> :
  1076. goto <bb 4>; [INV]
  1077. <bb 5> :
  1078. D.6696 = pxTimer->pcTimerName;
  1079. <bb 6> :
  1080. <L3>:
  1081. return D.6696;
  1082. }
  1083. xTimerGetExpiryTime (struct tmrTimerControl * xTimer)
  1084. {
  1085. TickType_t xReturn;
  1086. struct Timer_t * pxTimer;
  1087. TickType_t D.6692;
  1088. <bb 2> :
  1089. pxTimer = xTimer;
  1090. if (xTimer == 0B)
  1091. goto <bb 3>; [INV]
  1092. else
  1093. goto <bb 5>; [INV]
  1094. <bb 3> :
  1095. vPortRaiseBASEPRI ();
  1096. <bb 4> :
  1097. goto <bb 4>; [INV]
  1098. <bb 5> :
  1099. xReturn = pxTimer->xTimerListItem.xItemValue;
  1100. D.6692 = xReturn;
  1101. <bb 6> :
  1102. <L3>:
  1103. return D.6692;
  1104. }
  1105. uxTimerGetReloadMode (struct tmrTimerControl * xTimer)
  1106. {
  1107. UBaseType_t uxReturn;
  1108. struct Timer_t * pxTimer;
  1109. UBaseType_t D.6688;
  1110. <bb 2> :
  1111. pxTimer = xTimer;
  1112. if (xTimer == 0B)
  1113. goto <bb 3>; [INV]
  1114. else
  1115. goto <bb 5>; [INV]
  1116. <bb 3> :
  1117. vPortRaiseBASEPRI ();
  1118. <bb 4> :
  1119. goto <bb 4>; [INV]
  1120. <bb 5> :
  1121. vPortEnterCritical ();
  1122. _1 = pxTimer->ucStatus;
  1123. _2 = (int) _1;
  1124. _3 = _2 & 4;
  1125. if (_3 == 0)
  1126. goto <bb 6>; [INV]
  1127. else
  1128. goto <bb 7>; [INV]
  1129. <bb 6> :
  1130. uxReturn = 0;
  1131. goto <bb 8>; [INV]
  1132. <bb 7> :
  1133. uxReturn = 1;
  1134. <bb 8> :
  1135. vPortExitCritical ();
  1136. D.6688 = uxReturn;
  1137. <bb 9> :
  1138. <L6>:
  1139. return D.6688;
  1140. }
  1141. vTimerSetReloadMode (struct tmrTimerControl * xTimer, const UBaseType_t uxAutoReload)
  1142. {
  1143. struct Timer_t * pxTimer;
  1144. <bb 2> :
  1145. pxTimer = xTimer;
  1146. if (xTimer == 0B)
  1147. goto <bb 3>; [INV]
  1148. else
  1149. goto <bb 5>; [INV]
  1150. <bb 3> :
  1151. vPortRaiseBASEPRI ();
  1152. <bb 4> :
  1153. goto <bb 4>; [INV]
  1154. <bb 5> :
  1155. vPortEnterCritical ();
  1156. if (uxAutoReload != 0)
  1157. goto <bb 6>; [INV]
  1158. else
  1159. goto <bb 7>; [INV]
  1160. <bb 6> :
  1161. _1 = pxTimer->ucStatus;
  1162. _2 = _1 | 4;
  1163. pxTimer->ucStatus = _2;
  1164. goto <bb 8>; [INV]
  1165. <bb 7> :
  1166. _3 = pxTimer->ucStatus;
  1167. _4 = _3 & 251;
  1168. pxTimer->ucStatus = _4;
  1169. <bb 8> :
  1170. vPortExitCritical ();
  1171. return;
  1172. }
  1173. xTimerGetPeriod (struct tmrTimerControl * xTimer)
  1174. {
  1175. struct Timer_t * pxTimer;
  1176. TickType_t D.6676;
  1177. <bb 2> :
  1178. pxTimer = xTimer;
  1179. if (xTimer == 0B)
  1180. goto <bb 3>; [INV]
  1181. else
  1182. goto <bb 5>; [INV]
  1183. <bb 3> :
  1184. vPortRaiseBASEPRI ();
  1185. <bb 4> :
  1186. goto <bb 4>; [INV]
  1187. <bb 5> :
  1188. D.6676 = pxTimer->xTimerPeriodInTicks;
  1189. <bb 6> :
  1190. <L3>:
  1191. return D.6676;
  1192. }
  1193. xTimerGetTimerDaemonTaskHandle ()
  1194. {
  1195. struct tskTaskControlBlock * D.6672;
  1196. <bb 2> :
  1197. xTimerTaskHandle.5_1 = xTimerTaskHandle;
  1198. if (xTimerTaskHandle.5_1 == 0B)
  1199. goto <bb 3>; [INV]
  1200. else
  1201. goto <bb 5>; [INV]
  1202. <bb 3> :
  1203. vPortRaiseBASEPRI ();
  1204. <bb 4> :
  1205. goto <bb 4>; [INV]
  1206. <bb 5> :
  1207. D.6672 = xTimerTaskHandle;
  1208. <bb 6> :
  1209. <L3>:
  1210. return D.6672;
  1211. }
  1212. xTimerGenericCommand (struct tmrTimerControl * xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait)
  1213. {
  1214. struct DaemonTaskMessage_t xMessage;
  1215. BaseType_t xReturn;
  1216. BaseType_t D.6667;
  1217. <bb 2> :
  1218. xReturn = 0;
  1219. if (xTimer == 0B)
  1220. goto <bb 3>; [INV]
  1221. else
  1222. goto <bb 5>; [INV]
  1223. <bb 3> :
  1224. vPortRaiseBASEPRI ();
  1225. <bb 4> :
  1226. goto <bb 4>; [INV]
  1227. <bb 5> :
  1228. xTimerQueue.1_1 = xTimerQueue;
  1229. if (xTimerQueue.1_1 != 0B)
  1230. goto <bb 6>; [INV]
  1231. else
  1232. goto <bb 11>; [INV]
  1233. <bb 6> :
  1234. xMessage.xMessageID = xCommandID;
  1235. xMessage.u.xTimerParameters.xMessageValue = xOptionalValue;
  1236. xMessage.u.xTimerParameters.pxTimer = xTimer;
  1237. if (xCommandID <= 5)
  1238. goto <bb 7>; [INV]
  1239. else
  1240. goto <bb 10>; [INV]
  1241. <bb 7> :
  1242. _2 = xTaskGetSchedulerState ();
  1243. if (_2 == 2)
  1244. goto <bb 8>; [INV]
  1245. else
  1246. goto <bb 9>; [INV]
  1247. <bb 8> :
  1248. xTimerQueue.2_3 = xTimerQueue;
  1249. xReturn = xQueueGenericSend (xTimerQueue.2_3, &xMessage, xTicksToWait, 0);
  1250. goto <bb 11>; [INV]
  1251. <bb 9> :
  1252. xTimerQueue.3_4 = xTimerQueue;
  1253. xReturn = xQueueGenericSend (xTimerQueue.3_4, &xMessage, 0, 0);
  1254. goto <bb 11>; [INV]
  1255. <bb 10> :
  1256. xTimerQueue.4_5 = xTimerQueue;
  1257. xReturn = xQueueGenericSendFromISR (xTimerQueue.4_5, &xMessage, pxHigherPriorityTaskWoken, 0);
  1258. <bb 11> :
  1259. D.6667 = xReturn;
  1260. xMessage = {CLOBBER};
  1261. <bb 12> :
  1262. <L13>:
  1263. return D.6667;
  1264. }
  1265. 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)
  1266. {
  1267. <bb 2> :
  1268. if (xTimerPeriodInTicks == 0)
  1269. goto <bb 3>; [INV]
  1270. else
  1271. goto <bb 5>; [INV]
  1272. <bb 3> :
  1273. vPortRaiseBASEPRI ();
  1274. <bb 4> :
  1275. goto <bb 4>; [INV]
  1276. <bb 5> :
  1277. prvCheckForValidListAndQueue ();
  1278. pxNewTimer->pcTimerName = pcTimerName;
  1279. pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks;
  1280. pxNewTimer->pvTimerID = pvTimerID;
  1281. pxNewTimer->pxCallbackFunction = pxCallbackFunction;
  1282. _1 = &pxNewTimer->xTimerListItem;
  1283. vListInitialiseItem (_1);
  1284. if (uxAutoReload != 0)
  1285. goto <bb 6>; [INV]
  1286. else
  1287. goto <bb 7>; [INV]
  1288. <bb 6> :
  1289. _2 = pxNewTimer->ucStatus;
  1290. _3 = _2 | 4;
  1291. pxNewTimer->ucStatus = _3;
  1292. <bb 7> :
  1293. return;
  1294. }
  1295. xTimerCreate (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction)
  1296. {
  1297. struct Timer_t * pxNewTimer;
  1298. struct tmrTimerControl * D.6650;
  1299. <bb 2> :
  1300. pxNewTimer = pvPortMalloc (44);
  1301. if (pxNewTimer != 0B)
  1302. goto <bb 3>; [INV]
  1303. else
  1304. goto <bb 4>; [INV]
  1305. <bb 3> :
  1306. pxNewTimer->ucStatus = 0;
  1307. prvInitialiseNewTimer (pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer);
  1308. <bb 4> :
  1309. D.6650 = pxNewTimer;
  1310. <bb 5> :
  1311. <L2>:
  1312. return D.6650;
  1313. }
  1314. xTimerCreateTimerTask ()
  1315. {
  1316. BaseType_t xReturn;
  1317. BaseType_t D.6646;
  1318. <bb 2> :
  1319. xReturn = 0;
  1320. prvCheckForValidListAndQueue ();
  1321. xTimerQueue.0_1 = xTimerQueue;
  1322. if (xTimerQueue.0_1 != 0B)
  1323. goto <bb 3>; [INV]
  1324. else
  1325. goto <bb 4>; [INV]
  1326. <bb 3> :
  1327. xReturn = xTaskCreate (prvTimerTask, "Tmr Svc", 180, 0B, 2, &xTimerTaskHandle);
  1328. <bb 4> :
  1329. if (xReturn == 0)
  1330. goto <bb 5>; [INV]
  1331. else
  1332. goto <bb 7>; [INV]
  1333. <bb 5> :
  1334. vPortRaiseBASEPRI ();
  1335. <bb 6> :
  1336. goto <bb 6>; [INV]
  1337. <bb 7> :
  1338. D.6646 = xReturn;
  1339. <bb 8> :
  1340. <L6>:
  1341. return D.6646;
  1342. }
  1343. __attribute__((always_inline))
  1344. vPortRaiseBASEPRI ()
  1345. {
  1346. uint32_t ulNewBASEPRI;
  1347. <bb 2> :
  1348. __asm__ __volatile__(" mov %0, %1
  1349. msr basepri, %0
  1350. isb
  1351. dsb
  1352. " : "=r" ulNewBASEPRI : "i" 16 : "memory");
  1353. return;
  1354. }