From 0a4c8990c29e61fd0c2796486519cdb256b8da3b Mon Sep 17 00:00:00 2001 From: Hsiangkai Wang Date: Wed, 2 Jan 2013 12:02:00 +0800 Subject: gdb_server: support File-I/O Remote Protocol Extension The File I/O remote protocol extension allows the target to use the host's file system and console I/O to perform various system calls. To use the function, targets need to prepare two callback functions: * get_gdb_finish_info: to get file I/O parameters from target * gdb_fileio_end: pass file I/O response to target As target is halted, gdb_server will try to get file-I/O information from target through target_get_gdb_fileio_info(). If the callback function returns ERROR_OK, gdb_server will initiate a file-I/O request to gdb. After gdb finishes system call, gdb will pass response of the system call to target through target_gdb_fileio_end() and continue to run(continue or step). To implement the function, I add a new data structure in struct target, called struct gdb_fileio_info, to record file I/O name and parameters. Details refer to GDB manual "File-I/O Remote Protocol Extension" Change-Id: I7f4d45e7c9e967b6d898dc79ba01d86bc46315d3 Signed-off-by: Hsiangkai Wang Reviewed-on: http://openocd.zylin.com/1102 Tested-by: jenkins Reviewed-by: Spencer Oliver --- src/target/target_type.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/target/target_type.h') diff --git a/src/target/target_type.h b/src/target/target_type.h index 0b8d5daa..21439b65 100644 --- a/src/target/target_type.h +++ b/src/target/target_type.h @@ -264,6 +264,15 @@ struct target_type { * circumstances. */ int (*check_reset)(struct target *target); + + /* get GDB file-I/O parameters from target + */ + int (*get_gdb_fileio_info)(struct target *target, struct gdb_fileio_info *fileio_info); + + /* pass GDB file-I/O response to target + */ + int (*gdb_fileio_end)(struct target *target, int retcode, int fileio_errno, bool ctrl_c); + }; #endif /* TARGET_TYPE_H */ -- cgit v1.2.3-18-g5258