#ifndef TARGET_H
#define TARGET_H
-#include <stddef.h>
-
-#include "algorithm.h"
-#include "command.h"
+#include <helper/types.h>
+#include <helper/jim.h>
struct reg;
struct trace;
struct command_context;
struct breakpoint;
struct watchpoint;
+struct mem_param;
+struct reg_param;
-/**
- * Cast a member of a structure out to the containing structure.
- * @param ptr The pointer to the member.
- * @param type The type of the container struct this is embedded in.
- * @param member The name of the member within the struct.
- *
- * This is a mechanism which is used throughout the Linux kernel.
- */
-#define container_of(ptr, type, member) ({ \
- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
-
/*
* TARGET_UNKNOWN = 0: we don't know anything about the target yet
* TARGET_RUNNING = 1: the target is executing user code
long long halt_issued_time; /* Note time when halt was issued */
};
+/** Returns the instance-specific name of the specified target. */
+static inline const char *target_name(struct target *target)
+{
+ return target->cmd_name;
+}
+
enum target_event
{
/* LD historical names
* - June/July/Aug 2008
* - Duane Ellis */
TARGET_EVENT_OLD_gdb_program_config,
- TARGET_EVENT_OLD_pre_reset,
- TARGET_EVENT_OLD_post_reset,
TARGET_EVENT_OLD_pre_resume,
/* allow GDB to do stuff before others handle the halted event,
TARGET_EVENT_RESET_START,
TARGET_EVENT_RESET_ASSERT_PRE,
+ TARGET_EVENT_RESET_ASSERT, /* C code uses this instead of SRST */
TARGET_EVENT_RESET_ASSERT_POST,
TARGET_EVENT_RESET_DEASSERT_PRE,
TARGET_EVENT_RESET_DEASSERT_POST,
struct target_event_action {
enum target_event event;
- Jim_Obj *body;
+ Jim_Interp *interp;
+ struct Jim_Obj *body;
int has_percent;
struct target_event_action *next;
- };
+};
+
+bool target_has_event_action(struct target *target, enum target_event event);
struct target_event_callback
{
int target_register_user_commands(struct command_context *cmd_ctx);
int target_init(struct command_context *cmd_ctx);
int target_examine(void);
-int handle_target(void *priv);
int target_process_reset(struct command_context *cmd_ctx,
enum target_reset_mode reset_mode);
struct target *get_target(const char *id);
/**
- * Get the target name.
+ * Get the target type name.
*
* This routine is a wrapper for the target->type->name field.
+ * Note that this is not an instance-specific name for his target.
*/
-const char *target_get_name(struct target *target);
+const char *target_type_name(struct target *target);
/**
* Examine the specified @a target, letting it perform any