enumeration of threads for testing purposes.

git-svn-id: svn://svn.berlios.de/openocd/trunk@1035 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
oharboe 2008-10-09 12:05:57 +00:00
parent a5dd5a45f3
commit fbdc87effc
1 changed files with 67 additions and 0 deletions

View File

@ -934,6 +934,72 @@ zylinjtag_Jim_Command_rm(Jim_Interp *interp,
return del ? JIM_OK : JIM_ERR;
}
static int zylinjtag_Jim_Command_threads(Jim_Interp *interp, int argc,
Jim_Obj * const *argv)
{
cyg_handle_t thread = 0;
cyg_uint16 id = 0;
Jim_Obj *threads = Jim_NewListObj(interp, NULL, 0);
/* Loop over the threads, and generate a table row for
* each.
*/
while (cyg_thread_get_next(&thread, &id))
{
Jim_Obj *threadObj = Jim_NewListObj(interp, NULL, 0);
cyg_thread_info info;
char *state_string;
cyg_thread_get_info(thread, id, &info);
if (info.name == NULL)
info.name = "<no name>";
Jim_ListAppendElement(interp, threadObj, Jim_NewStringObj(interp,
info.name, strlen(info.name)));
/* Translate the state into a string.
*/
if (info.state == 0)
state_string = "RUN";
else if (info.state & 0x04)
state_string = "SUSP";
else
switch (info.state & 0x1b)
{
case 0x01:
state_string = "SLEEP";
break;
case 0x02:
state_string = "CNTSLEEP";
break;
case 0x08:
state_string = "CREATE";
break;
case 0x10:
state_string = "EXIT";
break;
default:
state_string = "????";
break;
}
Jim_ListAppendElement(interp, threadObj, Jim_NewStringObj(interp,
state_string, strlen(state_string)));
Jim_ListAppendElement (interp, threadObj, Jim_NewIntObj(interp, id));
Jim_ListAppendElement(interp, threadObj, Jim_NewIntObj(interp, info.set_pri));
Jim_ListAppendElement(interp, threadObj, Jim_NewIntObj(interp, info.cur_pri));
Jim_ListAppendElement(interp, threads, threadObj);
}
Jim_SetResult( interp, threads);
return JIM_OK;
}
static int
zylinjtag_Jim_Command_ls(Jim_Interp *interp,
int argc,
@ -1245,6 +1311,7 @@ static void zylinjtag_startNetwork()
Jim_CreateCommand(httpstate.jim_interp, "zy1000_flash", zylinjtag_Jim_Command_flash, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "poke", zylinjtag_Jim_Command_poke, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "ls", zylinjtag_Jim_Command_ls, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "threads", zylinjtag_Jim_Command_threads, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "getmem", zylinjtag_Jim_Command_getmem, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "mac", zylinjtag_Jim_Command_mac, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "ip", zylinjtag_Jim_Command_ip, NULL, NULL);