rtos : ps command
authorMichel JAOUEN <michel.jaouen@stericsson.com>
Tue, 3 Jan 2012 15:18:22 +0000 (16:18 +0100)
committerØyvind Harboe <oyvindharboe@gmail.com>
Sun, 15 Jan 2012 22:13:03 +0000 (22:13 +0000)
Change-Id: I1b00b6d72f425826c33b0df7dd63114ce642ce93
Signed-off-by: Michel JAOUEN <michel.jaouen@stericsson.com>
Reviewed-on: http://openocd.zylin.com/345
Tested-by: jenkins
Reviewed-by: Evan Hunter <evan@ozhiker.com>
Reviewed-by: Øyvind Harboe <oyvindharboe@gmail.com>
src/rtos/rtos.h
src/target/target.c

index 890a99e..3d23148 100644 (file)
@@ -80,6 +80,7 @@ struct rtos_type
        int (*get_thread_reg_list)         ( struct rtos *rtos, int64_t thread_id, char ** hex_reg_list );
        int (*get_symbol_list_to_lookup)   (symbol_table_elem_t * symbol_list[] );
        int (*clean)(struct target *target);
+       char * (*ps_command)(struct target *target);
 };
 
 
index e53d6f8..67876d1 100644 (file)
@@ -5515,6 +5515,27 @@ COMMAND_HANDLER(handle_target_reset_nag)
                        "performance");
 }
 
+COMMAND_HANDLER(handle_ps_command)
+{
+       struct target *target = get_current_target(CMD_CTX);
+       char *display;
+       if (target->state != TARGET_HALTED) {
+               LOG_INFO("target not halted !!");
+               return ERROR_OK;
+       }
+
+       if ((target->rtos) && (target->rtos->type)
+                       && (target->rtos->type->ps_command)) {
+               display = target->rtos->type->ps_command(target);
+               command_print(CMD_CTX, "%s", display);
+               free(display);
+               return ERROR_OK;
+       } else {
+               LOG_INFO("failed");
+               return ERROR_TARGET_FAILURE;
+       }
+}
+
 static const struct command_registration target_exec_command_handlers[] = {
        {
                .name = "fast_load_image",
@@ -5727,6 +5748,14 @@ static const struct command_registration target_exec_command_handlers[] = {
                                "enabled to improve performance. ",
                .usage = "['enable'|'disable']",
        },
+       {
+               .name = "ps",
+               .handler = handle_ps_command,
+               .mode = COMMAND_EXEC,
+               .help = "list all tasks ",
+               .usage = " ",
+       },
+
        COMMAND_REGISTRATION_DONE
 };
 static int target_register_user_commands(struct command_context *cmd_ctx)