summaryrefslogtreecommitdiffstats
path: root/util/compatfd.c
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2013-05-02 10:21:18 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2013-10-17 17:24:14 +0200
commit518420dfec2f082cfecbc6eec79fcc91388cf751 (patch)
treebf88a4daa9df9fd4810972b34af8c2dc9ad18ff6 /util/compatfd.c
parenta66670c79c5c7d530d818430ffcdaa25cbf2c2ab (diff)
downloadhqemu-518420dfec2f082cfecbc6eec79fcc91388cf751.zip
hqemu-518420dfec2f082cfecbc6eec79fcc91388cf751.tar.gz
compatfd: switch to QemuThread
qemu_thread_create already does signal blocking and detaching for us. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'util/compatfd.c')
-rw-r--r--util/compatfd.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/util/compatfd.c b/util/compatfd.c
index 9cf3f28..430a41c 100644
--- a/util/compatfd.c
+++ b/util/compatfd.c
@@ -15,9 +15,9 @@
#include "qemu-common.h"
#include "qemu/compatfd.h"
+#include "qemu/thread.h"
#include <sys/syscall.h>
-#include <pthread.h>
struct sigfd_compat_info
{
@@ -28,10 +28,6 @@ struct sigfd_compat_info
static void *sigwait_compat(void *opaque)
{
struct sigfd_compat_info *info = opaque;
- sigset_t all;
-
- sigfillset(&all);
- pthread_sigmask(SIG_BLOCK, &all, NULL);
while (1) {
int sig;
@@ -71,9 +67,8 @@ static void *sigwait_compat(void *opaque)
static int qemu_signalfd_compat(const sigset_t *mask)
{
- pthread_attr_t attr;
- pthread_t tid;
struct sigfd_compat_info *info;
+ QemuThread thread;
int fds[2];
info = malloc(sizeof(*info));
@@ -93,12 +88,7 @@ static int qemu_signalfd_compat(const sigset_t *mask)
memcpy(&info->mask, mask, sizeof(*mask));
info->fd = fds[1];
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-
- pthread_create(&tid, &attr, sigwait_compat, info);
-
- pthread_attr_destroy(&attr);
+ qemu_thread_create(&thread, sigwait_compat, info, QEMU_THREAD_DETACHED);
return fds[0];
}
OpenPOWER on IntegriCloud