From 19239b39e7501dedec8d92f0eca79c187685bcce Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 7 Sep 2015 10:39:27 +0100 Subject: gdbstub: Implement gdb_do_syscallv() Implement a variant of the existing gdb_do_syscall() which takes a va_list. Signed-off-by: Peter Maydell Tested-by: Christopher Covington Message-id: 1439483745-28752-4-git-send-email-peter.maydell@linaro.org --- include/exec/gdbstub.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'include/exec') diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h index 05f57c2..d9e8cf7 100644 --- a/include/exec/gdbstub.h +++ b/include/exec/gdbstub.h @@ -14,7 +14,34 @@ typedef void (*gdb_syscall_complete_cb)(CPUState *cpu, target_ulong ret, target_ulong err); +/** + * gdb_do_syscall: + * @cb: function to call when the system call has completed + * @fmt: gdb syscall format string + * ...: list of arguments to interpolate into @fmt + * + * Send a GDB syscall request. This function will return immediately; + * the callback function will be called later when the remote system + * call has completed. + * + * @fmt should be in the 'call-id,parameter,parameter...' format documented + * for the F request packet in the GDB remote protocol. A limited set of + * printf-style format specifiers is supported: + * %x - target_ulong argument printed in hex + * %lx - 64-bit argument printed in hex + * %s - string pointer (target_ulong) and length (int) pair + */ void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...); +/** + * gdb_do_syscallv: + * @cb: function to call when the system call has completed + * @fmt: gdb syscall format string + * @va: arguments to interpolate into @fmt + * + * As gdb_do_syscall, but taking a va_list rather than a variable + * argument list. + */ +void gdb_do_syscallv(gdb_syscall_complete_cb cb, const char *fmt, va_list va); int use_gdb_syscalls(void); void gdb_set_stop_cpu(CPUState *cpu); void gdb_exit(CPUArchState *, int); -- cgit v1.1