]> begriffs open source - cmsis-freertos/blob - CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd
Merge branch 'develop'
[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="CMSIS-FreeRTOS" version="10.4.6"/>
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="76" info="Queue definition (queue.c)">
28       <member name="pcHead"    type="uint32_t"    offset="0" info="(type is *int32_t), also uxQueueType"/>
29       <member name="pcTail"    type="uint32_t"    offset="4" info="(type is *int32_t), also pxMutexHolder"/>
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="36+0"/>
42       <member name="xTasksWaitingToReceive_pxIndex"             type="*ListItem_t" offset="36+4"/>
43       <member name="xTasksWaitingToReceive_xListEnd_xItemValue" type="*ListItem_t" offset="36+8"/>
44       <member name="xTasksWaitingToReceive_xListEnd_pxNext"     type="*ListItem_t" offset="36+12"/>
45       <member name="xTasksWaitingToReceive_xListEnd_pxPrevious" type="*ListItem_t" offset="36+16"/>
46
47       <member name="uxMessagesWaiting" type="uint32_t" offset="56"/>
48       <member name="uxLength"          type="uint32_t" offset="60"/>
49       <member name="uxItemSize"        type="uint32_t" offset="64"/>
50       <member name="cRxLock"           type="int32_t"  offset="68"/>
51       <member name="cTxLock"           type="int32_t"  offset="72"/>
52
53       <!-- #if((configSUPPORT_STATIC_ALLOCATION == 1) && (configSUPPORT_DYNAMIC_ALLOCATION == 1)) -->
54       <!-- <member name="ucStaticallyAllocated" type="uint8_t"  offset="76"/> -->
55       <!-- #endif -->
56       <!-- #if (configUSE_QUEUE_SETS == 1) -->
57       <!-- <member name="pxQueueSetContainer"   type="uint32_t" offset="80"/> -->
58       <!-- #endif -->
59       <!-- #if (configUSE_TRACE_FACILITY == 1) -->
60       <!-- <member name="uxQueueNumber" type="uint32_t" offset="84"/> -->
61       <!-- <member name="uxQueueType"   type="uint8_t"  offset="88"/> -->
62       <!-- #endif -->
63       
64       <var name="Name"  type="uint8_t" size="64" info="Queue name (ASCII)"/>
65       <var name="Type"  type="uint32_t" info="Queue type (Queue:0, Mutex:1, Semaphore:2)"/>
66     </typedef>
67
68     <typedef name="QueueRegistryItem_t" size="8">
69       <member name="pcQueueName" type="uint32_t" offset="0" info="(type is const char *)"/>
70       <member name="xHandle"     type="uint32_t" offset="4" info="(type is QueueHandle_t)"/>
71     </typedef>
72
73
74     <typedef name="TCB_t" size="128" info="Task Control Block definition (tasks.c)">
75       <member name="pxTopOfStack" type="uint32_t" offset="0" info="Location of the last item placed on the tasks stack (type is StackType_t *)"/>
76       <!-- Inlined "ListItem_t" structure -->
77       <member name="xStateListItem_xItemValue"  type="uint32_t"    offset="4+0"  info=""/>
78       <member name="xStateListItem_pxNext"      type="*ListItem_t" offset="4+4"  info=""/>
79       <member name="xStateListItem_pxPrevious"  type="*ListItem_t" offset="4+8"  info=""/>
80       <member name="xStateListItem_pvOwner"     type="uint32_t"    offset="4+12" info=""/>
81       <member name="xStateListItem_pvContainer" type="uint32_t"    offset="4+16" info=""/>
82       <!-- Inlined "ListItem_t" structure -->
83       <member name="xEventListItem_xItemValue"  type="uint32_t"    offset="24+0"  info=""/>
84       <member name="xEventListItem_pxNext"      type="*ListItem_t" offset="24+4"  info=""/>
85       <member name="xEventListItem_pxPrevious"  type="*ListItem_t" offset="24+8"  info=""/>
86       <member name="xEventListItem_pvOwner"     type="uint32_t"    offset="24+12" info=""/>
87       <member name="xEventListItem_pvContainer" type="uint32_t"    offset="24+16" info=""/>
88
89       <member name="uxPriority" type="uint32_t"           offset="44" info=""/>
90       <member name="pxStack"    type="uint32_t"           offset="48" info=""/>
91       <member name="pcTaskName" type="uint8_t"  size="16" offset="52" info="Task name (size is defined by configMAX_TASK_NAME_LEN)"/>
92
93       <!-- #if(portCRITICAL_NESTING_IN_TCB == 1) -->
94       <!-- <member name="uxCriticalNesting" type="uint32_t" info=""/> -->
95       <!-- #endif -->
96
97       <!-- #if(configUSE_TRACE_FACILITY == 1) -->
98       <!-- <member name="uxTCBNumber"  type="uint32_t" offset="68" info=""/> -->
99       <!-- <member name="uxTaskNumber" type="uint32_t" offset="72" info=""/> -->
100       <!-- #endif -->
101
102       <!-- #if(configUSE_MUTEXES == 1) -->
103       <!-- <member name="uxBasePriority" type="uint32_t" offset="74" info=""/> -->
104       <!-- <member name="uxMutexesHeld"  type="uint32_t" offset="78" info=""/> -->
105       <!-- #endif -->
106
107       <!-- #if(configUSE_APPLICATION_TASK_TAG == 1) -->
108       <!-- <member name="pxTaskTag"  type="uint32_t" info="(type is TaskHookFunction_t)"/> -->
109       <!-- #endif -->
110
111       <!-- #if(configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0) -->
112       <!-- <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) -->
113       <!-- #endif -->
114
115       <!-- #if(configGENERATE_RUN_TIME_STATS == 1) -->
116       <!-- <member name="ulRunTimeCounter" type="uint32_t" info=""/> -->
117       <!-- #endif -->
118
119       <!-- #if(configUSE_TASK_NOTIFICATIONS == 1) -->
120       <!-- <member name="ulNotifiedValue" type="uint32_t" offset="82" info=""/> -->
121       <!-- <member name="ucNotifyState"   type="uint8_t"  offset="86" info=""/> -->
122       <!-- #endif -->
123
124       <!-- #if(tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0) -->
125       <!-- <member name="ucStaticallyAllocated" type="uint8_t" offset="90" info=""/> -->
126       <!-- endif -->
127
128       <!-- #if(INCLUDE_xTaskAbortDelay == 1) -->
129       <!-- <member name="ucDelayAborted" type="uint32_t" info=""/> -->
130       <!-- #endif -->
131       
132       <!-- #if( configUSE_POSIX_ERRNO == 1 ) -->
133       <!-- <member name="iTaskErrno" type="int32_t" info=""/> -->
134       <!-- #endif -->
135
136       <var name="StackAvailable" type="uint32_t" info="Available stack (unused): current (in bytes)"/>
137       <var name="StackOverflow"  type="uint32_t" info="Stack overflow flag"/>
138       <var name="WaitType"       type="uint32_t" info="Waiting object type  (Queue:0, Mutex:1, Semaphore:2, EventGroup:3)"/>
139       <var name="WaitValue"      type="uint32_t" info="Waiting object value (Index in Queue_CB or event group flags)"/>
140     </typedef>
141
142     <typedef name="Timer_t" size="36" info="Timer Control Block definition (timers.c)">
143       <member name="pcTimerName" type="uint32_t" offset="0" info="Timer name (type is const char *)."/>
144       <!-- Inlined "ListItem_t" structure -->
145       <member name="xTimerListItem_xItemValue"  type="uint32_t"    offset="4+0"  info=""/>
146       <member name="xTimerListItem_pxNext"      type="*ListItem_t" offset="4+4"  info=""/>
147       <member name="xTimerListItem_pxPrevious"  type="*ListItem_t" offset="4+8"  info=""/>
148       <member name="xTimerListItem_pvOwner"     type="uint32_t"    offset="4+12" info=""/>
149       <member name="xTimerListItem_pvContainer" type="uint32_t"    offset="4+16" info=""/>
150
151       <member name="xTimerPeriodInTicks" type="uint32_t" offset="24" info="How quickly and often the timer expires."/>
152       <member name="pvTimerID"           type="uint32_t" offset="28" info="An ID to identify the timer (type is void *)."/>
153       <member name="pxCallbackFunction"  type="uint32_t" offset="32" info="The function that will be called when the timer expires."/>
154
155       <!-- #if(configUSE_TRACE_FACILITY == 1) -->
156       <!-- <member name="uxTimerNumber" type="uint32_t" offset="36" info="An ID assigned by trace tools such as FreeRTOS+Trace."/> -->
157       <!-- #endif -->
158
159       <!-- <member name="ucStatus"      type="uint8_t"  offset="40" info="Status bitmask (timer active/inactive, static allocation)."/> -->
160
161       <var name="Name" type="uint8_t" info="Timer name string" size="64"/>
162     </typedef>
163
164   </typedefs>
165
166   <objects>
167     <object name="FreeRTOS Object">
168       <var name="i"  type="uint32_t" value="0"/>
169       <var name="j"  type="uint32_t" value="0"/>
170       <var name="n"  type="uint32_t" value="0"/>
171       <var name="sp" type="uint32_t" value="0"/>
172
173       <var name="CV_En" type="uint8_t" value="0"/>
174
175       <var name="Queue_REG_Size"       type="uint32_t" value="0"/>
176       <var name="Queue_REG_Queues"     type="uint32_t" value="0"/>
177       <var name="Queue_REG_Mutexes"    type="uint32_t" value="0"/>
178       <var name="Queue_REG_Semaphores" type="uint32_t" value="0"/>
179
180       <read name="xSchedulerRunning"      type="uint32_t" symbol="tasks.c/xSchedulerRunning"/>
181       <read name="xYieldPending"          type="uint32_t" symbol="tasks.c/xYieldPending"/>
182       <read name="xTickCount"             type="uint32_t" symbol="tasks.c/xTickCount"/>
183       <read name="xNumOfOverflows"        type="uint32_t" symbol="tasks.c/xNumOfOverflows"/>
184       <read name="xPendedTicks"           type="uint32_t" symbol="tasks.c/xPendedTicks"/>
185       <read name="pxCurrentTCB"           type="uint32_t" symbol="tasks.c/pxCurrentTCB"/>
186       <read name="uxCurrentNumberOfTasks" type="uint32_t" symbol="tasks.c/uxCurrentNumberOfTasks"/>
187
188       <read name="xIdleTaskHandle"        type="uint32_t" symbol="tasks.c/xIdleTaskHandle"/>
189       <read name="xTimerTaskHandle"       type="uint32_t" symbol="timers.c/xTimerTaskHandle"/>
190       <read name="xTimerQueue"            type="uint32_t" symbol="timers.c/xTimerQueue"/>
191
192       <!-- Try to determine if memory is initialized -->
193       <calc cond="((xSchedulerRunning &lt; 2) &amp;&amp; (xYieldPending &lt; 2))">
194         CV_En = 1;
195       </calc>
196
197       <!-- Running Task -->
198       <read cond="CV_En" name="Running_TCB" type="TCB_t" offset="pxCurrentTCB"/>
199
200       <calc cond="CV_En">
201         sp = __GetRegVal ("PSP");
202
203         Running_TCB.StackAvailable = sp - Running_TCB.pxStack;
204         Running_TCB.StackOverflow  = (sp &lt;= Running_TCB.pxStack);
205       </calc>
206
207
208       <!-- Ready Tasks -->
209       <readlist cond="CV_En" name="pxReadyTasksLists" type="List_t" symbol="tasks.c/pxReadyTasksLists" count="__size_of(&quot;tasks.c/pxReadyTasksLists&quot;)" init="1"/>
210       
211       <!-- Read ready lists for each priority -->
212       <list name="i" start="0" limit="pxReadyTasksLists._count">
213         <!-- Determine address of first item in list, read current item and determine address of next item in list -->
214         <calc> n = pxReadyTasksLists[i].xListEnd_pxNext; </calc>
215
216         <list name="j" start="0" limit="pxReadyTasksLists[i].uxNumberOfItems">
217           <readlist name="pxReadyTasks" type="ListItem_t" offset="n" count="1"/>
218
219           <calc> n = pxReadyTasks[pxReadyTasks._count-1].pxNext; </calc>
220         </list>
221       </list>
222
223       <!-- Read control blocks -->
224       <list name="i" start="0" limit="pxReadyTasks._count">
225         <readlist name="Ready_TCB" type="TCB_t" offset="pxReadyTasks[i].pvOwner" cond="!(xSchedulerRunning==1 &amp;&amp; (pxReadyTasks[i].pvOwner == pxCurrentTCB))"/>
226       </list>
227
228       <!-- Process control blocks -->
229       <list name="i" start="0" limit="Ready_TCB._count">
230         <calc>
231           sp = Ready_TCB[i].pxTopOfStack;
232
233           Ready_TCB[i].StackAvailable = sp - Ready_TCB[i].pxStack;
234           Ready_TCB[i].StackOverflow  = (sp &lt;= Ready_TCB[i].pxStack);
235         </calc>
236       </list>
237
238
239       <!-- Pending Ready Tasks -->
240       <read name="xPendingReadyList" type="List_t" symbol="tasks.c/xPendingReadyList" cond="CV_En"/>
241       
242       <!-- Determine address of first item in list, read current item and determine address of next item in list -->
243       <calc cond="CV_En">
244         n = xPendingReadyList.xListEnd_pxNext;
245       </calc>
246
247       <list name="j" start="0" limit="xPendingReadyList.uxNumberOfItems" cond="CV_En">
248         <readlist name="pxPendingReadyTasks" type="ListItem_t" offset="n" count="1"/>
249
250         <calc> n = pxPendingReadyTasks[pxPendingReadyTasks._count-1].pxNext; </calc>
251       </list>
252
253       <!-- Read control blocks -->
254       <list name="i" start="0" limit="xPendingReadyList.uxNumberOfItems" cond="CV_En">
255         <readlist name="PendingReady_TCB" type="TCB_t" offset="pxPendingReadyTasks[i].pvOwner"/>
256       </list>
257
258       <!-- Process control blocks -->
259       <list name="i" start="0" limit="PendingReady_TCB._count">
260         <calc>
261           sp = PendingReady_TCB[i].pxTopOfStack;
262
263           PendingReady_TCB[i].StackAvailable = sp - PendingReady_TCB[i].pxStack;
264           PendingReady_TCB[i].StackOverflow  = (sp &lt;= PendingReady_TCB[i].pxStack);
265         </calc>
266       </list>
267
268
269       <!-- Delayed Tasks -->
270       <read name="DelayListAddr" type="uint32_t" symbol="tasks.c/pxDelayedTaskList" cond="CV_En"/>
271       <read name="pxDelayedTaskList" type="List_t" offset="DelayListAddr"           cond="CV_En &amp;&amp; DelayListAddr"/>
272       
273       <!-- Determine address of first item in list, read current item and determine address of next item in list -->
274       <calc cond="DelayListAddr">
275         n = pxDelayedTaskList.xListEnd_pxNext;
276       </calc>
277
278       <list name="j" start="0" limit="pxDelayedTaskList.uxNumberOfItems" cond="DelayListAddr">
279         <readlist name="pxDelayedTasks" type="ListItem_t" offset="n" count="1"/>
280
281         <calc> n = pxDelayedTasks[pxDelayedTasks._count-1].pxNext; </calc>
282       </list>
283
284       <!-- Read control blocks -->
285       <list name="i" start="0" limit="pxDelayedTaskList.uxNumberOfItems" cond="DelayListAddr">
286         <readlist name="Delayed_TCB" type="TCB_t" offset="pxDelayedTasks[i].pvOwner"/>
287       </list>
288
289       <!-- Process control blocks -->
290       <list name="i" start="0" limit="Delayed_TCB._count">
291         <calc>
292           sp = Delayed_TCB[i].pxTopOfStack;
293
294           Delayed_TCB[i].StackAvailable = sp - Delayed_TCB[i].pxStack;
295           Delayed_TCB[i].StackOverflow  = (sp &lt;= Delayed_TCB[i].pxStack);
296         </calc>
297       </list>
298
299
300       <!-- Overflow Delayed Tasks -->
301       <read name="OverflowDelayListAddr" type="uint32_t" symbol="tasks.c/pxOverflowDelayedTaskList" cond="CV_En"/>
302       <read name="pxOverflowDelayedTaskList" type="List_t" offset="OverflowDelayListAddr"           cond="CV_En &amp;&amp; OverflowDelayListAddr"/>
303
304       <!-- Determine address of first item in list, read current item and determine address of next item in list -->
305       <calc cond="OverflowDelayListAddr">
306         n = pxOverflowDelayedTaskList.xListEnd_pxNext;
307       </calc>
308
309       <list name="j" start="0" limit="pxOverflowDelayedTaskList.uxNumberOfItems" cond="OverflowDelayListAddr">
310         <readlist name="pxOverflowDelayedTasks" type="ListItem_t" offset="n" count="1"/>
311
312         <calc> n = pxOverflowDelayedTasks[pxOverflowDelayedTasks._count-1].pxNext; </calc>
313       </list>
314
315       <!-- Read control blocks -->
316       <list name="i" start="0" limit="pxOverflowDelayedTaskList.uxNumberOfItems" cond="OverflowDelayListAddr" >
317         <readlist name="OverflowDelayed_TCB" type="TCB_t" offset="pxOverflowDelayedTasks[i].pvOwner"/>
318       </list>
319
320       <!-- Process control blocks -->
321       <list name="i" start="0" limit="OverflowDelayed_TCB._count">
322         <calc>
323           sp = OverflowDelayed_TCB[i].pxTopOfStack;
324
325           OverflowDelayed_TCB[i].StackAvailable = sp - OverflowDelayed_TCB[i].pxStack;
326           OverflowDelayed_TCB[i].StackOverflow  = (sp &lt;= OverflowDelayed_TCB[i].pxStack);
327         </calc>
328       </list>
329
330
331       <!-- Suspended Tasks (Note: #if (INCLUDE_vTaskSuspend == 1)) -->
332       <read name="xSuspendedTaskList" type="List_t" symbol="tasks.c/xSuspendedTaskList" cond="CV_En"/>
333
334       <!-- Determine address of first item in list, read current item and determine address of next item in list -->
335       <calc cond="CV_En">
336         n = xSuspendedTaskList.xListEnd_pxNext;
337       </calc>
338
339       <list name="j" start="0" limit="xSuspendedTaskList.uxNumberOfItems" cond="CV_En">
340         <readlist name="pxSuspendedTasks" type="ListItem_t" offset="n" count="1"/>
341
342         <calc> n = pxSuspendedTasks[pxSuspendedTasks._count-1].pxNext; </calc>
343       </list>
344
345       <!-- Read control blocks -->
346       <list name="i" start="0" limit="xSuspendedTaskList.uxNumberOfItems" cond="CV_En">
347         <readlist name="Suspended_TCB" type="TCB_t" offset="pxSuspendedTasks[i].pvOwner"/>
348       </list>
349
350       <!-- Process control blocks -->
351       <list name="i" start="0" limit="Suspended_TCB._count">
352         <calc>
353           sp = Suspended_TCB[i].pxTopOfStack;
354
355           Suspended_TCB[i].StackAvailable = sp - Suspended_TCB[i].pxStack;
356           Suspended_TCB[i].StackOverflow  = (sp &lt;= Suspended_TCB[i].pxStack);
357         </calc>
358       </list>
359
360
361       <!-- Tasks Waiting Termination (Note: #if(INCLUDE_vTaskDelete == 1)) -->
362       <read name="xTasksWaitingTermination" type="List_t" symbol="tasks.c/xTasksWaitingTermination" cond="CV_En"/>
363
364       <!-- Determine address of first item in list, read current item and determine address of next item in list -->
365       <calc cond="CV_En">
366         n = xTasksWaitingTermination.xListEnd_pxNext;
367       </calc>
368
369       <list name="j" start="0" limit="xTasksWaitingTermination.uxNumberOfItems" cond="CV_En">
370         <readlist name="pxTasksWaitingTermination" type="ListItem_t" offset="n" count="1"/>
371
372         <calc> n = pxTasksWaitingTermination[pxTasksWaitingTermination._count-1].pxNext; </calc>
373       </list>
374
375       <!-- Read control blocks -->
376       <list name="i" start="0" limit="xTasksWaitingTermination.uxNumberOfItems" cond="CV_En">
377         <readlist name="WaitTermination_TCB" type="TCB_t" offset="pxTasksWaitingTermination[i].pvOwner"/>
378       </list>
379
380       <!-- Process control blocks -->
381       <list name="i" start="0" limit="WaitTermination_TCB._count">
382         <calc>
383           sp = WaitTermination_TCB[i].pxTopOfStack;
384
385           WaitTermination_TCB[i].StackAvailable = sp - WaitTermination_TCB[i].pxStack;
386           WaitTermination_TCB[i].StackOverflow  = (sp &lt;= WaitTermination_TCB[i].pxStack);
387         </calc>
388       </list>
389
390
391       <!-- Timers -->
392       <read name="TimerListAddr"      type="uint32_t" symbol="timers.c/pxCurrentTimerList" cond="CV_En"/>
393       <read name="pxCurrentTimerList" type="List_t"   offset="TimerListAddr"               cond="CV_En"/>
394       
395       <!-- Determine address of first item in list, read current item and determine address of next item in list -->
396       <calc cond="TimerListAddr">
397         n = pxCurrentTimerList.xListEnd_pxNext;
398       </calc>
399
400       <list name="j" start="0" limit="pxCurrentTimerList.uxNumberOfItems" cond="TimerListAddr">
401         <readlist name="pxCurrentTimers" type="ListItem_t" offset="n" count="1"/>
402
403         <calc> n = pxCurrentTimers[pxCurrentTimers._count-1].pxNext; </calc>
404       </list>
405
406       <!-- Read control blocks -->
407       <list name="i" start="0" limit="pxCurrentTimers._count">
408         <readlist cond="pxCurrentTimers[i].pvOwner" name="Timer_CB" type="Timer_t" offset="pxCurrentTimers[i].pvOwner"/>
409       </list>
410
411       <!-- Process Timer control blocks -->
412       <list name="i" start="0" limit="Timer_CB._count">
413         <!-- Read name string -->
414         <list cond="Timer_CB[i].pcTimerName" name="j" start="0" limit="64">
415           <read name="ch_0" type="uint8_t" offset="Timer_CB[i].pcTimerName + j"/>
416
417           <calc>
418             Timer_CB[i].Name[j] = ch_0;
419           </calc>
420
421           <calc cond="ch_0 == 0">
422             j = 64;
423           </calc>
424         </list>
425       </list>
426
427
428       <!-- Overflow Timers -->
429       <read name="OverflowTimerListAddr" type="uint32_t" symbol="timers.c/pxOverflowTimerList" cond="CV_En"/>
430       <read name="pxOverflowTimerList"   type="List_t"   offset="OverflowTimerListAddr"        cond="CV_En"/>
431
432       <!-- Determine address of first item in list, read current item and determine address of next item in list -->
433       <calc cond="OverflowTimerListAddr">
434         n = pxOverflowTimerList.xListEnd_pxNext;
435       </calc>
436
437       <list name="j" start="0" limit="pxOverflowTimerList.uxNumberOfItems" cond="OverflowTimerListAddr">
438         <readlist name="pxOverflowTimers" type="ListItem_t" offset="n" count="1"/>
439
440         <calc> n = pxOverflowTimers[pxOverflowTimers._count-1].pxNext; </calc>
441       </list>
442
443       <!-- Read control blocks -->
444       <list name="i" start="0" limit="pxOverflowTimers._count">
445         <readlist cond="pxOverflowTimers[i].pvOwner" name="OverflowTimer_CB" type="Timer_t" offset="pxOverflowTimers[i].pvOwner"/>
446       </list>
447
448       <!-- Process Timer control blocks -->
449       <list name="i" start="0" limit="OverflowTimer_CB._count">
450         <!-- Read name string -->
451         <list cond="OverflowTimer_CB[i].pcTimerName" name="j" start="0" limit="64">
452           <read name="ch_1" type="uint8_t" offset="OverflowTimer_CB[i].pcTimerName + j"/>
453
454           <calc>
455             OverflowTimer_CB[i].Name[j] = ch_1;
456           </calc>
457
458           <calc cond="ch_1 == 0">
459             j = 64;
460           </calc>
461         </list>
462       </list>
463
464
465       <!-- Read Queue Registry (Queues, Semaphores, Mutexes) -->
466       <calc cond="__Symbol_exists (&quot;queue.c/xQueueRegistry&quot;)">
467         Queue_REG_Size = __size_of (&quot;queue.c/xQueueRegistry&quot;);
468       </calc>
469       
470       <readlist cond="Queue_REG_Size != 0" name="Queue_REG" type="QueueRegistryItem_t" count="Queue_REG_Size" symbol="queue.c/xQueueRegistry"/>
471       
472       <!-- Read registered objects -->
473       <list cond="Queue_REG_Size" name="i" start="0" limit="Queue_REG._count">
474         <readlist cond="Queue_REG[i].xHandle != 0" name="Queue_CB" type="Queue_t" offset="Queue_REG[i].xHandle"/>
475
476         <!-- Read name string -->
477         <list name="n" start="0" limit="64" cond="(Queue_REG[i].xHandle != 0) &amp;&amp; (Queue_REG[i].pcQueueName != 0)">
478           <read name="ch_2" type="uint8_t" offset="Queue_REG[i].pcQueueName + n"/>
479
480           <calc>
481             Queue_CB[Queue_CB._count-1].Name[n] = ch_2;
482           </calc>
483
484           <calc cond="ch_2 == 0">
485             n = 64;
486           </calc>
487         </list>
488
489       </list>
490
491       <list cond="Queue_REG_Size" name="i" start="0" limit="Queue_CB._count">
492         <!-- Queue -->
493         <calc>
494           Queue_CB[i].Type = 0;
495         </calc>
496         <!-- Mutex -->
497         <calc cond="Queue_CB[i].pcHead == 0">
498           Queue_CB[i].Type = 1;
499           Queue_REG_Mutexes++;
500         </calc>
501         <!-- Semaphore -->
502         <calc cond="Queue_CB[i].pcHead == Queue_CB[i]._addr">
503           Queue_CB[i].Type = 2;
504           Queue_REG_Semaphores++;
505         </calc>
506
507         <calc>
508           Queue_REG_Queues = Queue_CB._count - Queue_REG_Mutexes - Queue_REG_Semaphores;
509         </calc>
510       </list>
511       
512       <!-- Check if enqueued objects exist on task list -->
513       <list cond="Queue_REG_Size" name="i" start="0" limit="Queue_CB._count">
514         <!-- Get address of Queue_t member xTasksWaitingToReceive -->
515         <calc>
516           n  = Queue_CB[i]._addr;
517           n += 36;
518         </calc>        
519         
520         <!-- Loop over delayed tasks -->
521         <list name="j" start="0" limit="Delayed_TCB._count">
522           <!-- Check if TCB waits for Event Group -->
523           <calc cond="(Delayed_TCB[j].xEventListItem_xItemValue &amp; 0x80000000)">
524             Delayed_TCB[j].WaitType  = 3;
525             Delayed_TCB[j].WaitValue = Delayed_TCB[j].xEventListItem_xItemValue &amp; 0x00FFFFFF;
526           </calc>
527           <!-- Check if TCB exist on Queue_t list -->
528           <calc cond="Delayed_TCB[j].xEventListItem_pvContainer == n">
529             Delayed_TCB[j].WaitType  = Queue_CB[i].Type;
530             Delayed_TCB[j].WaitValue = i;
531           </calc>
532         </list>
533
534         <!-- Loop over overflow delayed tasks -->
535         <list name="j" start="0" limit="OverflowDelayed_TCB._count">
536           <!-- Check if TCB waits for Event Group -->
537           <calc cond="(OverflowDelayed_TCB[j].xEventListItem_xItemValue &amp; 0x80000000)">
538             OverflowDelayed_TCB[j].WaitType  = 3;
539             OverflowDelayed_TCB[j].WaitValue = OverflowDelayed_TCB[j].xEventListItem_xItemValue &amp; 0x00FFFFFF;
540           </calc>
541           <!-- Check if TCB exist on Queue_t list -->
542           <calc cond="OverflowDelayed_TCB[j].xEventListItem_pvContainer == n">
543             OverflowDelayed_TCB[j].WaitType  = Queue_CB[i].Type;
544             OverflowDelayed_TCB[j].WaitValue = i;
545           </calc>
546         </list>
547
548       </list>
549
550       <out name="FreeRTOS RTOS">
551         <item property="Kernel" value="">
552           <item property="Scheduler State"      value="%t[(CV_En &amp;&amp; xSchedulerRunning) ? &quot;Running&quot; : &quot;Not running&quot;]"/>
553           <item property="Tick Pending"         value="%d[xPendedTicks]"           cond="CV_En &amp;&amp; xPendedTicks"/>
554           <item property="Tick Count"           value="%d[xTickCount]"             cond="CV_En"/>
555           <item property="Tick Count Overflows" value="%d[xNumOfOverflows]"        cond="CV_En &amp;&amp; xNumOfOverflows"/>
556           <item property="Task Count"           value="%d[uxCurrentNumberOfTasks]" cond="CV_En"/>
557         </item>
558
559         <item property="Running Task" value="" cond="CV_En &amp;&amp; xSchedulerRunning">
560           <item property="h: %x[pxCurrentTCB] %t[Running_TCB.pcTaskName]" value="">
561             <item property="Priority"    value="%d[Running_TCB.uxPriority]" />
562             <item property="Stack Limit" value="%x[Running_TCB.pxStack]" />
563             <item property="Stack Top"   value="%x[Running_TCB.pxTopOfStack]" />
564             <item>
565               <print cond="Running_TCB.StackOverflow == 0" property="Stack Available" value="%d[Running_TCB.StackAvailable] bytes"/>
566               <print cond="Running_TCB.StackOverflow != 0" property="Stack Overflow"  value="%d[Running_TCB.StackAvailable] bytes" bold="1" alert="1"/>
567             </item>
568           </item>
569         </item>
570
571         <item property="Ready Tasks (%d[Ready_TCB._count])" value="">
572           <list name="i" start="0" limit="Ready_TCB._count">
573             <item property="h: %x[Ready_TCB[i]._addr] %t[Ready_TCB[i].pcTaskName]" value="">
574               <item property="Priority"    value="%d[Ready_TCB[i].uxPriority]" />
575               <item property="Stack Limit" value="%x[Ready_TCB[i].pxStack]" />
576               <item property="Stack Top"   value="%x[Ready_TCB[i].pxTopOfStack]" />
577               <item>
578                 <print cond="Ready_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[Ready_TCB[i].StackAvailable] bytes"/>
579                 <print cond="Ready_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[Ready_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
580               </item>
581             </item>
582           </list>
583         </item>
584
585         <item property="Pending Ready Tasks (%d[PendingReady_TCB._count])" value="" cond="PendingReady_TCB._count">
586           <list name="i" start="0" limit="PendingReady_TCB._count">
587             <item property="h: %x[PendingReady_TCB[i]._addr] %t[PendingReady_TCB[i].pcTaskName]" value="">
588               <item property="Priority"    value="%d[PendingReady_TCB[i].uxPriority]" />
589               <item property="Stack Limit" value="%x[PendingReady_TCB[i].pxStack]" />
590               <item property="Stack Top"   value="%x[PendingReady_TCB[i].pxTopOfStack]" />
591               <item>
592                 <print cond="PendingReady_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[PendingReady_TCB[i].StackAvailable] bytes"/>
593                 <print cond="PendingReady_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[PendingReady_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
594               </item>
595             </item>
596           </list>
597         </item>
598
599         <item property="Delayed Tasks (%d[Delayed_TCB._count])" value="">
600           <list name="i" start="0" limit="Delayed_TCB._count">
601             <item property="h: %x[Delayed_TCB[i]._addr] %t[Delayed_TCB[i].pcTaskName]" value="">
602
603               <item cond="Queue_REG_Size">
604                 <print cond="Delayed_TCB[i].WaitType == 0" property="Waiting Queue"      value="h: %x[Queue_CB[Delayed_TCB[i].WaitValue]._addr] %t[Queue_CB[Delayed_TCB[i].WaitValue].Name]"/>
605                 <print cond="Delayed_TCB[i].WaitType == 1" property="Waiting Mutex"      value="h: %x[Queue_CB[Delayed_TCB[i].WaitValue]._addr] %t[Queue_CB[Delayed_TCB[i].WaitValue].Name]"/>
606                 <print cond="Delayed_TCB[i].WaitType == 2" property="Waiting Semaphore"  value="h: %x[Queue_CB[Delayed_TCB[i].WaitValue]._addr] %t[Queue_CB[Delayed_TCB[i].WaitValue].Name]"/>
607                 <print cond="Delayed_TCB[i].WaitType == 3" property="Waiting EventGroup" value="Flags: %x[Delayed_TCB[i].WaitValue]"/>
608               </item>
609
610               <item property="Wake time"   value="%d[Delayed_TCB[i].xStateListItem_xItemValue]" />
611               <item property="Priority"    value="%d[Delayed_TCB[i].uxPriority]" />
612               <item property="Stack Limit" value="%x[Delayed_TCB[i].pxStack]" />
613               <item property="Stack Top"   value="%x[Delayed_TCB[i].pxTopOfStack]" />
614               <item>
615                 <print cond="Delayed_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[Delayed_TCB[i].StackAvailable] bytes"/>
616                 <print cond="Delayed_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[Delayed_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
617               </item>
618             </item>
619           </list>
620         </item>
621
622         <item property="Overflow Delayed Tasks (%d[OverflowDelayed_TCB._count])" value="" cond="OverflowDelayed_TCB._count">
623           <list name="i" start="0" limit="OverflowDelayed_TCB._count">
624             <item property="h: %x[OverflowDelayed_TCB[i]._addr] %t[OverflowDelayed_TCB[i].pcTaskName]" value="">
625
626               <item cond="Queue_REG_Size">
627                 <print cond="OverflowDelayed_TCB[i].WaitType == 0" property="Waiting Queue"      value="h: %x[Queue_CB[OverflowDelayed_TCB[i].WaitValue]._addr] %t[Queue_CB[OverflowDelayed_TCB[i].WaitValue].Name]"/>
628                 <print cond="OverflowDelayed_TCB[i].WaitType == 1" property="Waiting Mutex"      value="h: %x[Queue_CB[OverflowDelayed_TCB[i].WaitValue]._addr] %t[Queue_CB[OverflowDelayed_TCB[i].WaitValue].Name]"/>
629                 <print cond="OverflowDelayed_TCB[i].WaitType == 2" property="Waiting Semaphore"  value="h: %x[Queue_CB[OverflowDelayed_TCB[i].WaitValue]._addr] %t[Queue_CB[OverflowDelayed_TCB[i].WaitValue].Name]"/>
630                 <print cond="OverflowDelayed_TCB[i].WaitType == 3" property="Waiting EventGroup" value="Flags=%x[OverflowDelayed_TCB[i].WaitValue]"/>
631               </item>
632
633               <item property="Wake time"   value="%d[OverflowDelayed_TCB[i].xStateListItem_xItemValue]" />
634               <item property="Priority"    value="%d[OverflowDelayed_TCB[i].uxPriority]" />
635               <item property="Stack Limit" value="%x[OverflowDelayed_TCB[i].pxStack]" />
636               <item property="Stack Top"   value="%x[OverflowDelayed_TCB[i].pxTopOfStack]" />
637               <item>
638                 <print cond="OverflowDelayed_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[OverflowDelayed_TCB[i].StackAvailable] bytes"/>
639                 <print cond="OverflowDelayed_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[OverflowDelayed_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
640               </item>
641             </item>
642           </list>
643         </item>
644
645         <item property="Suspended Tasks (%d[Suspended_TCB._count])" value="">
646           <list name="i" start="0" limit="Suspended_TCB._count">
647             <item property="h: %x[Suspended_TCB[i]._addr] %t[Suspended_TCB[i].pcTaskName]" value="">
648               <item property="Priority"    value="%d[Suspended_TCB[i].uxPriority]" />
649               <item property="Stack Limit" value="%x[Suspended_TCB[i].pxStack]" />
650               <item property="Stack Top"   value="%x[Suspended_TCB[i].pxTopOfStack]" />
651               <item>
652                 <print cond="Suspended_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[Suspended_TCB[i].StackAvailable] bytes"/>
653                 <print cond="Suspended_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[Suspended_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
654               </item>
655             </item>
656           </list>
657         </item>
658
659         <item property="Waiting Termination Tasks (%d[WaitTermination_TCB._count])" value="" cond="WaitTermination_TCB._count">
660           <list name="i" start="0" limit="WaitTermination_TCB._count">
661             <item property="h: %x[WaitTermination_TCB[i]._addr] %t[WaitTermination_TCB[i].pcTaskName]" value="">
662               <item property="Priority"        value="%d[WaitTermination_TCB[i].uxPriority]" />
663               <item property="Stack Limit"     value="%x[WaitTermination_TCB[i].pxStack]" />
664               <item property="Stack Top"       value="%x[WaitTermination_TCB[i].pxTopOfStack]" />
665               <item>
666                 <print cond="WaitTermination_TCB[i].StackOverflow == 0" property="Stack Available" value="%d[WaitTermination_TCB[i].StackAvailable] bytes"/>
667                 <print cond="WaitTermination_TCB[i].StackOverflow != 0" property="Stack Overflow"  value="%d[WaitTermination_TCB[i].StackAvailable] bytes" bold="1" alert="1"/>
668               </item>
669             </item>
670           </list>
671         </item>
672
673         <item property="Timers (%d[Timer_CB._count])" value="">
674           <list name="i" start="0" limit="Timer_CB._count">
675             <item property="h: %x[Timer_CB[i]._addr] %t[Timer_CB[i].Name]" value="">
676               <item property="Wake Time"   value="%d[Timer_CB[i].xTimerListItem_xItemValue]" />
677               <item property="Period"      value="%d[Timer_CB[i].xTimerPeriodInTicks]" />
678               <item property="ID"          value="%x[Timer_CB[i].pvTimerID]" />
679               <item property="Callback"    value="%S[Timer_CB[i].pxCallbackFunction]" />
680             </item>
681           </list>
682         </item>
683
684         <item property="Overflowed Timers (%d[OverflowTimer_CB._count])" value="" cond="OverflowTimer_CB._count">
685           <list name="i" start="0" limit="OverflowTimer_CB._count">
686             <item property="h: %x[OverflowTimer_CB[i]._addr] %t[OverflowTimer_CB[i].Name]" value="">
687               <item property="Wake Time"   value="%d[OverflowTimer_CB[i].xTimerListItem_xItemValue]" />
688               <item property="Period"      value="%d[OverflowTimer_CB[i].xTimerPeriodInTicks]" />
689               <item property="ID"          value="%x[OverflowTimer_CB[i].pvTimerID]" />
690               <item property="Callback"    value="%S[OverflowTimer_CB[i].pxCallbackFunction]" />
691             </item>
692           </list>
693         </item>
694
695         <item property="Mutexes (%d[Queue_REG_Mutexes])" value="" cond="Queue_REG_Size">
696           <list name="i" start="0" limit="Queue_CB._count">          
697             <item property="h: %x[Queue_CB[i]._addr] %t[Queue_CB[i].Name]" value="" cond="Queue_CB[i].Type == 1">
698               <item property="State" value="%t[Queue_CB[i].uxMessagesWaiting == 0 ? &quot;Locked&quot; : &quot;Released&quot;]" />
699               <item property="Recursive counter" value="%d[Queue_CB[i].u_uxRecursiveCallCount]" cond="Queue_CB[i].u_uxRecursiveCallCount"/>
700               <item property="Owner thread" value="h: %x[Queue_CB[i].pcTail]" cond="Queue_CB[i].pcTail != 0"/>
701             </item>
702           </list>
703         </item>
704
705         <item property="Semaphores (%d[Queue_REG_Semaphores])" value="" cond="Queue_REG_Size">
706           <list name="i" start="0" limit="Queue_CB._count">
707             <item property="h: %x[Queue_CB[i]._addr] %t[Queue_CB[i].Name]" value="" cond="Queue_CB[i].Type == 2">
708               <item property="Tokens"     value="%d[Queue_CB[i].uxMessagesWaiting]" />
709               <item property="Max Tokens" value="%d[Queue_CB[i].uxLength]" />
710             </item>
711           </list>
712         </item>
713
714         <item property="Queues (%d[Queue_REG_Queues])" value="" cond="Queue_REG_Size">
715           <list name="i" start="0" limit="Queue_CB._count">
716             <item property="h: %x[Queue_CB[i]._addr] %t[Queue_CB[i].Name]" value="" cond="Queue_CB[i].Type == 0">
717               <item property="Objects"     value="%d[Queue_CB[i].uxMessagesWaiting]" />
718               <item property="Max Objects" value="%d[Queue_CB[i].uxLength]"/>
719               <item property="Object size" value="%d[Queue_CB[i].uxItemSize]"/>
720
721               <!-- Queued messages -->
722               <item cond="Queue_CB[i].uxMessagesWaiting" property="Queue (%d[Queue_CB[i].uxMessagesWaiting])" value="">
723                 <list name="j" start="0" limit="Queue_CB[i].uxMessagesWaiting">
724                   <item property="Queue[%d[j]]" value="Address: %x[Queue_CB[i].pcHead + (j * Queue_CB[i].uxItemSize)]" />
725                 </list>
726               </item>
727
728             </item>
729           </list>
730         </item>
731
732       </out>
733     </object>
734   </objects>
735
736   <events>
737
738     <group name="FreeRTOS RTOS">
739       <component name="Tasks Events"       brief="FreeRTOS Tasks"       no="0xF0" prefix="EvrFreeRTOSTasks_"       info="FreeRTOS Tasks Events">
740         <state name="Inactive"    plot="off"                       />
741         <state name="Ready"       plot="box"                       />
742         <state name="Running"     plot="box"  bold="1" unique="1"  />
743         <state name="Blocked"     plot="line"                      />
744         <state name="Not-running" plot="line" bold="1" dormant="1" />
745       </component>
746       <component name="Queue Events"         brief="FreeRTOS Queue"        no="0xF1" prefix="EvrFreeRTOSQueue_"       info="FreeRTOS Queue Events"/>
747       <component name="Timers Events"        brief="FreeRTOS Timers"       no="0xF2" prefix="EvrFreeRTOSTimers_"      info="FreeRTOS Timers Events"/>
748       <component name="EventGroups Events"   brief="FreeRTOS EventGroups"  no="0xF3" prefix="EvrFreeRTOSEventGroups_" info="FreeRTOS Event Groups Events"/>
749       <component name="Heap Events"          brief="FreeRTOS Heap"         no="0xF4" prefix="EvrFreeRTOSHeap_"        info="FreeRTOS Heap Events"/>
750       <component name="Stream Buffer Events" brief="FreeRTOS StreamBuffer" no="0xF5" prefix="EvrFreeRTOSStreamBuf_"   info="FreeRTOS Stream Buffer Events"/>
751     </group>
752
753     <event id="0xF000 + 0xFF" level="Op"     property="TaskTrackingReset"                                        tracking="Reset" value="" info=""/>
754     <event id="0xF000 + 0x00" level="Op"     property="TaskCreate"                state="Inactive" handle="val1" tracking="Start" value="pxNewTCB=%x[val1]" info=""/>
755     <event id="0xF000 + 0x01" level="Error"  property="TaskCreateFailed"                                                          value="" info=""/>
756     <event id="0xF000 + 0x02" level="Op"     property="TaskDelete"                state="Inactive" handle="val1" tracking="Stop"  value="pxTCB=%x[val1]" info=""/>
757     <event id="0xF000 + 0x03" level="Op"     property="TaskDelayUntil"                                                            value="xTimeToWake=%d[val1]" info=""/>
758     <event id="0xF000 + 0x04" level="Op"     property="TaskDelay"                                                                 value="xTicksToDelay=%d[val1]" info=""/>
759     <event id="0xF000 + 0x05" level="Op"     property="TaskPrioritySet"                                                           value="pxTCB=%x[val1], uxNewPriority=%d[val2]" info=""/>
760     <event id="0xF000 + 0x06" level="Op"     property="TaskSuspend"               state="Blocked"  handle="val1"                  value="pxTCB=%x[val1]" info=""/>
761     <event id="0xF000 + 0x07" level="Op"     property="TaskResume"                                                                value="pxTCB=%x[val1]" info=""/>
762     <event id="0xF000 + 0x08" level="Op"     property="TaskResumeFromIsr"                                                         value="pxTCB=%x[val1]" info=""/>
763     <event id="0xF000 + 0x09" level="Detail" property="TaskIncrementTick"                                                         value="xTickCount=%d[val1]" info=""/>
764     <event id="0xF000 + 0x0A" level="Op"     property="IncreaseTickCount"                                                         value="xTicksToJump=%d[val1]" info=""/>
765     <event id="0xF000 + 0x0B" level="Op"     property="TaskSwitchedOut"           state="Blocked"  handle="val1"                  value="pxCurrentTCB=%x[val1]" info=""/>
766     <event id="0xF000 + 0x0C" level="Op"     property="TaskSwitchedIn"            state="Running"  handle="val1"                  value="pxCurrentTCB=%x[val1], priority=%d[val2]" info=""/>
767     <event id="0xF000 + 0x0D" level="Op"     property="TaskPriorityInherit"                                                       value="pxTCBOfMutexHolder=%x[val1], uxInheritedPriority=%d[val2]" info=""/>
768     <event id="0xF000 + 0x0E" level="Op"     property="TaskPriorityDisinherit"                                                    value="pxTCBOfMutexHolder=%x[val1], uxOriginalPriority=%d[val2]" info=""/>
769     <event id="0xF000 + 0x0F" level="Op"     property="MovedTaskToReadyState"     state="Ready"    handle="val1"                  value="pxTCB=%x[val1]" info=""/>
770     <event id="0xF000 + 0x10" level="Op"     property="PostMovedTaskToReadyState"                                                 value="pxTCB=%x[val1]" info=""/>
771     <event id="0xF000 + 0x11" level="Op"     property="LowPowerIdleBegin"                                                         value="xExpectedIdleTime=%d[val1]" info=""/>
772     <event id="0xF000 + 0x12" level="Op"     property="LowPowerIdleEnd"                                                           value="" info=""/>
773     <event id="0xF000 + 0x13" level="Op"     property="TaskNotifyTakeBlock"                                                       value="uxIndexToWait=%d[val1], xTicksToWait=%d[val2]" info=""/>
774     <event id="0xF000 + 0x14" level="Op"     property="TaskNotifyTake"                                                            value="uxIndexToWait=%d[val1], ulNotifiedValue=%x[val2]" info=""/>
775     <event id="0xF000 + 0x15" level="Op"     property="TaskNotifyWaitBlock"                                                       value="uxIndexToWait=%d[val1], xTicksToWait=%d[val2]" info=""/>
776     <event id="0xF000 + 0x16" level="Op"     property="TaskNotifyWait"                                                            value="uxIndexToWait=%d[val1], ulNotifiedValue=%x[val2]" info=""/>
777     <event id="0xF000 + 0x17" level="Op"     property="TaskNotify"                                                                value="xTaskToNotify=%x[val1], uxIndexToWait=%x[val2], eAction=%x[val3], ulNotifiedValue=%x[val4]" info=""/>
778     <event id="0xF000 + 0x18" level="Op"     property="TaskNotifyFromIsr"                                                         value="xTaskToNotify=%x[val1], uxIndexToWait=%x[val2], eAction=%x[val3], ulNotifiedValue=%x[val4]" info=""/>
779     <event id="0xF000 + 0x19" level="Op"     property="TaskNotifyGiveFromIsr"                                                     value="xTaskToNotify=%x[val1], uxIndexToWait=%x[val2], ulNotifiedValue=%x[val3]" info=""/>
780
781     <event id="0xF100 + 0x00" level="Op"    property="QueueCreate"                   value="pxQueue=%x[val1]" info=""/>
782     <event id="0xF100 + 0x01" level="Error" property="QueueCreateFailed"             value="ucQueueType=%x[val1]" info=""/>
783     <event id="0xF100 + 0x02" level="Op"    property="CreateMutex"                   value="pxNewQueue=%x[val1]" info=""/>
784     <event id="0xF100 + 0x03" level="Error" property="CreateMutexFailed"             value="" info=""/>
785     <event id="0xF100 + 0x04" level="Op"    property="GiveMutexRecursive"            value="pxMutex=%x[val1]" info=""/>
786     <event id="0xF100 + 0x05" level="Error" property="GiveMutexRecursiveFailed"      value="pxMutex=%x[val1]" info=""/>
787     <event id="0xF100 + 0x06" level="Op"    property="TakeMutexRecursive"            value="pxMutex=%x[val1]" info=""/>
788     <event id="0xF100 + 0x07" level="Error" property="TakeMutexRecursiveFailed"      value="pxMutex=%x[val1]" info=""/>
789     <event id="0xF100 + 0x08" level="Op"    property="CreateCountingSemaphore"       value="xHandle=%x[val1]" info=""/>
790     <event id="0xF100 + 0x09" level="Error" property="CreateCountingSemaphoreFailed" value="" info=""/>
791     <event id="0xF100 + 0x0A" level="Op"    property="QueueSend"                     value="pxQueue=%x[val1]" info=""/>
792     <event id="0xF100 + 0x0B" level="Error" property="QueueSendFailed"               value="pxQueue=%x[val1]" info=""/>
793     <event id="0xF100 + 0x0C" level="Op"    property="QueueReceive"                  value="pxQueue=%x[val1]" info=""/>
794     <event id="0xF100 + 0x0D" level="Op"    property="QueuePeek"                     value="pxQueue=%x[val1]" info=""/>
795     <event id="0xF100 + 0x0E" level="Op"    property="QueuePeekFromIsr"              value="pxQueue=%x[val1]" info=""/>
796     <event id="0xF100 + 0x0F" level="Error" property="QueueReceiveFailed"            value="pxQueue=%x[val1]" info=""/>
797     <event id="0xF100 + 0x10" level="Op"    property="QueueSendFromIsr"              value="pxQueue=%x[val1]" info=""/>
798     <event id="0xF100 + 0x11" level="Error" property="QueueSendFromIsrFailed"        value="pxQueue=%x[val1]" info=""/>
799     <event id="0xF100 + 0x12" level="Op"    property="QueueReceiveFromIsr"           value="pxQueue=%x[val1]" info=""/>
800     <event id="0xF100 + 0x13" level="Error" property="QueueReceiveFromIsrFailed"     value="pxQueue=%x[val1]" info=""/>
801     <event id="0xF100 + 0x14" level="Error" property="QueuePeekFromIsrFailed"        value="pxQueue=%x[val1]" info=""/>
802     <event id="0xF100 + 0x15" level="Op"    property="QueueDelete"                   value="pxQueue=%x[val1]" info=""/>
803     <event id="0xF100 + 0x16" level="Op"    property="QueueRegistryAdd"              value="pxQueue=%x[val1], pcQueueName=%x[val2]" info=""/>
804     <event id="0xF100 + 0x17" level="Op"    property="BlockingOnQueueReceive"        value="pxQueue=%x[val1]" info=""/>
805     <event id="0xF100 + 0x18" level="Op"    property="BlockingOnQueueSend"           value="pxQueue=%x[val1]" info=""/>
806
807     <event id="0xF200 + 0x00" level="Op"    property="TimerCreate"          value="pxNewTimer=%x[val1]" info=""/>
808     <event id="0xF200 + 0x01" level="Error" property="TimerCreateFailed"    value="" info=""/>
809     <event id="0xF200 + 0x02" level="Op"    property="TimerCommandSend"     value="xTimer=%x[val1], xMessageID=%x[val2], xOptionalValue=%x[val3], xReturn=%x[val4]" info=""/>
810     <event id="0xF200 + 0x03" level="Op"    property="TimerCommandReceived" value="xTimer=%x[val1], xMessageID=%x[val2], xOptionalValue=%x[val3]" info=""/>
811     <event id="0xF200 + 0x04" level="Op"    property="TimerExpired"         value="pxTimer=%x[val1]" info=""/>
812     <event id="0xF200 + 0x05" level="Op"    property="PendFuncCall"         value="pxFunctionToPend=%x[val1], pvParameter1=%x[val2], ulParameter2=%x[val3], xReturn=%x[val4]" info=""/>
813     <event id="0xF200 + 0x06" level="Op"    property="PendFuncCallFromIsr"  value="pxFunctionToPend=%x[val1], pvParameter1=%x[val2], ulParameter2=%x[val3], xReturn=%x[val4]" info=""/>
814
815     <event id="0xF300 + 0x00" level="Op"    property="EventGroupCreate"           value="pxEventGroup=%x[val1]" info=""/>
816     <event id="0xF300 + 0x01" level="Error" property="EventGroupCreateFailed"     value="" info=""/>
817     <event id="0xF300 + 0x02" level="Op"    property="EventGroupSyncBlock"        value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2], uxBitsToWaitFor=%x[val3]" info=""/>
818     <event id="0xF300 + 0x03" level="Op"    property="EventGroupSyncEnd"          value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2], uxBitsToWaitFor=%x[val3], xTimeoutOccurred=%x[val4]" info=""/>
819     <event id="0xF300 + 0x04" level="Op"    property="EventGroupWaitBitsBlock"    value="pxEventGroup=%x[val1], uxBitsToWaitFor=%x[val2]" info=""/>
820     <event id="0xF300 + 0x05" level="Op"    property="EventGroupWaitBitsEnd"      value="pxEventGroup=%x[val1], uxBitsToWaitFor=%x[val2], xTimeoutOccurred=%x[val3]" info=""/>
821     <event id="0xF300 + 0x06" level="Op"    property="EventGroupClearBits"        value="pxEventGroup=%x[val1], uxBitsToClear=%x[val2]" info=""/>
822     <event id="0xF300 + 0x07" level="Op"    property="EventGroupClearBitsFromIsr" value="pxEventGroup=%x[val1], uxBitsToClear=%x[val2]" info=""/>
823     <event id="0xF300 + 0x08" level="Op"    property="EventGroupSetBits"          value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2]" info=""/>
824     <event id="0xF300 + 0x09" level="Op"    property="EventGroupSetBitsFromIsr"   value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2]" info=""/>
825     <event id="0xF300 + 0x0A" level="Op"    property="EventGroupDelete"           value="pxEventGroup=%x[val1]" info=""/>
826
827     <event id="0xF400 + 0x00" level="Op"    property="Malloc" value="pvAddress=%x[val1], uiSize=%d[val2]" info=""/>
828     <event id="0xF400 + 0x01" level="Op"    property="Free"   value="pvAddress=%x[val1], uiSize=%d[val2]" info=""/>
829
830     <event id="0xF500 + 0x00" level="Error" property="StreamBufferCreateFailed"       value="uxIsMessageBuffer=%d[val1]" info=""/>
831     <event id="0xF500 + 0x01" level="Error" property="StreamBufferCreateStaticFailed" value="pxStreamBuffer=%x[val1], uxIsMessageBuffer=%d[val2]" info=""/>
832     <event id="0xF500 + 0x02" level="Op"    property="StreamBufferCreate"             value="pxStreamBuffer=%x[val1], uxIsMessageBuffer=%d[val2]" info=""/>
833     <event id="0xF500 + 0x03" level="Op"    property="StreamBufferDelete"             value="pxStreamBuffer=%x[val1]" info=""/>
834     <event id="0xF500 + 0x04" level="Op"    property="StreamBufferReset"              value="pxStreamBuffer=%x[val1]" info=""/>
835     <event id="0xF500 + 0x05" level="Op"    property="StreamBufferBlockingOnSend"     value="pxStreamBuffer=%x[val1]" info=""/>
836     <event id="0xF500 + 0x06" level="Op"    property="StreamBufferSend"               value="pxStreamBuffer=%x[val1], xBytesSent=%d[val2]" info=""/>
837     <event id="0xF500 + 0x07" level="Error" property="StreamBufferSendFailed"         value="pxStreamBuffer=%x[val1]" info=""/>
838     <event id="0xF500 + 0x08" level="Op"    property="StreamBufferSendFromIsr"        value="pxStreamBuffer=%x[val1], xBytesSent=%d[val2]" info=""/>
839     <event id="0xF500 + 0x09" level="Op"    property="StreamBufferBlockingOnReceive"  value="pxStreamBuffer=%x[val1]" info=""/>
840     <event id="0xF500 + 0x0A" level="Op"    property="StreamBufferReceive"            value="pxStreamBuffer=%x[val1], xReceivedLength=%d[val2]" info=""/>
841     <event id="0xF500 + 0x0B" level="Error" property="StreamBufferReceiveFailed"      value="pxStreamBuffer=%x[val1]" info=""/>
842     <event id="0xF500 + 0x0C" level="Op"    property="StreamBufferReceiveFromIsr"     value="pxStreamBuffer=%x[val1], xReceivedLength=%d[val2]" info=""/>
843
844   </events>
845
846 </component_viewer>