From 100f4a63a2478ad9e2a8fa646e4605c2755f99ab Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Thu, 10 Feb 2011 12:46:29 +0000 Subject: [PATCH] Avoid pthread_sigmask on Win32 platforms Win32 doesn't have a concept of signal masks so disable that code. It is unclear how SIGINT is delivered (if at all) on Win32, so this might further work to provide an alternative to pthread_sigmask * tools/virsh.c: Avoid pthread_sigmask on Win32 --- tools/virsh.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index be2cd67622..6d9861fa13 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -3489,15 +3489,17 @@ doMigrate (void *opaque) const char *migrateuri; const char *dname; int flags = 0, found; - sigset_t sigmask, oldsigmask; vshCtrlData *data = opaque; vshControl *ctl = data->ctl; const vshCmd *cmd = data->cmd; +#if HAVE_PTHREAD_SIGMASK + sigset_t sigmask, oldsigmask; sigemptyset(&sigmask); sigaddset(&sigmask, SIGINT); if (pthread_sigmask(SIG_BLOCK, &sigmask, &oldsigmask) < 0) goto out_sig; +#endif if (!vshConnectionUsability (ctl, ctl->conn)) goto out; @@ -3563,8 +3565,10 @@ doMigrate (void *opaque) } out: +#if HAVE_PTHREAD_SIGMASK pthread_sigmask(SIG_SETMASK, &oldsigmask, NULL); out_sig: +#endif if (dom) virDomainFree (dom); ignore_value(safewrite(data->writefd, &ret, sizeof(ret))); } @@ -3607,12 +3611,16 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd) struct sigaction old_sig_action; virDomainJobInfo jobinfo; bool verbose = false; - sigset_t sigmask, oldsigmask; int timeout; struct timeval start, curr; bool live_flag = false; - vshCtrlData data; +#if HAVE_PTHREAD_SIGMASK + sigset_t sigmask, oldsigmask; + + sigemptyset(&sigmask); + sigaddset(&sigmask, SIGINT); +#endif if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return FALSE; @@ -3665,8 +3673,6 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd) pollfd.fd = p[0]; pollfd.events = POLLIN; pollfd.revents = 0; - sigemptyset(&sigmask); - sigaddset(&sigmask, SIGINT); GETTIMEOFDAY(&start); while (1) { @@ -3709,9 +3715,13 @@ repoll: } if (verbose) { +#if HAVE_PTHREAD_SIGMASK pthread_sigmask(SIG_BLOCK, &sigmask, &oldsigmask); +#endif ret = virDomainGetJobInfo(dom, &jobinfo); +#if HAVE_PTHREAD_SIGMASK pthread_sigmask(SIG_SETMASK, &oldsigmask, NULL); +#endif if (ret == 0) print_job_progress(jobinfo.dataRemaining, jobinfo.dataTotal); } -- 2.39.5