diff options
author | Kacper Słomiński <kacper.slominski72@gmail.com> | 2021-09-05 03:16:22 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2021-10-13 10:47:49 +0200 |
commit | 6bd17dccb63e152266cf7a7399931c9fe11bc8cf (patch) | |
tree | 38badc0e2c5bdddccbe3a3ff68a9b182a81015f5 | |
parent | ecc00666a020368ec2c3712c40386dc7ea75a8a9 (diff) | |
download | qemu-6bd17dccb63e152266cf7a7399931c9fe11bc8cf.zip qemu-6bd17dccb63e152266cf7a7399931c9fe11bc8cf.tar.gz qemu-6bd17dccb63e152266cf7a7399931c9fe11bc8cf.tar.bz2 |
util/compatfd.c: use libc signalfd wrapper instead of raw syscall
This allows the use of native signalfd instead of the sigtimedwait
based emulation on systems other than Linux.
Signed-off-by: Kacper Słomiński <kacper.slominski72@gmail.com>
Message-Id: <20210905011621.200785-1-kacper.slominski72@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | meson.build | 7 | ||||
-rw-r--r-- | util/compatfd.c | 5 |
2 files changed, 5 insertions, 7 deletions
diff --git a/meson.build b/meson.build index 99a0a3e..2d373a6 100644 --- a/meson.build +++ b/meson.build @@ -1420,10 +1420,9 @@ config_host_data.set('CONFIG_POSIX_MADVISE', cc.links(gnu_source_prefix + ''' #include <stddef.h> int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }''')) config_host_data.set('CONFIG_SIGNALFD', cc.links(gnu_source_prefix + ''' - #include <unistd.h> - #include <sys/syscall.h> - #include <signal.h> - int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }''')) + #include <sys/signalfd.h> + #include <stddef.h> + int main(void) { return signalfd(-1, NULL, SFD_CLOEXEC); }''')) config_host_data.set('CONFIG_SPLICE', cc.links(gnu_source_prefix + ''' #include <unistd.h> #include <fcntl.h> diff --git a/util/compatfd.c b/util/compatfd.c index a8ec525..ab810c4 100644 --- a/util/compatfd.c +++ b/util/compatfd.c @@ -17,7 +17,7 @@ #include "qemu/thread.h" #if defined(CONFIG_SIGNALFD) -#include <sys/syscall.h> +#include <sys/signalfd.h> #endif struct sigfd_compat_info { @@ -96,9 +96,8 @@ int qemu_signalfd(const sigset_t *mask) #if defined(CONFIG_SIGNALFD) int ret; - ret = syscall(SYS_signalfd, -1, mask, _NSIG / 8); + ret = signalfd(-1, mask, SFD_CLOEXEC); if (ret != -1) { - qemu_set_cloexec(ret); return ret; } #endif |