aboutsummaryrefslogtreecommitdiff
path: root/src/target/target.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/target/target.h')
-rw-r--r--src/target/target.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/target/target.h b/src/target/target.h
index 09895bb..ee282b1 100644
--- a/src/target/target.h
+++ b/src/target/target.h
@@ -41,6 +41,7 @@ struct watchpoint;
struct mem_param;
struct reg_param;
struct target_list;
+struct gdb_fileio_info;
/*
* TARGET_UNKNOWN = 0: we don't know anything about the target yet
@@ -191,6 +192,9 @@ struct target {
* the target attached to the gdb is changing dynamically by changing
* gdb_service->target pointer */
struct gdb_service *gdb_service;
+
+ /* file-I/O information for host to do syscall */
+ struct gdb_fileio_info *fileio_info;
};
struct target_list {
@@ -198,6 +202,14 @@ struct target_list {
struct target_list *next;
};
+struct gdb_fileio_info {
+ char *identifier;
+ uint32_t param_1;
+ uint32_t param_2;
+ uint32_t param_3;
+ uint32_t param_4;
+};
+
/** Returns the instance-specific name of the specified target. */
static inline const char *target_name(struct target *target)
{
@@ -534,6 +546,22 @@ int target_blank_check_memory(struct target *target,
uint32_t address, uint32_t size, uint32_t *blank);
int target_wait_state(struct target *target, enum target_state state, int ms);
+/**
+ * Obtain file-I/O information from target for GDB to do syscall.
+ *
+ * This routine is a wrapper for target->type->get_gdb_fileio_info.
+ */
+int target_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *fileio_info);
+
+/**
+ * Pass GDB file-I/O response to target after finishing host syscall.
+ *
+ * This routine is a wrapper for target->type->gdb_fileio_end.
+ */
+int target_gdb_fileio_end(struct target *target, int retcode, int fileio_errno, bool ctrl_c);
+
+
+
/** Return the *name* of this targets current state */
const char *target_state_name(struct target *target);