1 function decode_stack(sp)
\r
8 current_task = Debug.evaluate("pxCurrentTCB");
\r
10 if( current_task == 0 )
\r
13 sp += 4; /* skip stored ulCriticalNesting */
\r
14 a[16] = Debug.evaluate("*(unsigned long*)" + sp);
\r
16 for (i = 0; i <= 15; i++)
\r
19 a[i] = Debug.evaluate("*(unsigned long*)" + sp);
\r
25 function add_task(task, state)
\r
31 current_task = Debug.evaluate("pxCurrentTCB");
\r
33 if( current_task == 0 )
\r
36 tcb = Debug.evaluate("*(tskTCB *)" + task);
\r
37 task_name = Debug.evaluate("(char*)&(*(tskTCB *)" + task + ").pcTaskName[0]");
\r
38 Threads.add("#" + tcb.uxTCBNumber + " \"" + task_name + "\"", tcb.uxPriority, state, decode_stack(tcb.pxTopOfStack));
\r
41 function add_list(list, state, current_task)
\r
43 var i, index, item, end;
\r
46 current_task = Debug.evaluate("pxCurrentTCB");
\r
48 if( current_task == 0 )
\r
51 if (list.uxNumberOfItems)
\r
53 index = list.pxIndex;
\r
54 end = list.xListEnd;
\r
55 for (i = 0; i < list.uxNumberOfItems; i++)
\r
57 item = Debug.evaluate("*(xListItem *)" + index);
\r
60 task = item.pvOwner;
\r
61 if (task) add_task(task, (task == current_task) ? "executing" : state);
\r
63 index = item.pxNext;
\r
70 var i, current_task, list, lists, max_priority;
\r
74 current_task = Debug.evaluate("pxCurrentTCB");
\r
76 if( current_task == 0 )
\r
79 Threads.newqueue("Ready");
\r
80 lists = Debug.evaluate("pxReadyTasksLists");
\r
83 max_priority = Debug.evaluate("uxTopUsedPriority");
\r
84 max_priority = Debug.evaluate("*(long *)" + max_priority);
\r
86 for (i = 0; i <= max_priority; i++)
\r
88 list = Debug.evaluate("((xList*)" + lists + ")[" + (max_priority - i) + "]");
\r
89 add_list(list, "ready", current_task);
\r
93 Threads.newqueue("Blocked");
\r
95 list = Debug.evaluate("pxDelayedTaskList");
\r
98 list = Debug.evaluate("**(xList **)" + list);
\r
99 add_list(list, "blocked");
\r
102 list = Debug.evaluate("pxOverflowDelayedTaskList");
\r
105 list = Debug.evaluate("**(xList **)" + list);
\r
106 add_list(list, "blocked");
\r
109 Threads.newqueue("Suspended");
\r
111 list = Debug.evaluate("xSuspendedTaskList");
\r
114 list = Debug.evaluate("*(xList *)" + list);
\r
115 add_list(list, "suspended");
\r