]> begriffs open source - cmsis-freertos/blob - CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd
Update cmsis_os2.c
[cmsis-freertos] / CMSIS / RTOS2 / FreeRTOS / FreeRTOS.scvd
1 <?xml version="1.0" encoding="utf-8"?>
2 <component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
3   <component name="FreeRTOS" version="9.0.0"/>
4
5   <typedefs>
6     <typedef name="ListItem_t" size="20" info="List object definition (list.h)">
7       <!-- Excluded integrity check value -->
8       <member name="xItemValue"  type="uint32_t"    offset="0"/>
9       <member name="pxNext"      type="*ListItem_t" offset="4"/>
10       <member name="pxPrevious"  type="*ListItem_t" offset="8"/>
11       <member name="pvOwner"     type="uint32_t"    offset="12"/>
12       <member name="pvContainer" type="uint32_t"    offset="16"/>
13       <!-- Excluded integrity check value -->
14     </typedef>
15
16     <typedef name="List_t" size="20" info="List definition (list.h)">
17       <!-- Excluded integrity check value -->
18       <member name="uxNumberOfItems" type="uint32_t"    offset="0"/>
19       <member name="pxIndex"         type="*ListItem_t" offset="4"/>
20       <!-- Inlined "MiniListItem_t" structure -->
21       <member name="xListEnd_xItemValue" type="*ListItem_t" offset="8+0"/>
22       <member name="xListEnd_pxNext"     type="*ListItem_t" offset="8+4"/>
23       <member name="xListEnd_pxPrevious" type="*ListItem_t" offset="8+8"/>
24       <!-- Excluded integrity check value -->
25     </typedef>
26
27     <typedef name="Queue_t" size="20" info="Queue definition (queue.c)">
28       <member name="pcHead"    type="uint32_t"    offset="0" info="(type is *int32_t)"/>
29       <member name="pcTail"    type="uint32_t"    offset="4" info="(type is *int32_t)"/>
30       <member name="pcWriteTo" type="uint32_t"    offset="8" info="(type is *int32_t)"/>
31       <!-- Union "u" -->
32       <member name="u_pcReadFrom"           type="uint32_t"  offset="12" info="(type is *int32_t)"/>
33       <member name="u_uxRecursiveCallCount" type="uint32_t"  offset="12"/>
34       <!-- Inlined "List_t" structure -->
35       <member name="xTasksWaitingToSend_uxNumberOfItems"     type="uint32_t"    offset="16+0"/>
36       <member name="xTasksWaitingToSend_pxIndex"             type="*ListItem_t" offset="16+4"/>
37       <member name="xTasksWaitingToSend_xListEnd_xItemValue" type="*ListItem_t" offset="16+8"/>
38       <member name="xTasksWaitingToSend_xListEnd_pxNext"     type="*ListItem_t" offset="16+12"/>
39       <member name="xTasksWaitingToSend_xListEnd_pxPrevious" type="*ListItem_t" offset="16+16"/>
40       <!-- Inlined "List_t" structure -->
41       <member name="xTasksWaitingToReceive_uxNumberOfItems"     type="uint32_t"    offset="32+0"/>
42       <member name="xTasksWaitingToReceive_pxIndex"             type="*ListItem_t" offset="32+4"/>
43       <member name="xTasksWaitingToReceive_xListEnd_xItemValue" type="*ListItem_t" offset="32+8"/>
44       <member name="xTasksWaitingToReceive_xListEnd_pxNext"     type="*ListItem_t" offset="32+12"/>
45       <member name="xTasksWaitingToReceive_xListEnd_pxPrevious" type="*ListItem_t" offset="32+16"/>
46
47       <member name="uxMessagesWaiting" type="uint32_t" offset="52"/>
48       <member name="uxLength"          type="uint32_t" offset="56"/>
49       <member name="uxItemSize"        type="uint32_t" offset="60"/>
50       <member name="cRxLock"           type="int32_t"  offset="64"/>
51       <member name="cTxLock"           type="int32_t"  offset="68"/>
52
53       <!-- #if((configSUPPORT_STATIC_ALLOCATION == 1) && (configSUPPORT_DYNAMIC_ALLOCATION == 1)) -->
54       <!-- <member name="ucStaticallyAllocated" type="uint8_t"  offset="72"/> -->
55       <!-- #endif -->
56       <!-- #if (configUSE_QUEUE_SETS == 1) -->
57       <!-- <member name="pxQueueSetContainer"   type="uint32_t" offset="76"/> -->
58       <!-- #endif -->
59       <!-- #if (configUSE_TRACE_FACILITY == 1) -->
60       <!-- <member name="uxQueueNumber" type="uint32_t" offset="80"/> -->
61       <!-- <member name="uxQueueType"   type="uint8_t"  offset="84"/> -->
62       <!-- #endif -->
63     </typedef>
64
65     <typedef name="QueueRegistryItem_t" size="8">
66       <member name="pcQueueName" type="uint32_t" offset="0" info="(type is const char *)"/>
67       <member name="xHandle"     type="uint32_t" offset="4" info="(type is QueueHandle_t)"/>
68     </typedef>
69
70
71     <typedef name="TCB_t" size="128" info="Task Control Block definition (tasks.c)">
72       <member name="pxTopOfStack" type="uint32_t" offset="0" info="Location of the last item placed on the tasks stack (type is StackType_t *)"/>
73       <!-- Inlined "ListItem_t" structure -->
74       <member name="xStateListItem_xItemValue"  type="uint32_t"    offset="4+0"  info=""/>
75       <member name="xStateListItem_pxNext"      type="*ListItem_t" offset="4+4"  info=""/>
76       <member name="xStateListItem_pxPrevious"  type="*ListItem_t" offset="4+8"  info=""/>
77       <member name="xStateListItem_pvOwner"     type="uint32_t"    offset="4+12" info=""/>
78       <member name="xStateListItem_pvContainer" type="uint32_t"    offset="4+16" info=""/>
79       <!-- Inlined "ListItem_t" structure -->
80       <member name="xEventListItem_xItemValue"  type="uint32_t"    offset="24+0"  info=""/>
81       <member name="xEventListItem_pxNext"      type="*ListItem_t" offset="24+4"  info=""/>
82       <member name="xEventListItem_pxPrevious"  type="*ListItem_t" offset="24+8"  info=""/>
83       <member name="xEventListItem_pvOwner"     type="uint32_t"    offset="24+12" info=""/>
84       <member name="xEventListItem_pvContainer" type="uint32_t"    offset="24+16" info=""/>
85
86       <member name="uxPriority" type="uint32_t"           offset="44" info=""/>
87       <member name="pxStack"    type="uint32_t"           offset="48" info=""/>
88       <member name="pcTaskName" type="uint8_t"  size="16" offset="52" info="Task name (size is defined by configMAX_TASK_NAME_LEN)"/>
89
90       <!-- #if(portCRITICAL_NESTING_IN_TCB == 1) -->
91       <!-- <member name="uxCriticalNesting" type="uint32_t" info=""/> -->
92       <!-- #endif -->
93
94       <!-- #if(configUSE_TRACE_FACILITY == 1) -->
95       <!-- <member name="uxTCBNumber"  type="uint32_t" offset="68" info=""/> -->
96       <!-- <member name="uxTaskNumber" type="uint32_t" offset="72" info=""/> -->
97       <!-- #endif -->
98
99       <!-- #if(configUSE_MUTEXES == 1) -->
100       <!-- <member name="uxBasePriority" type="uint32_t" offset="74" info=""/> -->
101       <!-- <member name="uxMutexesHeld"  type="uint32_t" offset="78" info=""/> -->
102       <!-- #endif -->
103
104       <!-- #if(configUSE_APPLICATION_TASK_TAG == 1) -->
105       <!-- <member name="pxTaskTag"  type="uint32_t" info="(type is TaskHookFunction_t)"/> -->
106       <!-- #endif -->
107
108       <!-- #if(configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0) -->
109       <!-- <member name="pvThreadLocalStoragePointers" type="uint32_t" size="10" info="(type is void *)"/> --> <!-- size="configNUM_THREAD_LOCAL_STORAGE_POINTERS" (size is defined by configNUM_THREAD_LOCAL_STORAGE_POINTERS) -->
110       <!-- #endif -->
111
112       <!-- #if(configGENERATE_RUN_TIME_STATS == 1) -->
113       <!-- <member name="ulRunTimeCounter" type="uint32_t" info=""/> -->
114       <!-- #endif -->
115
116       <!-- #if(configUSE_TASK_NOTIFICATIONS == 1) -->
117       <!-- <member name="ulNotifiedValue" type="uint32_t" offset="82" info=""/> -->
118       <!-- <member name="ucNotifyState"   type="uint8_t"  offset="86" info=""/> -->
119       <!-- #endif -->
120
121       <!-- #if(tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0) -->
122       <!-- <member name="ucStaticallyAllocated" type="uint8_t" offset="90" info=""/> -->
123       <!-- endif -->
124
125       <!-- #if(INCLUDE_xTaskAbortDelay == 1) -->
126       <!-- <member name="ucDelayAborted" type="uint32_t" info=""/> -->
127       <!-- #endif -->
128
129       <var name="StackAvailable" type="uint32_t" info="Available stack (unused): current (in bytes)"/>
130       <var name="StackOverflow"  type="uint32_t" info="Stack overflow flag"/>
131     </typedef>
132
133     <typedef name="Timer_t" size="45" info="Timer Control Block definition (timers.c)">
134       <member name="pcTimerName" type="uint32_t" offset="0" info="Timer name (type is const char *)."/>
135       <!-- Inlined "ListItem_t" structure -->
136       <member name="xTimerListItem_xItemValue"  type="uint32_t"    offset="4+0"  info=""/>
137       <member name="xTimerListItem_pxNext"      type="*ListItem_t" offset="4+4"  info=""/>
138       <member name="xTimerListItem_pxPrevious"  type="*ListItem_t" offset="4+8"  info=""/>
139       <member name="xTimerListItem_pvOwner"     type="uint32_t"    offset="4+12" info=""/>
140       <member name="xTimerListItem_pvContainer" type="uint32_t"    offset="4+16" info=""/>
141
142       <member name="xTimerPeriodInTicks" type="uint32_t" offset="24" info="How quickly and often the timer expires."/>
143       <member name="uxAutoReload"        type="uint32_t" offset="28" info="Set to pdTRUE if the timer should be automatically restarted once expired."/>
144       <member name="pvTimerID"           type="uint32_t" offset="32" info="An ID to identify the timer (type is void *)."/>
145       <member name="pxCallbackFunction"  type="uint32_t" offset="36" info="The function that will be called when the timer expires."/>
146
147       <!-- #if(configUSE_TRACE_FACILITY == 1) -->
148       <!-- <member name="uxTimerNumber" type="uint32_t" offset="40" info="An ID assigned by trace tools such as FreeRTOS+Trace."/> -->
149       <!-- #endif -->
150
151       <!-- #if((configSUPPORT_STATIC_ALLOCATION == 1) && (configSUPPORT_DYNAMIC_ALLOCATION == 1)) -->
152       <!-- <member name="ucStaticallyAllocated" type="uint8_t" offset="44" info="Set to pdTRUE if the timer was created statically."/> -->
153       <!-- #endif -->
154
155       <var name="Name" type="uint8_t" info="Timer name string" size="64"/>
156     </typedef>
157
158   </typedefs>
159
160   <objects>
161     <object name="FreeRTOS Object">
162       <var name="i"  type="uint32_t" value="0"/>
163       <var name="j"  type="uint32_t" value="0"/>
164       <var name="sp" type="uint32_t" value="0"/>
165
166       <read name="xSchedulerRunning"      type="uint32_t" symbol="tasks.c/xSchedulerRunning"/>
167       <read name="xTickCount"             type="uint32_t" symbol="tasks.c/xTickCount"/>
168       <read name="xNumOfOverflows"        type="uint32_t" symbol="tasks.c/xNumOfOverflows"/>
169       <read name="uxPendedTicks"          type="uint32_t" symbol="tasks.c/uxPendedTicks"/>
170       <read name="pxCurrentTCB"           type="uint32_t" symbol="tasks.c/pxCurrentTCB"/>
171       <read name="uxCurrentNumberOfTasks" type="uint32_t" symbol="tasks.c/uxCurrentNumberOfTasks"/>
172
173       <read name="xIdleTaskHandle"        type="uint32_t" symbol="tasks.c/xIdleTaskHandle"/>
174       <read name="xTimerTaskHandle"       type="uint32_t" symbol="timers.c/xTimerTaskHandle"/>
175       <read name="xTimerQueue"            type="uint32_t" symbol="timers.c/xTimerQueue"/>
176
177       <!-- Running Task -->
178       <read name="Running_TCB" type="TCB_t" offset="pxCurrentTCB"/>
179
180       <calc>
181         sp = __GetRegVal ("PSP");
182
183         Running_TCB.StackAvailable = sp - Running_TCB.pxStack;
184         Running_TCB.StackOverflow  = (sp &lt;= Running_TCB.pxStack);
185       </calc>
186
187
188       <!-- Ready Tasks -->
189       <readlist name="pxReadyTasksLists" type="List_t" symbol="tasks.c/pxReadyTasksLists" count="__size_of(&quot;tasks.c/pxReadyTasksLists&quot;)" init="1"/>
190
191       <list name="i" start="0" limit="pxReadyTasksLists._count">
192         <readlist cond="pxReadyTasksLists[i].uxNumberOfItems" name="pxReadyTasks" type="ListItem_t" offset="pxReadyTasksLists[i].pxIndex" next="pxNext"/>
193       </list>
194
195       <list name="i" start="0" limit="pxReadyTasks._count">
196         <readlist cond="pxReadyTasks[i].pvOwner &amp;&amp; !(xSchedulerRunning==1 &amp;&amp; (pxReadyTasks[i].pvOwner == pxCurrentTCB))" name="Ready_TCB" type="TCB_t" offset="pxReadyTasks[i].pvOwner"/>
197       </list>
198
199       <!-- Process control blocks -->
200       <list name="i" start="0" limit="Ready_TCB._count">
201         <calc>
202           sp = Ready_TCB[i].pxTopOfStack;
203
204           Ready_TCB[i].StackAvailable = sp - Ready_TCB[i].pxStack;
205           Ready_TCB[i].StackOverflow  = (sp &lt;= Ready_TCB[i].pxStack);
206         </calc>
207       </list>
208
209       <!-- Pending Ready Tasks -->
210       <read name="xPendingReadyList" type="List_t" symbol="tasks.c/xPendingReadyList"/>
211
212       <readlist cond="uxCurrentNumberOfTasks &amp;&amp; xPendingReadyList.uxNumberOfItems" name="pxPendingReadyTasks" type="ListItem_t" offset="xPendingReadyList.xListEnd_pxNext" next="pxNext"/>
213
214       <list name="i" start="0" limit="xPendingReadyList.uxNumberOfItems">
215         <readlist name="PendingReady_TCB" type="TCB_t" offset="pxPendingReadyTasks[i].pvOwner"/>
216       </list>
217
218       <!-- Process control blocks -->
219       <list name="i" start="0" limit="PendingReady_TCB._count">
220         <calc>
221           sp = PendingReady_TCB[i].pxTopOfStack;
222
223           PendingReady_TCB[i].StackAvailable = sp - PendingReady_TCB[i].pxStack;
224           PendingReady_TCB[i].StackOverflow  = (sp &lt;= PendingReady_TCB[i].pxStack);
225         </calc>
226       </list>
227
228       <!-- Delayed Tasks -->
229       <read name="DelayListAddr" type="uint32_t" symbol="tasks.c/pxDelayedTaskList"/>
230
231       <read     cond="DelayListAddr" name="pxDelayedTaskList" type="List_t"     offset="DelayListAddr"/>
232       <readlist cond="DelayListAddr" name="pxDelayedTasks"    type="ListItem_t" offset="pxDelayedTaskList.xListEnd_pxNext" next="pxNext"/>
233
234       <list name="i" start="0" limit="pxDelayedTaskList.uxNumberOfItems" cond="DelayListAddr">
235         <readlist name="Delayed_TCB" type="TCB_t" offset="pxDelayedTasks[i].pvOwner"/>
236       </list>
237
238       <!-- Process control blocks -->
239       <list name="i" start="0" limit="Delayed_TCB._count">
240         <calc>
241           sp = Delayed_TCB[i].pxTopOfStack;
242
243           Delayed_TCB[i].StackAvailable = sp - Delayed_TCB[i].pxStack;
244           Delayed_TCB[i].StackOverflow  = (sp &lt;= Delayed_TCB[i].pxStack);
245         </calc>
246       </list>
247
248       <!-- Overflow Delayed Tasks -->
249       <read name="OverflowDelayListAddr" type="uint32_t" symbol="tasks.c/pxOverflowDelayedTaskList"/>
250
251       <read     cond="OverflowDelayListAddr" name="pxOverflowDelayedTaskList" type="List_t"     offset="OverflowDelayListAddr"/>
252       <readlist cond="OverflowDelayListAddr" name="pxOverflowDelayedTasks"    type="ListItem_t" offset="pxOverflowDelayedTaskList.xListEnd_pxNext" next="pxNext"/>
253
254       <list name="i" start="0" limit="pxOverflowDelayedTaskList.uxNumberOfItems" cond="OverflowDelayListAddr" >
255         <readlist name="OverflowDelayed_TCB" type="TCB_t" offset="pxOverflowDelayedTasks[i].pvOwner"/>
256       </list>
257
258       <!-- Process control blocks -->
259       <list name="i" start="0" limit="OverflowDelayed_TCB._count">
260         <calc>
261           sp = OverflowDelayed_TCB[i].pxTopOfStack;
262
263           OverflowDelayed_TCB[i].StackAvailable = sp - OverflowDelayed_TCB[i].pxStack;
264           OverflowDelayed_TCB[i].StackOverflow  = (sp &lt;= OverflowDelayed_TCB[i].pxStack);
265         </calc>
266       </list>
267
268       <!-- Suspended Tasks (Note: #if (INCLUDE_vTaskSuspend == 1)) -->
269       <read name="xSuspendedTaskList" type="List_t" symbol="tasks.c/xSuspendedTaskList"/>
270
271       <readlist cond="uxCurrentNumberOfTasks &amp;&amp; xSuspendedTaskList.uxNumberOfItems" name="pxSuspendedTasks" type="ListItem_t" offset="xSuspendedTaskList.xListEnd_pxNext" next="pxNext"/>
272
273       <list name="i" start="0" limit="xSuspendedTaskList.uxNumberOfItems">
274         <readlist name="Suspended_TCB" type="TCB_t" offset="pxSuspendedTasks[i].pvOwner"/>
275       </list>
276
277       <!-- Process control blocks -->
278       <list name="i" start="0" limit="Suspended_TCB._count">
279         <calc>
280           sp = Suspended_TCB[i].pxTopOfStack;
281
282           Suspended_TCB[i].StackAvailable = sp - Suspended_TCB[i].pxStack;
283           Suspended_TCB[i].StackOverflow  = (sp &lt;= Suspended_TCB[i].pxStack);
284         </calc>
285       </list>
286
287       <!-- Tasks Waiting Termination (Note: #if(INCLUDE_vTaskDelete == 1)) -->
288       <read name="xTasksWaitingTermination" type="List_t" symbol="tasks.c/xTasksWaitingTermination"/>
289
290       <readlist cond="uxCurrentNumberOfTasks &amp;&amp; xTasksWaitingTermination.uxNumberOfItems" name="pxTasksWaitingTermination" type="ListItem_t" offset="xTasksWaitingTermination.xListEnd_pxNext" next="pxNext"/>
291
292       <list name="i" start="0" limit="xTasksWaitingTermination.uxNumberOfItems">
293         <readlist name="WaitTermination_TCB" type="TCB_t" offset="pxTasksWaitingTermination[i].pvOwner"/>
294       </list>
295
296       <!-- Process control blocks -->
297       <list name="i" start="0" limit="WaitTermination_TCB._count">
298         <calc>
299           sp = WaitTermination_TCB[i].pxTopOfStack;
300
301           WaitTermination_TCB[i].StackAvailable = sp - WaitTermination_TCB[i].pxStack;
302           WaitTermination_TCB[i].StackOverflow  = (sp &lt;= WaitTermination_TCB[i].pxStack);
303         </calc>
304       </list>
305
306       <!-- Timers -->
307       <read name="TimerListAddr"      type="uint32_t" symbol="timers.c/pxCurrentTimerList"/>
308       <read name="pxCurrentTimerList" type="List_t"   offset="TimerListAddr" />
309
310       <readlist cond="TimerListAddr &amp;&amp; pxCurrentTimerList.uxNumberOfItems" name="pxCurrentTimers" type="ListItem_t" offset="pxCurrentTimerList.pxIndex" next="pxNext"/>
311
312       <list name="i" start="0" limit="pxCurrentTimers._count">
313         <readlist cond="pxCurrentTimers[i].pvOwner" name="Timer_CB" type="Timer_t" offset="pxCurrentTimers[i].pvOwner"/>
314       </list>
315
316       <!-- Process Timer control blocks -->
317       <list name="i" start="0" limit="Timer_CB._count">
318         <!-- Read name string -->
319         <list cond="Timer_CB[i].pcTimerName" name="j" start="0" limit="64">
320           <read name="ch_0" type="uint8_t" offset="Timer_CB[i].pcTimerName + j"/>
321
322           <calc>
323             Timer_CB[i].Name[j] = ch_0;
324           </calc>
325
326           <calc cond="ch_0 == 0">
327             j = 64;
328           </calc>
329         </list>
330       </list>
331
332       <!-- Overflow Timers -->
333       <read name="OverflowTimerListAddr" type="uint32_t" symbol="timers.c/pxOverflowTimerList"/>
334       <read name="pxOverflowTimerList"   type="List_t"   offset="OverflowTimerListAddr" />
335
336       <readlist cond="OverflowTimerListAddr &amp;&amp; pxOverflowTimerList.uxNumberOfItems" name="pxOverflowTimers" type="ListItem_t" offset="pxOverflowTimerList.pxIndex" next="pxNext"/>
337
338       <list name="i" start="0" limit="pxOverflowTimers._count">
339         <readlist cond="pxOverflowTimers[i].pvOwner" name="OverflowTimer_CB" type="Timer_t" offset="pxOverflowTimers[i].pvOwner"/>
340       </list>
341
342       <!-- Process Timer control blocks -->
343       <list name="i" start="0" limit="OverflowTimer_CB._count">
344         <!-- Read name string -->
345         <list cond="OverflowTimer_CB[i].pcTimerName" name="j" start="0" limit="64">
346           <read name="ch_1" type="uint8_t" offset="OverflowTimer_CB[i].pcTimerName + j"/>
347
348           <calc>
349             OverflowTimer_CB[i].Name[j] = ch_1;
350           </calc>
351
352           <calc cond="ch_1 == 0">
353             j = 64;
354           </calc>
355         </list>
356       </list>
357
358
359       <out name="FreeRTOS RTOS">
360         <item property="Kernel" value="">
361           <item property="Scheduler State"      value="%t[xSchedulerRunning ? &quot;Running&quot; : &quot;Not running&quot;]"/>
362           <item property="Tick Pending"         value="%d[uxPendedTicks]" cond="uxPendedTicks"/>
363           <item property="Tick Count"           value="%d[xTickCount]"/>
364           <item property="Tick Count Overflows" value="%d[xNumOfOverflows]" cond="xNumOfOverflows"/>
365           <item property="Task Count"           value="%d[uxCurrentNumberOfTasks]"/>
366         </item>
367
368         <item property="Running Task" value="" cond="xSchedulerRunning">
369           <item property="h: %x[pxCurrentTCB] %t[Running_TCB.pcTaskName]" value="">
370             <item property="Priority"    value="%d[Running_TCB.uxPriority]" />
371             <item property="Stack Limit" value="%x[Running_TCB.pxStack]" />
372             <item property="Stack Top"   value="%x[Running_TCB.pxTopOfStack]" />
373             <item>
374               <print cond="Running_TCB.StackOverflow == 0" property="Stack Available" value="%d[Running_TCB.StackAvailable] bytes"/>
375               <print cond="Running_TCB.StackOverflow != 0" property="Stack Overflow"  value="%d[Running_TCB.StackAvailable] bytes" bold="1" alert="1"/>
376             </item>
377           </item>
378         </item>
379
380         <item property="Ready Tasks (%d[Ready_TCB._count])" value="">
381           <list name="i" start="0" limit="Ready_TCB._count">
382             <item property="h: %x[Ready_TCB[i]._addr] %t[Ready_TCB[i].pcTaskName]" value="">
383               <item property="Priority"    value="%d[Ready_TCB[i].uxPriority]" />
384               <item property="Stack Limit" value="%x[Ready_TCB[i].pxStack]" />
385               <item property="Stack Top"   value="%x[Ready_TCB[i].pxTopOfStack]" />
386               <item>
387                 <print cond="Ready_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[Ready_TCB[i].StackAvailable] bytes"/>
388                 <print cond="Ready_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[Ready_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
389               </item>
390             </item>
391           </list>
392         </item>
393
394         <item property="Pending Ready Tasks (%d[PendingReady_TCB._count])" value="" cond="PendingReady_TCB._count">
395           <list name="i" start="0" limit="PendingReady_TCB._count">
396             <item property="h: %x[PendingReady_TCB[i]._addr] %t[PendingReady_TCB[i].pcTaskName]" value="">
397               <item property="Priority"    value="%d[PendingReady_TCB[i].uxPriority]" />
398               <item property="Stack Limit" value="%x[PendingReady_TCB[i].pxStack]" />
399               <item property="Stack Top"   value="%x[PendingReady_TCB[i].pxTopOfStack]" />
400               <item>
401                 <print cond="PendingReady_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[PendingReady_TCB[i].StackAvailable] bytes"/>
402                 <print cond="PendingReady_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[PendingReady_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
403               </item>
404             </item>
405           </list>
406         </item>
407
408         <item property="Delayed Tasks (%d[Delayed_TCB._count])" value="">
409           <list name="i" start="0" limit="Delayed_TCB._count">
410             <item property="h: %x[Delayed_TCB[i]._addr] %t[Delayed_TCB[i].pcTaskName]" value="">
411               <item property="Wake time"   value="%d[Delayed_TCB[i].xStateListItem_xItemValue]" />
412               <item property="Priority"    value="%d[Delayed_TCB[i].uxPriority]" />
413               <item property="Stack Limit" value="%x[Delayed_TCB[i].pxStack]" />
414               <item property="Stack Top"   value="%x[Delayed_TCB[i].pxTopOfStack]" />
415               <item>
416                 <print cond="Delayed_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[Delayed_TCB[i].StackAvailable] bytes"/>
417                 <print cond="Delayed_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[Delayed_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
418               </item>
419             </item>
420           </list>
421         </item>
422
423         <item property="Overflow Delayed Tasks (%d[OverflowDelayed_TCB._count])" value="" cond="OverflowDelayed_TCB._count">
424           <list name="i" start="0" limit="OverflowDelayed_TCB._count">
425             <item property="h: %x[OverflowDelayed_TCB[i]._addr] %t[OverflowDelayed_TCB[i].pcTaskName]" value="">
426               <item property="Wake time"   value="%d[OverflowDelayed_TCB[i].xStateListItem_xItemValue]" />
427               <item property="Priority"    value="%d[OverflowDelayed_TCB[i].uxPriority]" />
428               <item property="Stack Limit" value="%x[OverflowDelayed_TCB[i].pxStack]" />
429               <item property="Stack Top"   value="%x[OverflowDelayed_TCB[i].pxTopOfStack]" />
430               <item>
431                 <print cond="OverflowDelayed_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[OverflowDelayed_TCB[i].StackAvailable] bytes"/>
432                 <print cond="OverflowDelayed_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[OverflowDelayed_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
433               </item>
434             </item>
435           </list>
436         </item>
437
438         <item property="Suspended Tasks (%d[Suspended_TCB._count])" value="">
439           <list name="i" start="0" limit="Suspended_TCB._count">
440             <item property="h: %x[Suspended_TCB[i]._addr] %t[Suspended_TCB[i].pcTaskName]" value="">
441               <item property="Priority"    value="%d[Suspended_TCB[i].uxPriority]" />
442               <item property="Stack Limit" value="%x[Suspended_TCB[i].pxStack]" />
443               <item property="Stack Top"   value="%x[Suspended_TCB[i].pxTopOfStack]" />
444               <item>
445                 <print cond="Suspended_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[Suspended_TCB[i].StackAvailable] bytes"/>
446                 <print cond="Suspended_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[Suspended_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
447               </item>
448             </item>
449           </list>
450         </item>
451
452         <item property="Waiting Termination Tasks (%d[WaitTermination_TCB._count])" value="" cond="WaitTermination_TCB._count">
453           <list name="i" start="0" limit="WaitTermination_TCB._count">
454             <item property="h: %x[WaitTermination_TCB[i]._addr] %t[WaitTermination_TCB[i].pcTaskName]" value="">
455               <item property="Priority"        value="%d[WaitTermination_TCB[i].uxPriority]" />
456               <item property="Stack Limit"     value="%x[WaitTermination_TCB[i].pxStack]" />
457               <item property="Stack Top"       value="%x[WaitTermination_TCB[i].pxTopOfStack]" />
458               <item>
459                 <print cond="WaitTermination_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[WaitTermination_TCB[i].StackAvailable] bytes"/>
460                 <print cond="WaitTermination_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[WaitTermination_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
461               </item>
462             </item>
463           </list>
464         </item>
465
466         <item property="Timers (%d[Timer_CB._count])" value="">
467           <list name="i" start="0" limit="Timer_CB._count">
468             <item property="h: %x[Timer_CB[i]._addr] %t[Timer_CB[i].Name]" value="">
469               <item property="Wake Time"   value="%d[Timer_CB[i].xTimerListItem_xItemValue]" />
470               <item property="Period"      value="%d[Timer_CB[i].xTimerPeriodInTicks]" />
471               <item property="Auto Reload" value="%t[Timer_CB[i].uxAutoReload ? &quot;True&quot; : &quot;False&quot;]" />
472               <item property="ID"          value="%x[Timer_CB[i].pvTimerID]" />
473               <item property="Callback"    value="%S[Timer_CB[i].pxCallbackFunction]" />
474             </item>
475           </list>
476         </item>
477
478         <item property="Overflowed Timers (%d[OverflowTimer_CB._count])" value="" cond="OverflowTimer_CB._count">
479           <list name="i" start="0" limit="OverflowTimer_CB._count">
480             <item property="h: %x[OverflowTimer_CB[i]._addr] %t[OverflowTimer_CB[i].Name]" value="">
481               <item property="Wake Time"   value="%d[OverflowTimer_CB[i].xTimerListItem_xItemValue]" />
482               <item property="Period"      value="%d[OverflowTimer_CB[i].xTimerPeriodInTicks]" />
483               <item property="Auto Reload" value="%t[OverflowTimer_CB[i].uxAutoReload ? &quot;True&quot; : &quot;False&quot;]" />
484               <item property="ID"          value="%x[OverflowTimer_CB[i].pvTimerID]" />
485               <item property="Callback"    value="%S[OverflowTimer_CB[i].pxCallbackFunction]" />
486             </item>
487           </list>
488         </item>
489       </out>
490     </object>
491   </objects>
492
493   <events>
494
495     <group name="FreeRTOS RTOS">
496       <component name="Tasks Events"       brief="FreeRTOS Tasks"       no="0xF0" prefix="EvrFreeRTOSTasks_"       info="FreeRTOS Tasks Events"/>
497       <component name="Queue Events"       brief="FreeRTOS Queue"       no="0xF1" prefix="EvrFreeRTOSQueue_"       info="FreeRTOS Queue Events"/>
498       <component name="Timers Events"      brief="FreeRTOS Timers"      no="0xF2" prefix="EvrFreeRTOSTimers_"      info="FreeRTOS Timers Events"/>
499       <component name="EventGroups Events" brief="FreeRTOS EventGroups" no="0xF3" prefix="EvrFreeRTOSEventGroups_" info="FreeRTOS Event Groups Events"/>
500       <component name="Heap Events"        brief="FreeRTOS Heap"        no="0xF4" prefix="EvrFreeRTOSHeap_"        info="FreeRTOS Heap Events"/>
501     </group>
502
503     <event id="0xF000 + 0x00" level="Op"     property="TaskCreate"                value="pxNewTCB=%x[val1]" info=""/>
504     <event id="0xF000 + 0x01" level="Error"  property="TaskCreateFailed"          value="" info=""/>
505     <event id="0xF000 + 0x02" level="Op"     property="TaskDelete"                value="pxTCB=%x[val1]" info=""/>
506     <event id="0xF000 + 0x03" level="Op"     property="TaskDelayUntil"            value="xTimeToWake=%d[val1]" info=""/>
507     <event id="0xF000 + 0x04" level="Op"     property="TaskDelay"                 value="xTicksToDelay=%d[val1]" info=""/>
508     <event id="0xF000 + 0x05" level="Op"     property="TaskPrioritySet"           value="pxTCB=%x[val1], uxNewPriority=%d[val2]" info=""/>
509     <event id="0xF000 + 0x06" level="Op"     property="TaskSuspend"               value="pxTCB=%x[val1]" info=""/>
510     <event id="0xF000 + 0x07" level="Op"     property="TaskResume"                value="pxTCB=%x[val1]" info=""/>
511     <event id="0xF000 + 0x08" level="Op"     property="TaskResumeFromIsr"         value="pxTCB=%x[val1]" info=""/>
512     <event id="0xF000 + 0x09" level="Detail" property="TaskIncrementTick"         value="xTickCount=%d[val1]" info=""/>
513     <event id="0xF000 + 0x0A" level="Op"     property="IncreaseTickCount"         value="xTicksToJump=%d[val1]" info=""/>
514     <event id="0xF000 + 0x0B" level="Op"     property="TaskSwitchedOut"           value="pxCurrentTCB=%x[val1]" info=""/>
515     <event id="0xF000 + 0x0C" level="Op"     property="TaskSwitchedIn"            value="pxCurrentTCB=%x[val1], priority=%d[val2]" info=""/>
516     <event id="0xF000 + 0x0D" level="Op"     property="TaskPriorityInherit"       value="pxTCBOfMutexHolder=%x[val1], uxInheritedPriority=%d[val2]" info=""/>
517     <event id="0xF000 + 0x0E" level="Op"     property="TaskPriorityDisinherit"    value="pxTCBOfMutexHolder=%x[val1], uxOriginalPriority=%d[val2]" info=""/>
518     <event id="0xF000 + 0x0F" level="Op"     property="MovedTaskToReadyState"     value="pxTCB=%x[val1]" info=""/>
519     <event id="0xF000 + 0x10" level="Op"     property="PostMovedTaskToReadyState" value="pxTCB=%x[val1]" info=""/>
520     <event id="0xF000 + 0x11" level="Op"     property="LowPowerIdleBegin"         value="xExpectedIdleTime=%d[val1]" info=""/>
521     <event id="0xF000 + 0x12" level="Op"     property="LowPowerIdleEnd"           value="" info=""/>
522     <event id="0xF000 + 0x13" level="Op"     property="TaskNotifyTakeBlock"       value="xTicksToWait=%d[val1]" info=""/>
523     <event id="0xF000 + 0x14" level="Op"     property="TaskNotifyTake"            value="ulNotifiedValue=%x[val1]" info=""/>
524     <event id="0xF000 + 0x15" level="Op"     property="TaskNotifyWaitBlock"       value="xTicksToWait=%d[val1]" info=""/>
525     <event id="0xF000 + 0x16" level="Op"     property="TaskNotifyWait"            value="ulNotifiedValue=%x[val1]" info=""/>
526     <event id="0xF000 + 0x17" level="Op"     property="TaskNotify"                value="xTaskToNotify=%x[val1], ulValue=%x[val2], eAction=%x[val3], ulNotifiedValue=%x[val4]" info=""/>
527     <event id="0xF000 + 0x18" level="Op"     property="TaskNotifyFromIsr"         value="xTaskToNotify=%x[val1], ulValue=%x[val2], eAction=%x[val3], ulNotifiedValue=%x[val4]" info=""/>
528     <event id="0xF000 + 0x19" level="Op"     property="TaskNotifyGiveFromIsr"     value="xTaskToNotify=%x[val1], ulNotifiedValue=%x[val2]" info=""/>
529
530     <event id="0xF100 + 0x00" level="Op"    property="QueueCreate"                   value="pxQueue=%x[val1]" info=""/>
531     <event id="0xF100 + 0x01" level="Error" property="QueueCreateFailed"             value="ucQueueType=%x[val1]" info=""/>
532     <event id="0xF100 + 0x02" level="Op"    property="CreateMutex"                   value="pxNewQueue=%x[val1]" info=""/>
533     <event id="0xF100 + 0x03" level="Error" property="CreateMutexFailed"             value="" info=""/>
534     <event id="0xF100 + 0x04" level="Op"    property="GiveMutexRecursive"            value="pxMutex=%x[val1]" info=""/>
535     <event id="0xF100 + 0x05" level="Error" property="GiveMutexRecursiveFailed"      value="pxMutex=%x[val1]" info=""/>
536     <event id="0xF100 + 0x06" level="Op"    property="TakeMutexRecursive"            value="pxMutex=%x[val1]" info=""/>
537     <event id="0xF100 + 0x07" level="Error" property="TakeMutexRecursiveFailed"      value="pxMutex=%x[val1]" info=""/>
538     <event id="0xF100 + 0x08" level="Op"    property="CreateCountingSemaphore"       value="xHandle=%x[val1]" info=""/>
539     <event id="0xF100 + 0x09" level="Error" property="CreateCountingSemaphoreFailed" value="" info=""/>
540     <event id="0xF100 + 0x0A" level="Op"    property="QueueSend"                     value="pxQueue=%x[val1]" info=""/>
541     <event id="0xF100 + 0x0B" level="Error" property="QueueSendFailed"               value="pxQueue=%x[val1]" info=""/>
542     <event id="0xF100 + 0x0C" level="Op"    property="QueueReceive"                  value="pxQueue=%x[val1]" info=""/>
543     <event id="0xF100 + 0x0D" level="Op"    property="QueuePeek"                     value="pxQueue=%x[val1]" info=""/>
544     <event id="0xF100 + 0x0E" level="Op"    property="QueuePeekFromIsr"              value="pxQueue=%x[val1]" info=""/>
545     <event id="0xF100 + 0x0F" level="Error" property="QueueReceiveFailed"            value="pxQueue=%x[val1]" info=""/>
546     <event id="0xF100 + 0x10" level="Op"    property="QueueSendFromIsr"              value="pxQueue=%x[val1]" info=""/>
547     <event id="0xF100 + 0x11" level="Error" property="QueueSendFromIsrFailed"        value="pxQueue=%x[val1]" info=""/>
548     <event id="0xF100 + 0x12" level="Op"    property="QueueReceiveFromIsr"           value="pxQueue=%x[val1]" info=""/>
549     <event id="0xF100 + 0x13" level="Error" property="QueueReceiveFromIsrFailed"     value="pxQueue=%x[val1]" info=""/>
550     <event id="0xF100 + 0x14" level="Error" property="QueuePeekFromIsrFailed"        value="pxQueue=%x[val1]" info=""/>
551     <event id="0xF100 + 0x15" level="Op"    property="QueueDelete"                   value="pxQueue=%x[val1]" info=""/>
552     <event id="0xF100 + 0x16" level="Op"    property="QueueRegistryAdd"              value="pxQueue=%x[val1], pcQueueName=%x[val2]" info=""/>
553     <event id="0xF100 + 0x17" level="Op"    property="BlockingOnQueueReceive"        value="pxQueue=%x[val1]" info=""/>
554     <event id="0xF100 + 0x18" level="Op"    property="BlockingOnQueueSend"           value="pxQueue=%x[val1]" info=""/>
555
556     <event id="0xF200 + 0x00" level="Op"    property="TimerCreate"          value="pxNewTimer=%x[val1]" info=""/>
557     <event id="0xF200 + 0x01" level="Error" property="TimerCreateFailed"    value="" info=""/>
558     <event id="0xF200 + 0x02" level="Op"    property="TimerCommandSend"     value="xTimer=%x[val1], xMessageID=%x[val2], xOptionalValue=%x[val3], xReturn=%x[val4]" info=""/>
559     <event id="0xF200 + 0x03" level="Op"    property="TimerCommandReceived" value="xTimer=%x[val1], xMessageID=%x[val2], xOptionalValue=%x[val3]" info=""/>
560     <event id="0xF200 + 0x04" level="Op"    property="TimerExpired"         value="pxTimer=%x[val1]" info=""/>
561     <event id="0xF200 + 0x05" level="Op"    property="PendFuncCall"         value="pxFunctionToPend=%x[val1], pvParameter1=%x[val2], ulParameter2=%x[val3], xReturn=%x[val4]" info=""/>
562     <event id="0xF200 + 0x06" level="Op"    property="PendFuncCallFromIsr"  value="pxFunctionToPend=%x[val1], pvParameter1=%x[val2], ulParameter2=%x[val3], xReturn=%x[val4]" info=""/>
563
564     <event id="0xF300 + 0x00" level="Op"    property="EventGroupCreate"           value="pxEventGroup=%x[val1]" info=""/>
565     <event id="0xF300 + 0x01" level="Error" property="EventGroupCreateFailed"     value="" info=""/>
566     <event id="0xF300 + 0x02" level="Op"    property="EventGroupSyncBlock"        value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2], uxBitsToWaitFor=%x[val3]" info=""/>
567     <event id="0xF300 + 0x03" level="Op"    property="EventGroupSyncEnd"          value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2], uxBitsToWaitFor=%x[val3], xTimeoutOccurred=%x[val4]" info=""/>
568     <event id="0xF300 + 0x04" level="Op"    property="EventGroupWaitBitsBlock"    value="pxEventGroup=%x[val1], uxBitsToWaitFor=%x[val2]" info=""/>
569     <event id="0xF300 + 0x05" level="Op"    property="EventGroupWaitBitsEnd"      value="pxEventGroup=%x[val1], uxBitsToWaitFor=%x[val2], xTimeoutOccurred=%x[val3]" info=""/>
570     <event id="0xF300 + 0x06" level="Op"    property="EventGroupClearBits"        value="pxEventGroup=%x[val1], uxBitsToClear=%x[val2]" info=""/>
571     <event id="0xF300 + 0x07" level="Op"    property="EventGroupClearBitsFromIsr" value="pxEventGroup=%x[val1], uxBitsToClear=%x[val2]" info=""/>
572     <event id="0xF300 + 0x08" level="Op"    property="EventGroupSetBits"          value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2]" info=""/>
573     <event id="0xF300 + 0x09" level="Op"    property="EventGroupSetBitsFromIsr"   value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2]" info=""/>
574     <event id="0xF300 + 0x0A" level="Op"    property="EventGroupDelete"           value="pxEventGroup=%x[val1]" info=""/>
575
576     <event id="0xF400 + 0x00" level="Op"    property="Malloc" value="pvAddress=%x[val1], uiSize=%d[val2]" info=""/>
577     <event id="0xF400 + 0x01" level="Op"    property="Free"   value="pvAddress=%x[val1], uiSize=%d[val2]" info=""/>
578
579   </events>
580
581 </component_viewer>