event_groups.c.075i.fnsummary 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228
  1. Symbol table:
  2. vPortFree/29 (vPortFree) @06c66b60
  3. Type: function
  4. Visibility: external public
  5. References:
  6. Referring:
  7. Availability: not_available
  8. Function flags:
  9. Called by: vEventGroupDelete/11
  10. Calls:
  11. vTaskRemoveFromUnorderedEventList/28 (vTaskRemoveFromUnorderedEventList) @06c669a0
  12. Type: function
  13. Visibility: external public
  14. References:
  15. Referring:
  16. Availability: not_available
  17. Function flags:
  18. Called by: vEventGroupDelete/11 xEventGroupSetBits/10
  19. Calls:
  20. xTimerPendFunctionCallFromISR/27 (xTimerPendFunctionCallFromISR) @06c66460
  21. Type: function
  22. Visibility: external public
  23. References:
  24. Referring:
  25. Availability: not_available
  26. Function flags:
  27. Called by: xEventGroupSetBitsFromISR/15 xEventGroupClearBitsFromISR/8
  28. Calls:
  29. vPortExitCritical/26 (vPortExitCritical) @06c3ce00
  30. Type: function
  31. Visibility: external public
  32. References:
  33. Referring:
  34. Availability: not_available
  35. Function flags:
  36. Called by: xEventGroupWaitBits/6 xEventGroupSync/5 xEventGroupClearBits/7
  37. Calls:
  38. vPortEnterCritical/25 (vPortEnterCritical) @06c3cd20
  39. Type: function
  40. Visibility: external public
  41. References:
  42. Referring:
  43. Availability: not_available
  44. Function flags:
  45. Called by: xEventGroupWaitBits/6 xEventGroupSync/5 xEventGroupClearBits/7
  46. Calls:
  47. uxTaskResetEventItemValue/24 (uxTaskResetEventItemValue) @06c3cc40
  48. Type: function
  49. Visibility: external public
  50. References:
  51. Referring:
  52. Availability: not_available
  53. Function flags:
  54. Called by: xEventGroupWaitBits/6 xEventGroupSync/5
  55. Calls:
  56. xTaskResumeAll/23 (xTaskResumeAll) @06c3cb60
  57. Type: function
  58. Visibility: external public
  59. References:
  60. Referring:
  61. Availability: not_available
  62. Function flags:
  63. Called by: xEventGroupWaitBits/6 vEventGroupDelete/11 xEventGroupSync/5 xEventGroupSetBits/10
  64. Calls:
  65. vTaskPlaceOnUnorderedEventList/22 (vTaskPlaceOnUnorderedEventList) @06c3ca80
  66. Type: function
  67. Visibility: external public
  68. References:
  69. Referring:
  70. Availability: not_available
  71. Function flags:
  72. Called by: xEventGroupWaitBits/6 xEventGroupSync/5
  73. Calls:
  74. vTaskSuspendAll/21 (vTaskSuspendAll) @06c3c9a0
  75. Type: function
  76. Visibility: external public
  77. References:
  78. Referring:
  79. Availability: not_available
  80. Function flags:
  81. Called by: xEventGroupWaitBits/6 vEventGroupDelete/11 xEventGroupSync/5 xEventGroupSetBits/10
  82. Calls:
  83. xTaskGetSchedulerState/20 (xTaskGetSchedulerState) @06c3c8c0
  84. Type: function
  85. Visibility: external public
  86. References:
  87. Referring:
  88. Availability: not_available
  89. Function flags:
  90. Called by: xEventGroupWaitBits/6 xEventGroupSync/5
  91. Calls:
  92. vListInitialise/19 (vListInitialise) @06c3c540
  93. Type: function
  94. Visibility: external public
  95. References:
  96. Referring:
  97. Availability: not_available
  98. Function flags:
  99. Called by: xEventGroupCreate/4
  100. Calls:
  101. pvPortMalloc/18 (pvPortMalloc) @06c3c460
  102. Type: function
  103. Visibility: external public
  104. References:
  105. Referring:
  106. Availability: not_available
  107. Function flags:
  108. Called by: xEventGroupCreate/4
  109. Calls:
  110. vEventGroupSetNumber/17 (vEventGroupSetNumber) @06c3c000
  111. Type: function definition analyzed
  112. Visibility: force_output externally_visible no_reorder public
  113. References:
  114. Referring:
  115. Availability: available
  116. Function flags: body
  117. Called by:
  118. Calls:
  119. uxEventGroupGetNumber/16 (uxEventGroupGetNumber) @06c32a80
  120. Type: function definition analyzed
  121. Visibility: force_output externally_visible no_reorder public
  122. References:
  123. Referring:
  124. Availability: available
  125. Function flags: body
  126. Called by:
  127. Calls:
  128. xEventGroupSetBitsFromISR/15 (xEventGroupSetBitsFromISR) @06c32460
  129. Type: function definition analyzed
  130. Visibility: force_output externally_visible no_reorder public
  131. References: vEventGroupSetBitsCallback/12 (addr)
  132. Referring:
  133. Availability: available
  134. Function flags: body
  135. Called by:
  136. Calls: xTimerPendFunctionCallFromISR/27
  137. prvTestWaitCondition/14 (prvTestWaitCondition) @06c32ee0
  138. Type: function definition analyzed
  139. Visibility: force_output no_reorder prevailing_def_ironly
  140. References:
  141. Referring:
  142. Availability: available
  143. Function flags: body
  144. Called by: xEventGroupWaitBits/6 xEventGroupWaitBits/6
  145. Calls:
  146. vEventGroupClearBitsCallback/13 (vEventGroupClearBitsCallback) @06c32c40
  147. Type: function definition analyzed
  148. Visibility: force_output externally_visible no_reorder public
  149. Address is taken.
  150. References:
  151. Referring: xEventGroupClearBitsFromISR/8 (addr)
  152. Availability: available
  153. Function flags: body
  154. Called by:
  155. Calls: xEventGroupClearBits/7
  156. vEventGroupSetBitsCallback/12 (vEventGroupSetBitsCallback) @06c329a0
  157. Type: function definition analyzed
  158. Visibility: force_output externally_visible no_reorder public
  159. Address is taken.
  160. References:
  161. Referring: xEventGroupSetBitsFromISR/15 (addr)
  162. Availability: available
  163. Function flags: body
  164. Called by:
  165. Calls: xEventGroupSetBits/10
  166. vEventGroupDelete/11 (vEventGroupDelete) @06c32700
  167. Type: function definition analyzed
  168. Visibility: force_output externally_visible no_reorder public
  169. References:
  170. Referring:
  171. Availability: available
  172. Function flags: body
  173. Called by:
  174. Calls: xTaskResumeAll/23 vPortFree/29 vTaskRemoveFromUnorderedEventList/28 vTaskSuspendAll/21
  175. xEventGroupSetBits/10 (xEventGroupSetBits) @06c32380
  176. Type: function definition analyzed
  177. Visibility: force_output externally_visible no_reorder public
  178. References:
  179. Referring:
  180. Availability: available
  181. Function flags: body
  182. Called by: vEventGroupSetBitsCallback/12 xEventGroupSync/5
  183. Calls: xTaskResumeAll/23 vTaskRemoveFromUnorderedEventList/28 vTaskSuspendAll/21
  184. xEventGroupGetBitsFromISR/9 (xEventGroupGetBitsFromISR) @06befc40
  185. Type: function definition analyzed
  186. Visibility: force_output externally_visible no_reorder public
  187. References:
  188. Referring:
  189. Availability: available
  190. Function flags: body
  191. Called by:
  192. Calls:
  193. xEventGroupClearBitsFromISR/8 (xEventGroupClearBitsFromISR) @06bef2a0
  194. Type: function definition analyzed
  195. Visibility: force_output externally_visible no_reorder public
  196. References: vEventGroupClearBitsCallback/13 (addr)
  197. Referring:
  198. Availability: available
  199. Function flags: body
  200. Called by:
  201. Calls: xTimerPendFunctionCallFromISR/27
  202. xEventGroupClearBits/7 (xEventGroupClearBits) @06befee0
  203. Type: function definition analyzed
  204. Visibility: force_output externally_visible no_reorder public
  205. References:
  206. Referring:
  207. Availability: available
  208. Function flags: body
  209. Called by: vEventGroupClearBitsCallback/13
  210. Calls: vPortExitCritical/26 vPortEnterCritical/25
  211. xEventGroupWaitBits/6 (xEventGroupWaitBits) @06befb60
  212. Type: function definition analyzed
  213. Visibility: force_output externally_visible no_reorder public
  214. References:
  215. Referring:
  216. Availability: available
  217. Function flags: body
  218. Called by:
  219. Calls: vPortExitCritical/26 prvTestWaitCondition/14 vPortEnterCritical/25 uxTaskResetEventItemValue/24 xTaskResumeAll/23 vTaskPlaceOnUnorderedEventList/22 prvTestWaitCondition/14 vTaskSuspendAll/21 xTaskGetSchedulerState/20
  220. xEventGroupSync/5 (xEventGroupSync) @06bef620
  221. Type: function definition analyzed
  222. Visibility: force_output externally_visible no_reorder public
  223. References:
  224. Referring:
  225. Availability: available
  226. Function flags: body
  227. Called by:
  228. Calls: vPortExitCritical/26 vPortEnterCritical/25 uxTaskResetEventItemValue/24 xTaskResumeAll/23 vTaskPlaceOnUnorderedEventList/22 xEventGroupSetBits/10 vTaskSuspendAll/21 xTaskGetSchedulerState/20
  229. xEventGroupCreate/4 (xEventGroupCreate) @06bef1c0
  230. Type: function definition analyzed
  231. Visibility: force_output externally_visible no_reorder public
  232. References:
  233. Referring:
  234. Availability: available
  235. Function flags: body
  236. Called by:
  237. Calls: vListInitialise/19 pvPortMalloc/18
  238. vEventGroupSetNumber (void * xEventGroup, UBaseType_t uxEventGroupNumber)
  239. {
  240. <bb 2> :
  241. MEM[(struct EventGroup_t *)xEventGroup_2(D)].uxEventGroupNumber = uxEventGroupNumber_3(D);
  242. return;
  243. }
  244. uxEventGroupGetNumber (void * xEventGroup)
  245. {
  246. const struct EventGroup_t * pxEventBits;
  247. UBaseType_t xReturn;
  248. UBaseType_t D.6567;
  249. UBaseType_t _7;
  250. <bb 2> :
  251. pxEventBits_3 = xEventGroup_2(D);
  252. if (xEventGroup_2(D) == 0B)
  253. goto <bb 3>; [INV]
  254. else
  255. goto <bb 4>; [INV]
  256. <bb 3> :
  257. xReturn_6 = 0;
  258. goto <bb 5>; [INV]
  259. <bb 4> :
  260. xReturn_5 = pxEventBits_3->uxEventGroupNumber;
  261. <bb 5> :
  262. # xReturn_1 = PHI <xReturn_6(3), xReturn_5(4)>
  263. _7 = xReturn_1;
  264. <bb 6> :
  265. <L3>:
  266. return _7;
  267. }
  268. xEventGroupSetBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, BaseType_t * pxHigherPriorityTaskWoken)
  269. {
  270. BaseType_t xReturn;
  271. BaseType_t D.6562;
  272. BaseType_t _7;
  273. <bb 2> :
  274. xReturn_6 = xTimerPendFunctionCallFromISR (vEventGroupSetBitsCallback, xEventGroup_2(D), uxBitsToSet_3(D), pxHigherPriorityTaskWoken_4(D));
  275. _7 = xReturn_6;
  276. <bb 3> :
  277. <L0>:
  278. return _7;
  279. }
  280. prvTestWaitCondition (const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits)
  281. {
  282. BaseType_t xWaitConditionMet;
  283. BaseType_t D.6560;
  284. long unsigned int _1;
  285. long unsigned int _2;
  286. BaseType_t _10;
  287. <bb 2> :
  288. xWaitConditionMet_4 = 0;
  289. if (xWaitForAllBits_5(D) == 0)
  290. goto <bb 3>; [INV]
  291. else
  292. goto <bb 5>; [INV]
  293. <bb 3> :
  294. _1 = uxCurrentEventBits_6(D) & uxBitsToWaitFor_7(D);
  295. if (_1 != 0)
  296. goto <bb 4>; [INV]
  297. else
  298. goto <bb 7>; [INV]
  299. <bb 4> :
  300. xWaitConditionMet_9 = 1;
  301. goto <bb 7>; [INV]
  302. <bb 5> :
  303. _2 = uxCurrentEventBits_6(D) & uxBitsToWaitFor_7(D);
  304. if (uxBitsToWaitFor_7(D) == _2)
  305. goto <bb 6>; [INV]
  306. else
  307. goto <bb 7>; [INV]
  308. <bb 6> :
  309. xWaitConditionMet_8 = 1;
  310. <bb 7> :
  311. # xWaitConditionMet_3 = PHI <xWaitConditionMet_9(4), xWaitConditionMet_4(5), xWaitConditionMet_8(6), xWaitConditionMet_4(3)>
  312. _10 = xWaitConditionMet_3;
  313. <bb 8> :
  314. <L9>:
  315. return _10;
  316. }
  317. vEventGroupClearBitsCallback (void * pvEventGroup, const uint32_t ulBitsToClear)
  318. {
  319. <bb 2> :
  320. xEventGroupClearBits (pvEventGroup_2(D), ulBitsToClear_3(D));
  321. return;
  322. }
  323. vEventGroupSetBitsCallback (void * pvEventGroup, const uint32_t ulBitsToSet)
  324. {
  325. <bb 2> :
  326. xEventGroupSetBits (pvEventGroup_2(D), ulBitsToSet_3(D));
  327. return;
  328. }
  329. vEventGroupDelete (struct EventGroupDef_t * xEventGroup)
  330. {
  331. uint32_t ulNewBASEPRI;
  332. uint32_t ulNewBASEPRI;
  333. const struct List_t * pxTasksWaitingForBits;
  334. struct EventGroup_t * pxEventBits;
  335. struct xLIST_ITEM * _1;
  336. const struct MiniListItem_t * _2;
  337. struct xLIST_ITEM * _3;
  338. long unsigned int _4;
  339. <bb 2> :
  340. if (xEventGroup_6(D) == 0B)
  341. goto <bb 3>; [INV]
  342. else
  343. goto <bb 6>; [INV]
  344. <bb 3> :
  345. __asm__ __volatile__(" mov %0, %1
  346. msr basepri, %0
  347. isb
  348. dsb
  349. " : "=r" ulNewBASEPRI_14 : "i" 16 : "memory");
  350. <bb 4> :
  351. <bb 5> :
  352. goto <bb 5>; [INV]
  353. <bb 6> :
  354. pxEventBits_7 = xEventGroup_6(D);
  355. pxTasksWaitingForBits_8 = &pxEventBits_7->xTasksWaitingForBits;
  356. vTaskSuspendAll ();
  357. goto <bb 12>; [INV]
  358. <bb 7> :
  359. _1 = pxTasksWaitingForBits_8->xListEnd.pxNext;
  360. _2 = &pxTasksWaitingForBits_8->xListEnd;
  361. if (_1 == _2)
  362. goto <bb 8>; [INV]
  363. else
  364. goto <bb 11>; [INV]
  365. <bb 8> :
  366. __asm__ __volatile__(" mov %0, %1
  367. msr basepri, %0
  368. isb
  369. dsb
  370. " : "=r" ulNewBASEPRI_15 : "i" 16 : "memory");
  371. <bb 9> :
  372. <bb 10> :
  373. goto <bb 10>; [INV]
  374. <bb 11> :
  375. _3 = pxTasksWaitingForBits_8->xListEnd.pxNext;
  376. vTaskRemoveFromUnorderedEventList (_3, 33554432);
  377. <bb 12> :
  378. _4 ={v} pxTasksWaitingForBits_8->uxNumberOfItems;
  379. if (_4 != 0)
  380. goto <bb 7>; [INV]
  381. else
  382. goto <bb 13>; [INV]
  383. <bb 13> :
  384. vPortFree (pxEventBits_7);
  385. xTaskResumeAll ();
  386. return;
  387. }
  388. xEventGroupSetBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet)
  389. {
  390. uint32_t ulNewBASEPRI;
  391. uint32_t ulNewBASEPRI;
  392. BaseType_t xMatchFound;
  393. struct EventGroup_t * pxEventBits;
  394. EventBits_t uxControlBits;
  395. EventBits_t uxBitsWaitedFor;
  396. EventBits_t uxBitsToClear;
  397. const struct List_t * pxList;
  398. const struct ListItem_t * pxListEnd;
  399. struct ListItem_t * pxNext;
  400. struct ListItem_t * pxListItem;
  401. EventBits_t D.6545;
  402. long unsigned int _1;
  403. long unsigned int _2;
  404. long unsigned int _3;
  405. long unsigned int _4;
  406. long unsigned int _5;
  407. long unsigned int _6;
  408. long unsigned int _7;
  409. long unsigned int _8;
  410. long unsigned int _9;
  411. long unsigned int _10;
  412. long unsigned int _11;
  413. long unsigned int _12;
  414. long unsigned int _13;
  415. long unsigned int _14;
  416. EventBits_t _35;
  417. <bb 2> :
  418. uxBitsToClear_22 = 0;
  419. pxEventBits_24 = xEventGroup_23(D);
  420. xMatchFound_25 = 0;
  421. if (xEventGroup_23(D) == 0B)
  422. goto <bb 3>; [INV]
  423. else
  424. goto <bb 6>; [INV]
  425. <bb 3> :
  426. __asm__ __volatile__(" mov %0, %1
  427. msr basepri, %0
  428. isb
  429. dsb
  430. " : "=r" ulNewBASEPRI_46 : "i" 16 : "memory");
  431. <bb 4> :
  432. <bb 5> :
  433. goto <bb 5>; [INV]
  434. <bb 6> :
  435. _1 = uxBitsToSet_26(D) & 4278190080;
  436. if (_1 != 0)
  437. goto <bb 7>; [INV]
  438. else
  439. goto <bb 10>; [INV]
  440. <bb 7> :
  441. __asm__ __volatile__(" mov %0, %1
  442. msr basepri, %0
  443. isb
  444. dsb
  445. " : "=r" ulNewBASEPRI_47 : "i" 16 : "memory");
  446. <bb 8> :
  447. <bb 9> :
  448. goto <bb 9>; [INV]
  449. <bb 10> :
  450. pxList_27 = &pxEventBits_24->xTasksWaitingForBits;
  451. pxListEnd_28 = &pxList_27->xListEnd;
  452. vTaskSuspendAll ();
  453. pxListItem_31 = pxList_27->xListEnd.pxNext;
  454. _2 = pxEventBits_24->uxEventBits;
  455. _3 = uxBitsToSet_26(D) | _2;
  456. pxEventBits_24->uxEventBits = _3;
  457. goto <bb 21>; [INV]
  458. <bb 11> :
  459. pxNext_36 = pxListItem_15->pxNext;
  460. uxBitsWaitedFor_37 = pxListItem_15->xItemValue;
  461. xMatchFound_38 = 0;
  462. uxControlBits_39 = uxBitsWaitedFor_37 & 4278190080;
  463. uxBitsWaitedFor_40 = uxBitsWaitedFor_37 & 16777215;
  464. _4 = uxControlBits_39 & 67108864;
  465. if (_4 == 0)
  466. goto <bb 12>; [INV]
  467. else
  468. goto <bb 14>; [INV]
  469. <bb 12> :
  470. _5 = pxEventBits_24->uxEventBits;
  471. _6 = uxBitsWaitedFor_40 & _5;
  472. if (_6 != 0)
  473. goto <bb 13>; [INV]
  474. else
  475. goto <bb 16>; [INV]
  476. <bb 13> :
  477. xMatchFound_42 = 1;
  478. goto <bb 16>; [INV]
  479. <bb 14> :
  480. _7 = pxEventBits_24->uxEventBits;
  481. _8 = uxBitsWaitedFor_40 & _7;
  482. if (uxBitsWaitedFor_40 == _8)
  483. goto <bb 15>; [INV]
  484. else
  485. goto <bb 16>; [INV]
  486. <bb 15> :
  487. xMatchFound_41 = 1;
  488. <bb 16> :
  489. # xMatchFound_19 = PHI <xMatchFound_42(13), xMatchFound_38(14), xMatchFound_41(15), xMatchFound_38(12)>
  490. if (xMatchFound_19 != 0)
  491. goto <bb 17>; [INV]
  492. else
  493. goto <bb 20>; [INV]
  494. <bb 17> :
  495. _9 = uxControlBits_39 & 16777216;
  496. if (_9 != 0)
  497. goto <bb 18>; [INV]
  498. else
  499. goto <bb 19>; [INV]
  500. <bb 18> :
  501. uxBitsToClear_43 = uxBitsToClear_18 | uxBitsWaitedFor_40;
  502. <bb 19> :
  503. # uxBitsToClear_16 = PHI <uxBitsToClear_18(17), uxBitsToClear_43(18)>
  504. _10 = pxEventBits_24->uxEventBits;
  505. _11 = _10 | 33554432;
  506. vTaskRemoveFromUnorderedEventList (pxListItem_15, _11);
  507. <bb 20> :
  508. # uxBitsToClear_17 = PHI <uxBitsToClear_18(16), uxBitsToClear_16(19)>
  509. pxListItem_45 = pxNext_36;
  510. <bb 21> :
  511. # pxListItem_15 = PHI <pxListItem_31(10), pxListItem_45(20)>
  512. # uxBitsToClear_18 = PHI <uxBitsToClear_22(10), uxBitsToClear_17(20)>
  513. if (pxListItem_15 != pxListEnd_28)
  514. goto <bb 11>; [INV]
  515. else
  516. goto <bb 22>; [INV]
  517. <bb 22> :
  518. _12 = pxEventBits_24->uxEventBits;
  519. _13 = ~uxBitsToClear_18;
  520. _14 = _12 & _13;
  521. pxEventBits_24->uxEventBits = _14;
  522. xTaskResumeAll ();
  523. _35 = pxEventBits_24->uxEventBits;
  524. <bb 23> :
  525. <L23>:
  526. return _35;
  527. }
  528. xEventGroupGetBitsFromISR (struct EventGroupDef_t * xEventGroup)
  529. {
  530. uint32_t D.6592;
  531. uint32_t ulOriginalBASEPRI;
  532. uint32_t ulNewBASEPRI;
  533. uint32_t D.6591;
  534. uint32_t ulNewMaskValue;
  535. EventBits_t uxReturn;
  536. const struct EventGroup_t * const pxEventBits;
  537. UBaseType_t uxSavedInterruptStatus;
  538. EventBits_t D.6523;
  539. EventBits_t _6;
  540. long unsigned int _10;
  541. <bb 2> :
  542. pxEventBits_2 = xEventGroup_1(D);
  543. __asm__ __volatile__(" mrs %0, basepri
  544. mov %1, %2
  545. msr basepri, %1
  546. isb
  547. dsb
  548. " : "=r" ulOriginalBASEPRI_8, "=r" ulNewBASEPRI_9 : "i" 16 : "memory");
  549. _10 = ulOriginalBASEPRI_8;
  550. <bb 3> :
  551. <L1>:
  552. _12 = _10;
  553. <bb 4> :
  554. uxSavedInterruptStatus_4 = _12;
  555. uxReturn_5 = pxEventBits_2->uxEventBits;
  556. ulNewMaskValue_7 = uxSavedInterruptStatus_4;
  557. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue_7 : "memory");
  558. <bb 5> :
  559. _6 = uxReturn_5;
  560. <bb 6> :
  561. <L0>:
  562. return _6;
  563. }
  564. xEventGroupClearBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  565. {
  566. BaseType_t xReturn;
  567. BaseType_t D.6521;
  568. BaseType_t _6;
  569. <bb 2> :
  570. xReturn_5 = xTimerPendFunctionCallFromISR (vEventGroupClearBitsCallback, xEventGroup_2(D), uxBitsToClear_3(D), 0B);
  571. _6 = xReturn_5;
  572. <bb 3> :
  573. <L0>:
  574. return _6;
  575. }
  576. xEventGroupClearBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  577. {
  578. uint32_t ulNewBASEPRI;
  579. uint32_t ulNewBASEPRI;
  580. EventBits_t uxReturn;
  581. struct EventGroup_t * pxEventBits;
  582. EventBits_t D.6519;
  583. long unsigned int _1;
  584. long unsigned int _2;
  585. long unsigned int _3;
  586. long unsigned int _4;
  587. EventBits_t _13;
  588. <bb 2> :
  589. pxEventBits_6 = xEventGroup_5(D);
  590. if (xEventGroup_5(D) == 0B)
  591. goto <bb 3>; [INV]
  592. else
  593. goto <bb 6>; [INV]
  594. <bb 3> :
  595. __asm__ __volatile__(" mov %0, %1
  596. msr basepri, %0
  597. isb
  598. dsb
  599. " : "=r" ulNewBASEPRI_14 : "i" 16 : "memory");
  600. <bb 4> :
  601. <bb 5> :
  602. goto <bb 5>; [INV]
  603. <bb 6> :
  604. _1 = uxBitsToClear_7(D) & 4278190080;
  605. if (_1 != 0)
  606. goto <bb 7>; [INV]
  607. else
  608. goto <bb 10>; [INV]
  609. <bb 7> :
  610. __asm__ __volatile__(" mov %0, %1
  611. msr basepri, %0
  612. isb
  613. dsb
  614. " : "=r" ulNewBASEPRI_15 : "i" 16 : "memory");
  615. <bb 8> :
  616. <bb 9> :
  617. goto <bb 9>; [INV]
  618. <bb 10> :
  619. vPortEnterCritical ();
  620. uxReturn_10 = pxEventBits_6->uxEventBits;
  621. _2 = pxEventBits_6->uxEventBits;
  622. _3 = ~uxBitsToClear_7(D);
  623. _4 = _2 & _3;
  624. pxEventBits_6->uxEventBits = _4;
  625. vPortExitCritical ();
  626. _13 = uxReturn_10;
  627. <bb 11> :
  628. <L6>:
  629. return _13;
  630. }
  631. xEventGroupWaitBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait)
  632. {
  633. uint32_t ulNewBASEPRI;
  634. uint32_t ulNewBASEPRI;
  635. uint32_t ulNewBASEPRI;
  636. uint32_t ulNewBASEPRI;
  637. const EventBits_t uxCurrentEventBits;
  638. BaseType_t xTimeoutOccurred;
  639. BaseType_t xAlreadyYielded;
  640. BaseType_t xWaitConditionMet;
  641. EventBits_t uxControlBits;
  642. EventBits_t uxReturn;
  643. struct EventGroup_t * pxEventBits;
  644. EventBits_t D.6513;
  645. int iftmp.1;
  646. long unsigned int _1;
  647. long int _2;
  648. long unsigned int _3;
  649. long unsigned int _4;
  650. long unsigned int _5;
  651. struct List_t * _6;
  652. long unsigned int _7;
  653. volatile uint32_t * _8;
  654. long unsigned int _9;
  655. long int _10;
  656. long unsigned int _11;
  657. long unsigned int _12;
  658. long unsigned int _13;
  659. int iftmp.1_20;
  660. int iftmp.1_34;
  661. int iftmp.1_35;
  662. EventBits_t _65;
  663. <bb 2> :
  664. pxEventBits_27 = xEventGroup_26(D);
  665. uxControlBits_28 = 0;
  666. xTimeoutOccurred_29 = 0;
  667. if (xEventGroup_26(D) == 0B)
  668. goto <bb 3>; [INV]
  669. else
  670. goto <bb 6>; [INV]
  671. <bb 3> :
  672. __asm__ __volatile__(" mov %0, %1
  673. msr basepri, %0
  674. isb
  675. dsb
  676. " : "=r" ulNewBASEPRI_66 : "i" 16 : "memory");
  677. <bb 4> :
  678. <bb 5> :
  679. goto <bb 5>; [INV]
  680. <bb 6> :
  681. _1 = uxBitsToWaitFor_30(D) & 4278190080;
  682. if (_1 != 0)
  683. goto <bb 7>; [INV]
  684. else
  685. goto <bb 10>; [INV]
  686. <bb 7> :
  687. __asm__ __volatile__(" mov %0, %1
  688. msr basepri, %0
  689. isb
  690. dsb
  691. " : "=r" ulNewBASEPRI_67 : "i" 16 : "memory");
  692. <bb 8> :
  693. <bb 9> :
  694. goto <bb 9>; [INV]
  695. <bb 10> :
  696. if (uxBitsToWaitFor_30(D) == 0)
  697. goto <bb 11>; [INV]
  698. else
  699. goto <bb 14>; [INV]
  700. <bb 11> :
  701. __asm__ __volatile__(" mov %0, %1
  702. msr basepri, %0
  703. isb
  704. dsb
  705. " : "=r" ulNewBASEPRI_68 : "i" 16 : "memory");
  706. <bb 12> :
  707. <bb 13> :
  708. goto <bb 13>; [INV]
  709. <bb 14> :
  710. _2 = xTaskGetSchedulerState ();
  711. if (_2 != 0)
  712. goto <bb 16>; [INV]
  713. else
  714. goto <bb 15>; [INV]
  715. <bb 15> :
  716. if (xTicksToWait_33(D) == 0)
  717. goto <bb 16>; [INV]
  718. else
  719. goto <bb 17>; [INV]
  720. <bb 16> :
  721. iftmp.1_35 = 1;
  722. goto <bb 18>; [INV]
  723. <bb 17> :
  724. iftmp.1_34 = 0;
  725. <bb 18> :
  726. # iftmp.1_20 = PHI <iftmp.1_35(16), iftmp.1_34(17)>
  727. if (iftmp.1_20 == 0)
  728. goto <bb 19>; [INV]
  729. else
  730. goto <bb 22>; [INV]
  731. <bb 19> :
  732. __asm__ __volatile__(" mov %0, %1
  733. msr basepri, %0
  734. isb
  735. dsb
  736. " : "=r" ulNewBASEPRI_69 : "i" 16 : "memory");
  737. <bb 20> :
  738. <bb 21> :
  739. goto <bb 21>; [INV]
  740. <bb 22> :
  741. vTaskSuspendAll ();
  742. uxCurrentEventBits_37 = pxEventBits_27->uxEventBits;
  743. xWaitConditionMet_40 = prvTestWaitCondition (uxCurrentEventBits_37, uxBitsToWaitFor_30(D), xWaitForAllBits_38(D));
  744. if (xWaitConditionMet_40 != 0)
  745. goto <bb 23>; [INV]
  746. else
  747. goto <bb 25>; [INV]
  748. <bb 23> :
  749. uxReturn_48 = uxCurrentEventBits_37;
  750. xTicksToWait_49 = 0;
  751. if (xClearOnExit_41(D) != 0)
  752. goto <bb 24>; [INV]
  753. else
  754. goto <bb 32>; [INV]
  755. <bb 24> :
  756. _3 = pxEventBits_27->uxEventBits;
  757. _4 = ~uxBitsToWaitFor_30(D);
  758. _5 = _3 & _4;
  759. pxEventBits_27->uxEventBits = _5;
  760. goto <bb 32>; [INV]
  761. <bb 25> :
  762. if (xTicksToWait_33(D) == 0)
  763. goto <bb 26>; [INV]
  764. else
  765. goto <bb 27>; [INV]
  766. <bb 26> :
  767. uxReturn_46 = uxCurrentEventBits_37;
  768. xTimeoutOccurred_47 = 1;
  769. goto <bb 32>; [INV]
  770. <bb 27> :
  771. if (xClearOnExit_41(D) != 0)
  772. goto <bb 28>; [INV]
  773. else
  774. goto <bb 29>; [INV]
  775. <bb 28> :
  776. uxControlBits_42 = uxControlBits_28 | 16777216;
  777. <bb 29> :
  778. # uxControlBits_18 = PHI <uxControlBits_28(27), uxControlBits_42(28)>
  779. if (xWaitForAllBits_38(D) != 0)
  780. goto <bb 30>; [INV]
  781. else
  782. goto <bb 31>; [INV]
  783. <bb 30> :
  784. uxControlBits_43 = uxControlBits_18 | 67108864;
  785. <bb 31> :
  786. # uxControlBits_19 = PHI <uxControlBits_18(29), uxControlBits_43(30)>
  787. _6 = &pxEventBits_27->xTasksWaitingForBits;
  788. _7 = uxBitsToWaitFor_30(D) | uxControlBits_19;
  789. vTaskPlaceOnUnorderedEventList (_6, _7, xTicksToWait_33(D));
  790. uxReturn_45 = 0;
  791. <bb 32> :
  792. # xTicksToWait_14 = PHI <xTicksToWait_49(24), xTicksToWait_33(D)(26), xTicksToWait_33(D)(31), xTicksToWait_49(23)>
  793. # uxReturn_15 = PHI <uxReturn_48(24), uxReturn_46(26), uxReturn_45(31), uxReturn_48(23)>
  794. xAlreadyYielded_52 = xTaskResumeAll ();
  795. if (xTicksToWait_14 != 0)
  796. goto <bb 33>; [INV]
  797. else
  798. goto <bb 41>; [INV]
  799. <bb 33> :
  800. if (xAlreadyYielded_52 == 0)
  801. goto <bb 34>; [INV]
  802. else
  803. goto <bb 35>; [INV]
  804. <bb 34> :
  805. _8 = 3758157060B;
  806. *_8 ={v} 268435456;
  807. __asm__ __volatile__("dsb" : : : "memory");
  808. __asm__ __volatile__("isb");
  809. <bb 35> :
  810. uxReturn_57 = uxTaskResetEventItemValue ();
  811. _9 = uxReturn_57 & 33554432;
  812. if (_9 == 0)
  813. goto <bb 36>; [INV]
  814. else
  815. goto <bb 40>; [INV]
  816. <bb 36> :
  817. vPortEnterCritical ();
  818. uxReturn_59 = pxEventBits_27->uxEventBits;
  819. _10 = prvTestWaitCondition (uxReturn_59, uxBitsToWaitFor_30(D), xWaitForAllBits_38(D));
  820. if (_10 != 0)
  821. goto <bb 37>; [INV]
  822. else
  823. goto <bb 39>; [INV]
  824. <bb 37> :
  825. if (xClearOnExit_41(D) != 0)
  826. goto <bb 38>; [INV]
  827. else
  828. goto <bb 39>; [INV]
  829. <bb 38> :
  830. _11 = pxEventBits_27->uxEventBits;
  831. _12 = ~uxBitsToWaitFor_30(D);
  832. _13 = _11 & _12;
  833. pxEventBits_27->uxEventBits = _13;
  834. <bb 39> :
  835. xTimeoutOccurred_62 = 1;
  836. vPortExitCritical ();
  837. <bb 40> :
  838. # uxReturn_16 = PHI <uxReturn_57(35), uxReturn_59(39)>
  839. uxReturn_64 = uxReturn_16 & 16777215;
  840. <bb 41> :
  841. # uxReturn_17 = PHI <uxReturn_15(32), uxReturn_64(40)>
  842. _65 = uxReturn_17;
  843. <bb 42> :
  844. <L45>:
  845. return _65;
  846. }
  847. xEventGroupSync (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait)
  848. {
  849. uint32_t ulNewBASEPRI;
  850. uint32_t ulNewBASEPRI;
  851. uint32_t ulNewBASEPRI;
  852. BaseType_t xTimeoutOccurred;
  853. BaseType_t xAlreadyYielded;
  854. struct EventGroup_t * pxEventBits;
  855. EventBits_t uxReturn;
  856. EventBits_t uxOriginalBitValue;
  857. EventBits_t D.6469;
  858. int iftmp.0;
  859. long unsigned int _1;
  860. long int _2;
  861. long unsigned int _3;
  862. long unsigned int _4;
  863. long unsigned int _5;
  864. long unsigned int _6;
  865. long unsigned int _7;
  866. struct List_t * _8;
  867. long unsigned int _9;
  868. volatile uint32_t * _10;
  869. long unsigned int _11;
  870. long unsigned int _12;
  871. long unsigned int _13;
  872. long unsigned int _14;
  873. long unsigned int _15;
  874. int iftmp.0_20;
  875. int iftmp.0_33;
  876. int iftmp.0_34;
  877. EventBits_t _59;
  878. <bb 2> :
  879. pxEventBits_27 = xEventGroup_26(D);
  880. xTimeoutOccurred_28 = 0;
  881. _1 = uxBitsToWaitFor_29(D) & 4278190080;
  882. if (_1 != 0)
  883. goto <bb 3>; [INV]
  884. else
  885. goto <bb 6>; [INV]
  886. <bb 3> :
  887. __asm__ __volatile__(" mov %0, %1
  888. msr basepri, %0
  889. isb
  890. dsb
  891. " : "=r" ulNewBASEPRI_60 : "i" 16 : "memory");
  892. <bb 4> :
  893. <bb 5> :
  894. goto <bb 5>; [INV]
  895. <bb 6> :
  896. if (uxBitsToWaitFor_29(D) == 0)
  897. goto <bb 7>; [INV]
  898. else
  899. goto <bb 10>; [INV]
  900. <bb 7> :
  901. __asm__ __volatile__(" mov %0, %1
  902. msr basepri, %0
  903. isb
  904. dsb
  905. " : "=r" ulNewBASEPRI_61 : "i" 16 : "memory");
  906. <bb 8> :
  907. <bb 9> :
  908. goto <bb 9>; [INV]
  909. <bb 10> :
  910. _2 = xTaskGetSchedulerState ();
  911. if (_2 != 0)
  912. goto <bb 12>; [INV]
  913. else
  914. goto <bb 11>; [INV]
  915. <bb 11> :
  916. if (xTicksToWait_32(D) == 0)
  917. goto <bb 12>; [INV]
  918. else
  919. goto <bb 13>; [INV]
  920. <bb 12> :
  921. iftmp.0_34 = 1;
  922. goto <bb 14>; [INV]
  923. <bb 13> :
  924. iftmp.0_33 = 0;
  925. <bb 14> :
  926. # iftmp.0_20 = PHI <iftmp.0_34(12), iftmp.0_33(13)>
  927. if (iftmp.0_20 == 0)
  928. goto <bb 15>; [INV]
  929. else
  930. goto <bb 18>; [INV]
  931. <bb 15> :
  932. __asm__ __volatile__(" mov %0, %1
  933. msr basepri, %0
  934. isb
  935. dsb
  936. " : "=r" ulNewBASEPRI_62 : "i" 16 : "memory");
  937. <bb 16> :
  938. <bb 17> :
  939. goto <bb 17>; [INV]
  940. <bb 18> :
  941. vTaskSuspendAll ();
  942. uxOriginalBitValue_36 = pxEventBits_27->uxEventBits;
  943. xEventGroupSetBits (xEventGroup_26(D), uxBitsToSet_37(D));
  944. _3 = uxOriginalBitValue_36 | uxBitsToSet_37(D);
  945. _4 = uxBitsToWaitFor_29(D) & _3;
  946. if (uxBitsToWaitFor_29(D) == _4)
  947. goto <bb 19>; [INV]
  948. else
  949. goto <bb 20>; [INV]
  950. <bb 19> :
  951. uxReturn_43 = uxOriginalBitValue_36 | uxBitsToSet_37(D);
  952. _5 = pxEventBits_27->uxEventBits;
  953. _6 = ~uxBitsToWaitFor_29(D);
  954. _7 = _5 & _6;
  955. pxEventBits_27->uxEventBits = _7;
  956. xTicksToWait_45 = 0;
  957. goto <bb 23>; [INV]
  958. <bb 20> :
  959. if (xTicksToWait_32(D) != 0)
  960. goto <bb 21>; [INV]
  961. else
  962. goto <bb 22>; [INV]
  963. <bb 21> :
  964. _8 = &pxEventBits_27->xTasksWaitingForBits;
  965. _9 = uxBitsToWaitFor_29(D) | 83886080;
  966. vTaskPlaceOnUnorderedEventList (_8, _9, xTicksToWait_32(D));
  967. uxReturn_42 = 0;
  968. goto <bb 23>; [INV]
  969. <bb 22> :
  970. uxReturn_39 = pxEventBits_27->uxEventBits;
  971. xTimeoutOccurred_40 = 1;
  972. <bb 23> :
  973. # xTicksToWait_16 = PHI <xTicksToWait_45(19), xTicksToWait_32(D)(21), xTicksToWait_32(D)(22)>
  974. # uxReturn_17 = PHI <uxReturn_43(19), uxReturn_42(21), uxReturn_39(22)>
  975. xAlreadyYielded_47 = xTaskResumeAll ();
  976. if (xTicksToWait_16 != 0)
  977. goto <bb 24>; [INV]
  978. else
  979. goto <bb 31>; [INV]
  980. <bb 24> :
  981. if (xAlreadyYielded_47 == 0)
  982. goto <bb 25>; [INV]
  983. else
  984. goto <bb 26>; [INV]
  985. <bb 25> :
  986. _10 = 3758157060B;
  987. *_10 ={v} 268435456;
  988. __asm__ __volatile__("dsb" : : : "memory");
  989. __asm__ __volatile__("isb");
  990. <bb 26> :
  991. uxReturn_52 = uxTaskResetEventItemValue ();
  992. _11 = uxReturn_52 & 33554432;
  993. if (_11 == 0)
  994. goto <bb 27>; [INV]
  995. else
  996. goto <bb 30>; [INV]
  997. <bb 27> :
  998. vPortEnterCritical ();
  999. uxReturn_54 = pxEventBits_27->uxEventBits;
  1000. _12 = uxReturn_54 & uxBitsToWaitFor_29(D);
  1001. if (uxBitsToWaitFor_29(D) == _12)
  1002. goto <bb 28>; [INV]
  1003. else
  1004. goto <bb 29>; [INV]
  1005. <bb 28> :
  1006. _13 = pxEventBits_27->uxEventBits;
  1007. _14 = ~uxBitsToWaitFor_29(D);
  1008. _15 = _13 & _14;
  1009. pxEventBits_27->uxEventBits = _15;
  1010. <bb 29> :
  1011. vPortExitCritical ();
  1012. xTimeoutOccurred_57 = 1;
  1013. <bb 30> :
  1014. # uxReturn_18 = PHI <uxReturn_52(26), uxReturn_54(29)>
  1015. uxReturn_58 = uxReturn_18 & 16777215;
  1016. <bb 31> :
  1017. # uxReturn_19 = PHI <uxReturn_17(23), uxReturn_58(30)>
  1018. _59 = uxReturn_19;
  1019. <bb 32> :
  1020. <L30>:
  1021. return _59;
  1022. }
  1023. xEventGroupCreate ()
  1024. {
  1025. struct EventGroup_t * pxEventBits;
  1026. struct EventGroupDef_t * D.6439;
  1027. struct List_t * _1;
  1028. struct EventGroupDef_t * _8;
  1029. <bb 2> :
  1030. pxEventBits_5 = pvPortMalloc (28);
  1031. if (pxEventBits_5 != 0B)
  1032. goto <bb 3>; [INV]
  1033. else
  1034. goto <bb 4>; [INV]
  1035. <bb 3> :
  1036. pxEventBits_5->uxEventBits = 0;
  1037. _1 = &pxEventBits_5->xTasksWaitingForBits;
  1038. vListInitialise (_1);
  1039. <bb 4> :
  1040. _8 = pxEventBits_5;
  1041. <bb 5> :
  1042. <L3>:
  1043. return _8;
  1044. }