change #include "types.h" to <helper/types.h>
[fw/openocd] / src / target / target.h
index 06105ee6d60128d84452de6ebea5afd79b19c6d3..73190695427780d5fe38221e4ef23ad94cceb55d 100644 (file)
 #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
@@ -171,6 +159,12 @@ struct target
        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
@@ -178,8 +172,6 @@ enum target_event
         * - 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,
@@ -202,6 +194,7 @@ enum target_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,
@@ -229,10 +222,13 @@ enum target_event
 
 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
 {
@@ -255,7 +251,6 @@ int target_register_commands(struct command_context *cmd_ctx);
 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);
 
@@ -292,11 +287,12 @@ struct target* get_current_target(struct command_context *cmd_ctx);
 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