diff options
| author | Peter Xu | 2018-06-08 05:55:11 +0200 |
|---|---|---|
| committer | Markus Armbruster | 2018-06-18 15:48:22 +0200 |
| commit | 474514668b47c9d2148b526e379ffbb6764d9a9e (patch) | |
| tree | 093a62a7cd6cf125fb9987e17574c58524df3aa8 /util | |
| parent | monitor: move init global earlier (diff) | |
| download | qemu-474514668b47c9d2148b526e379ffbb6764d9a9e.tar.gz qemu-474514668b47c9d2148b526e379ffbb6764d9a9e.tar.xz qemu-474514668b47c9d2148b526e379ffbb6764d9a9e.zip | |
monitor: add lock to protect mon_fdsets
Introduce a new global big lock for mon_fdsets. Take it where needed.
The monitor_fdset_get_fd() handling is a bit tricky: now we need to call
qemu_mutex_unlock() which might pollute errno, so we need to make sure
the correct errno be passed up to the callers. To make things simpler,
we let monitor_fdset_get_fd() return the -errno directly when error
happens, then in qemu_open() we move it back into errno.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20180608035511.7439-8-peterx@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'util')
| -rw-r--r-- | util/osdep.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/util/osdep.c b/util/osdep.c index a73de0e1ba..ea51d500b6 100644 --- a/util/osdep.c +++ b/util/osdep.c @@ -302,7 +302,8 @@ int qemu_open(const char *name, int flags, ...) } fd = monitor_fdset_get_fd(fdset_id, flags); - if (fd == -1) { + if (fd < 0) { + errno = -fd; return -1; } |
