qemu-char.h 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef QEMU_CHAR_H
  2. #define QEMU_CHAR_H
  3. #include "sys-queue.h"
  4. /* character device */
  5. #define CHR_EVENT_BREAK 0 /* serial break char */
  6. #define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */
  7. #define CHR_EVENT_RESET 2 /* new connection established */
  8. #define CHR_IOCTL_SERIAL_SET_PARAMS 1
  9. typedef struct {
  10. int speed;
  11. int parity;
  12. int data_bits;
  13. int stop_bits;
  14. } QEMUSerialSetParams;
  15. #define CHR_IOCTL_SERIAL_SET_BREAK 2
  16. #define CHR_IOCTL_PP_READ_DATA 3
  17. #define CHR_IOCTL_PP_WRITE_DATA 4
  18. #define CHR_IOCTL_PP_READ_CONTROL 5
  19. #define CHR_IOCTL_PP_WRITE_CONTROL 6
  20. #define CHR_IOCTL_PP_READ_STATUS 7
  21. #define CHR_IOCTL_PP_EPP_READ_ADDR 8
  22. #define CHR_IOCTL_PP_EPP_READ 9
  23. #define CHR_IOCTL_PP_EPP_WRITE_ADDR 10
  24. #define CHR_IOCTL_PP_EPP_WRITE 11
  25. #define CHR_IOCTL_PP_DATA_DIR 12
  26. #define CHR_IOCTL_SERIAL_SET_TIOCM 13
  27. #define CHR_IOCTL_SERIAL_GET_TIOCM 14
  28. #define CHR_TIOCM_CTS 0x020
  29. #define CHR_TIOCM_CAR 0x040
  30. #define CHR_TIOCM_DSR 0x100
  31. #define CHR_TIOCM_RI 0x080
  32. #define CHR_TIOCM_DTR 0x002
  33. #define CHR_TIOCM_RTS 0x004
  34. typedef void IOEventHandler(void *opaque, int event);
  35. struct CharDriverState {
  36. void (*init)(struct CharDriverState *s);
  37. int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len);
  38. void (*chr_update_read_handler)(struct CharDriverState *s);
  39. int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg);
  40. IOEventHandler *chr_event;
  41. IOCanRWHandler *chr_can_read;
  42. IOReadHandler *chr_read;
  43. void *handler_opaque;
  44. void (*chr_send_event)(struct CharDriverState *chr, int event);
  45. void (*chr_close)(struct CharDriverState *chr);
  46. void (*chr_accept_input)(struct CharDriverState *chr);
  47. void *opaque;
  48. int focus;
  49. QEMUBH *bh;
  50. char *label;
  51. char *filename;
  52. TAILQ_ENTRY(CharDriverState) next;
  53. };
  54. CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*init)(struct CharDriverState *s));
  55. void qemu_chr_close(CharDriverState *chr);
  56. void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
  57. int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
  58. void qemu_chr_send_event(CharDriverState *s, int event);
  59. void qemu_chr_add_handlers(CharDriverState *s,
  60. IOCanRWHandler *fd_can_read,
  61. IOReadHandler *fd_read,
  62. IOEventHandler *fd_event,
  63. void *opaque);
  64. int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg);
  65. void qemu_chr_reset(CharDriverState *s);
  66. void qemu_chr_initial_reset(void);
  67. int qemu_chr_can_read(CharDriverState *s);
  68. void qemu_chr_read(CharDriverState *s, uint8_t *buf, int len);
  69. void qemu_chr_accept_input(CharDriverState *s);
  70. void qemu_chr_info(void);
  71. extern int term_escape_char;
  72. /* async I/O support */
  73. int qemu_set_fd_handler2(int fd,
  74. IOCanRWHandler *fd_read_poll,
  75. IOHandler *fd_read,
  76. IOHandler *fd_write,
  77. void *opaque);
  78. int qemu_set_fd_handler(int fd,
  79. IOHandler *fd_read,
  80. IOHandler *fd_write,
  81. void *opaque);
  82. #endif