diff options
-rw-r--r-- | include/sysemu/char.h | 8 | ||||
-rw-r--r-- | qemu-char.c | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/include/sysemu/char.h b/include/sysemu/char.h index 0ea9eac..ee7e554 100644 --- a/include/sysemu/char.h +++ b/include/sysemu/char.h @@ -70,6 +70,7 @@ struct CharDriverState { int (*get_msgfds)(struct CharDriverState *s, int* fds, int num); int (*set_msgfds)(struct CharDriverState *s, int *fds, int num); int (*chr_add_client)(struct CharDriverState *chr, int fd); + int (*chr_wait_connected)(struct CharDriverState *chr, Error **errp); IOEventHandler *chr_event; IOCanReadHandler *chr_can_read; IOReadHandler *chr_read; @@ -159,6 +160,13 @@ void qemu_chr_disconnect(CharDriverState *chr); void qemu_chr_cleanup(void); /** + * @qemu_chr_wait_connected: + * + * Wait for characted backend to be connected. + */ +int qemu_chr_wait_connected(CharDriverState *chr, Error **errp); + +/** * @qemu_chr_new_noreplay: * * Create a new character backend from a URI. diff --git a/qemu-char.c b/qemu-char.c index 1274f50..6eba615 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -3139,6 +3139,15 @@ static gboolean tcp_chr_accept(QIOChannel *channel, return TRUE; } +int qemu_chr_wait_connected(CharDriverState *chr, Error **errp) +{ + if (chr->chr_wait_connected) { + return chr->chr_wait_connected(chr, errp); + } + + return 0; +} + static void tcp_chr_close(CharDriverState *chr) { TCPCharDriver *s = chr->opaque; |