|
@@ -119,9 +119,17 @@ int qemu_signalfd(const sigset_t *mask)
|
|
bool qemu_signalfd_available(void)
|
|
bool qemu_signalfd_available(void)
|
|
{
|
|
{
|
|
#ifdef CONFIG_SIGNALFD
|
|
#ifdef CONFIG_SIGNALFD
|
|
|
|
+ sigset_t mask;
|
|
|
|
+ int fd;
|
|
|
|
+ bool ok;
|
|
|
|
+ sigemptyset(&mask);
|
|
errno = 0;
|
|
errno = 0;
|
|
- syscall(SYS_signalfd, -1, NULL, _NSIG / 8);
|
|
|
|
- return errno != ENOSYS;
|
|
|
|
|
|
+ fd = syscall(SYS_signalfd, -1, &mask, _NSIG / 8);
|
|
|
|
+ ok = (errno != ENOSYS);
|
|
|
|
+ if (fd >= 0) {
|
|
|
|
+ close(fd);
|
|
|
|
+ }
|
|
|
|
+ return ok;
|
|
#else
|
|
#else
|
|
return false;
|
|
return false;
|
|
#endif
|
|
#endif
|