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>
This commit is contained in:
parent
ecc00666a0
commit
6bd17dccb6
@ -1420,10 +1420,9 @@ config_host_data.set('CONFIG_POSIX_MADVISE', cc.links(gnu_source_prefix + '''
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }'''))
|
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }'''))
|
||||||
config_host_data.set('CONFIG_SIGNALFD', cc.links(gnu_source_prefix + '''
|
config_host_data.set('CONFIG_SIGNALFD', cc.links(gnu_source_prefix + '''
|
||||||
#include <unistd.h>
|
#include <sys/signalfd.h>
|
||||||
#include <sys/syscall.h>
|
#include <stddef.h>
|
||||||
#include <signal.h>
|
int main(void) { return signalfd(-1, NULL, SFD_CLOEXEC); }'''))
|
||||||
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }'''))
|
|
||||||
config_host_data.set('CONFIG_SPLICE', cc.links(gnu_source_prefix + '''
|
config_host_data.set('CONFIG_SPLICE', cc.links(gnu_source_prefix + '''
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#include "qemu/thread.h"
|
#include "qemu/thread.h"
|
||||||
|
|
||||||
#if defined(CONFIG_SIGNALFD)
|
#if defined(CONFIG_SIGNALFD)
|
||||||
#include <sys/syscall.h>
|
#include <sys/signalfd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct sigfd_compat_info {
|
struct sigfd_compat_info {
|
||||||
@ -96,9 +96,8 @@ int qemu_signalfd(const sigset_t *mask)
|
|||||||
#if defined(CONFIG_SIGNALFD)
|
#if defined(CONFIG_SIGNALFD)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = syscall(SYS_signalfd, -1, mask, _NSIG / 8);
|
ret = signalfd(-1, mask, SFD_CLOEXEC);
|
||||||
if (ret != -1) {
|
if (ret != -1) {
|
||||||
qemu_set_cloexec(ret);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user