This fixes a long standing problem that libvirt has with starting up QEMU.
We have to busy-wait retrying connect() on the QMP monitor socket until QEMU
finally creates & listens on it, but at same time must be careful to not wait
forever if QEMU exits.
This this patch series, libvirt can simply pass in a pre-opened UNIX domain
socket file descriptor, which it can immediately connect to with no busy-wait.
Daniel P. Berrange (2):
io: move fd_is_socket() into common sockets code
char: allow passing pre-opened socket file descriptor at startup
chardev/char-socket.c | 66 ++++++++++++++++++++++++++++++++++++++++++++------
chardev/char.c | 6 +++++
include/qemu/sockets.h | 1 +
io/channel-util.c | 13 ----------
monitor.c | 5 ++++
qapi/common.json | 11 +++++++++
qapi/sockets.json | 14 ++++++++---
util/qemu-sockets.c | 49 +++++++++++++++++++++++++++++++++++++
8 files changed, 142 insertions(+), 23 deletions(-)
--
2.14.3