]> xenbits.xensource.com Git - libvirt.git/commitdiff
Avoid pthread_sigmask on Win32 platforms
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 10 Feb 2011 12:46:29 +0000 (12:46 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 10 Feb 2011 14:30:10 +0000 (14:30 +0000)
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

index be2cd6762257439d5259036d7f22b6eae4f4e5ba..6d9861fa1318186e423c992e542ade49b1e9ab7b 100644 (file)
@@ -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);
         }