1 #ifndef _GPXE_GDBSTUB_H
2 #define _GPXE_GDBSTUB_H
11 #include <gpxe/tables.h>
15 * A transport mechanism for the GDB protocol
18 struct gdb_transport {
22 * Set up the transport given a list of arguments
24 * @v argc Number of arguments
25 * @v argv Argument list
26 * @ret Return status code
28 * Note that arguments start at argv[0].
30 int ( * init ) ( int argc, char **argv );
32 * Perform a blocking read
35 * @v len Size of buffer
36 * @ret Number of bytes read into buffer
38 size_t ( * recv ) ( char *buf, size_t len );
43 * @v len Size of buffer
45 void ( * send ) ( const char *buf, size_t len );
48 #define GDB_TRANSPORTS "gdb_transports"
50 #define __gdb_transport __table ( struct gdb_transport, GDB_TRANSPORTS, 01 )
53 * Look up GDB transport by name
55 * @v name Name of transport
56 * @ret GDB transport or NULL
58 extern struct gdb_transport *find_gdb_transport ( const char *name );
61 * Break into the debugger using the given transport
63 * @v trans GDB transport
65 extern void gdbstub_start ( struct gdb_transport *trans );
70 * @signo POSIX signal number
71 * @regs CPU register snapshot
73 extern void gdbstub_handler ( int signo, gdbreg_t *regs );
75 #endif /* _GPXE_GDBSTUB_H */