X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Ftarget.c;h=67876d10e52b3cdeb82f316afc7da0785e32650a;hp=6b034665c757540c799706bcc6e1d53d4a441694;hb=3a550e5b5fe011e526b150a5d234b48e8e2aaad6;hpb=033d1053ae42b913ff7100221628c0376e596d71 diff --git a/src/target/target.c b/src/target/target.c index 6b034665c7..67876d10e5 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -1074,7 +1074,7 @@ int target_register_event_callback(int (*callback)(struct target *target, enum t if (callback == NULL) { - return ERROR_INVALID_ARGUMENTS; + return ERROR_COMMAND_SYNTAX_ERROR; } if (*callbacks_p) @@ -1099,7 +1099,7 @@ int target_register_timer_callback(int (*callback)(void *priv), int time_ms, int if (callback == NULL) { - return ERROR_INVALID_ARGUMENTS; + return ERROR_COMMAND_SYNTAX_ERROR; } if (*callbacks_p) @@ -1137,7 +1137,7 @@ int target_unregister_event_callback(int (*callback)(struct target *target, enum if (callback == NULL) { - return ERROR_INVALID_ARGUMENTS; + return ERROR_COMMAND_SYNTAX_ERROR; } while (c) @@ -1164,7 +1164,7 @@ static int target_unregister_timer_callback(int (*callback)(void *priv), void *p if (callback == NULL) { - return ERROR_INVALID_ARGUMENTS; + return ERROR_COMMAND_SYNTAX_ERROR; } while (c) @@ -1681,7 +1681,7 @@ int target_checksum_memory(struct target *target, uint32_t address, uint32_t siz if (buffer == NULL) { LOG_ERROR("error allocating buffer for section (%d bytes)", (int)size); - return ERROR_INVALID_ARGUMENTS; + return ERROR_COMMAND_SYNTAX_ERROR; } retval = target_read_buffer(target, address, size, buffer); if (retval != ERROR_OK) @@ -2246,9 +2246,7 @@ COMMAND_HANDLER(handle_reg_command) return ERROR_OK; } - command_print(CMD_CTX, "usage: reg <#|name> [value]"); - - return ERROR_OK; + return ERROR_COMMAND_SYNTAX_ERROR; } COMMAND_HANDLER(handle_poll_command) @@ -2295,7 +2293,6 @@ COMMAND_HANDLER(handle_wait_halt_command) int retval = parse_uint(CMD_ARGV[0], &ms); if (ERROR_OK != retval) { - command_print(CMD_CTX, "usage: %s [seconds]", CMD_NAME); return ERROR_COMMAND_SYNTAX_ERROR; } // convert seconds (given) to milliseconds (needed) @@ -3155,7 +3152,6 @@ COMMAND_HANDLER(handle_bp_command) return handle_bp_command_set(CMD_CTX, addr, asid, length, hw); default: - command_print(CMD_CTX, "usage: bp
[] ['hw'|'hw_ctx']"); return ERROR_COMMAND_SYNTAX_ERROR; } } @@ -3235,8 +3231,6 @@ COMMAND_HANDLER(handle_wp_command) break; default: - command_print(CMD_CTX, "usage: wp [address length " - "[(r|w|a) [value [mask]]]]"); return ERROR_COMMAND_SYNTAX_ERROR; } @@ -5056,6 +5050,7 @@ static int target_create(Jim_GetOptInfo *goi) .name = cp, .mode = COMMAND_ANY, .help = "target command group", + .usage = "", .chain = target_subcommands, }, COMMAND_REGISTRATION_DONE @@ -5124,11 +5119,12 @@ static int jim_target_smp(Jim_Interp *interp, int argc, Jim_Obj *const *argv) int i; const char *targetname; int retval,len; - struct target *target; - struct target_list *head, *curr; - curr = (struct target_list*) NULL; - head = (struct target_list*) NULL; - + struct target *target = (struct target *) NULL; + struct target_list *head, *curr, *new; + curr = (struct target_list *) NULL; + head = (struct target_list *) NULL; + new = (struct target_list *) NULL; + retval = 0; LOG_DEBUG("%d",argc); /* argv[1] = target to associate in smp @@ -5144,7 +5140,6 @@ static int jim_target_smp(Jim_Interp *interp, int argc, Jim_Obj *const *argv) LOG_DEBUG("%s ",targetname); if (target) { - struct target_list *new; new=malloc(sizeof(struct target_list)); new->target = target; new->next = (struct target_list*)NULL; @@ -5165,11 +5160,13 @@ static int jim_target_smp(Jim_Interp *interp, int argc, Jim_Obj *const *argv) while(curr!=(struct target_list *)NULL) { - target=curr->target; - target->smp = 1; - target->head = head; - curr=curr->next; + target = curr->target; + target->smp = 1; + target->head = head; + curr = curr->next; } + if (target->rtos) + retval = rtos_smp_init(head->target); return retval; } @@ -5518,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", @@ -5534,11 +5552,13 @@ static const struct command_registration target_exec_command_handlers[] = { .mode = COMMAND_EXEC, .help = "loads active fast load image to current target " "- mainly for profiling purposes", + .usage = "", }, { .name = "profile", .handler = handle_profile_command, .mode = COMMAND_EXEC, + .usage = "seconds filename", .help = "profiling samples the CPU PC", }, /** @todo don't register virt2phys() unless target supports it */ @@ -5599,6 +5619,7 @@ static const struct command_registration target_exec_command_handlers[] = { .name = "soft_reset_halt", .handler = handle_soft_reset_halt_command, .mode = COMMAND_EXEC, + .usage = "", .help = "halt the target and do a soft reset", }, { @@ -5655,7 +5676,7 @@ static const struct command_registration target_exec_command_handlers[] = { .handler = handle_bp_command, .mode = COMMAND_EXEC, .help = "list or set hardware or software breakpoint", - .usage = "usage: bp
[] ['hw'|'hw_ctx']", + .usage = "
[] ['hw'|'hw_ctx']", }, { .name = "rbp", @@ -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)