您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

gdbstub.h 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef _GPXE_GDBSTUB_H
  2. #define _GPXE_GDBSTUB_H
  3. /** @file
  4. *
  5. * GDB remote debugging
  6. *
  7. */
  8. #include <stdint.h>
  9. #include <gpxe/tables.h>
  10. #include <gdbmach.h>
  11. /**
  12. * A transport mechanism for the GDB protocol
  13. *
  14. */
  15. struct gdb_transport {
  16. /** Transport name */
  17. const char *name;
  18. /**
  19. * Set up the transport given a list of arguments
  20. *
  21. * @v argc Number of arguments
  22. * @v argv Argument list
  23. * @ret Return status code
  24. *
  25. * Note that arguments start at argv[0].
  26. */
  27. int ( * init ) ( int argc, char **argv );
  28. /**
  29. * Perform a blocking read
  30. *
  31. * @v buf Buffer
  32. * @v len Size of buffer
  33. * @ret Number of bytes read into buffer
  34. */
  35. size_t ( * recv ) ( char *buf, size_t len );
  36. /**
  37. * Write, may block
  38. *
  39. * @v buf Buffer
  40. * @v len Size of buffer
  41. */
  42. void ( * send ) ( const char *buf, size_t len );
  43. };
  44. #define __gdb_transport __table ( struct gdb_transport, gdb_transports, 01 )
  45. /**
  46. * Look up GDB transport by name
  47. *
  48. * @v name Name of transport
  49. * @ret GDB transport or NULL
  50. */
  51. extern struct gdb_transport *find_gdb_transport ( const char *name );
  52. /**
  53. * Break into the debugger using the given transport
  54. *
  55. * @v trans GDB transport
  56. */
  57. extern void gdbstub_start ( struct gdb_transport *trans );
  58. /**
  59. * Interrupt handler
  60. *
  61. * @signo POSIX signal number
  62. * @regs CPU register snapshot
  63. **/
  64. extern void gdbstub_handler ( int signo, gdbreg_t *regs );
  65. #endif /* _GPXE_GDBSTUB_H */