if ((retval = target->type->resume(target, current, address, handle_breakpoints, debug_execution)) != ERROR_OK)
return retval;
- /* Invalidate any cached protect/erase/... flash status, since
- * almost all targets will now be able modify the flash by
- * themselves. We want flash drivers and infrastructure to
- * be able to rely on (non-invalidated) cached state.
- *
- * For now we require that algorithms provided by OpenOCD are
- * used only by code which properly maintains that cached state.
- * state
- *
- * REVISIT do the same for NAND ; maybe other flash flavors too...
- */
- if (!target->running_alg)
- nor_resume(target);
return retval;
}
return target_call_timer_callbacks_check_time(0);
}
-int target_alloc_working_area(struct target *target, uint32_t size, struct working_area **area)
+int target_alloc_working_area_try(struct target *target, uint32_t size, struct working_area **area)
{
struct working_area *c = target->working_areas;
struct working_area *new_wa = NULL;
if (free_size < size)
{
- LOG_WARNING("not enough working area available(requested %u, free %u)",
- (unsigned)(size), (unsigned)(free_size));
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
}
return ERROR_OK;
}
+int target_alloc_working_area(struct target *target, uint32_t size, struct working_area **area)
+{
+ int retval;
+
+ retval = target_alloc_working_area_try(target, size, area);
+ if (retval == ERROR_TARGET_RESOURCE_NOT_AVAILABLE)
+ {
+ LOG_WARNING("not enough working area available(requested %u)", (unsigned)(size));
+ }
+ return retval;
+
+}
+
static int target_free_working_area_restore(struct target *target, struct working_area *area, int restore)
{
if (area->free)
struct command_context *context;
struct target *target;
- context = Jim_GetAssocData(interp, "context");
- if (context == NULL)
- {
- LOG_ERROR("mem2array: no command context");
- return JIM_ERR;
- }
+ context = current_command_context(interp);
+ assert (context != NULL);
+
target = get_current_target(context);
if (target == NULL)
{
struct command_context *context;
struct target *target;
- context = Jim_GetAssocData(interp, "context");
- if (context == NULL) {
- LOG_ERROR("array2mem: no command context");
- return JIM_ERR;
- }
+ context = current_command_context(interp);
+ assert (context != NULL);
+
target = get_current_target(context);
if (target == NULL) {
LOG_ERROR("array2mem: no current target");
return JIM_OK;
}
-void target_all_handle_event(enum target_event e)
-{
- struct target *target;
-
- LOG_DEBUG("**all*targets: event: %d, %s",
- (int)e,
- Jim_Nvp_value2name_simple(nvp_target_event, e)->name);
-
- target = all_targets;
- while (target) {
- target_handle_event(target, e);
- target = target->next;
- }
-}
-
-
/* FIX? should we propagate errors here rather than printing them
* and continuing?
*/
*/
static int jim_target_event_list(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
- struct command_context *cmd_ctx = Jim_GetAssocData(interp, "context");
+ struct command_context *cmd_ctx = current_command_context(interp);
+ assert (cmd_ctx != NULL);
+
struct target *target = Jim_CmdPrivData(interp);
struct target_event_action *teap = target->event_action;
command_print(cmd_ctx, "Event actions for target (%d) %s\n",
struct target *target;
struct command_context *cmd_ctx;
- cmd_ctx = Jim_GetAssocData(goi->interp, "context");
+ cmd_ctx = current_command_context(goi->interp);
+ assert (cmd_ctx != NULL);
+
if (goi->argc < 3) {
Jim_WrongNumArgs(goi->interp, 1, goi->argv, "?name? ?type? ..options...");
return JIM_ERR;
Jim_WrongNumArgs(interp, 1, argv, "Too many parameters");
return JIM_ERR;
}
- struct command_context *cmd_ctx = Jim_GetAssocData(interp, "context");
+ struct command_context *cmd_ctx = current_command_context(interp);
+ assert (cmd_ctx != NULL);
+
Jim_SetResultString(interp, get_current_target(cmd_ctx)->cmd_name, -1);
return JIM_OK;
}