[libvirt] [PATCH 1/3] Add a macro timeval_to_ms to compute micro seconds from timeval

Hu Tao hutao at cn.fujitsu.com
Tue Dec 14 07:40:12 UTC 2010


---
 src/qemu/qemu_driver.c |   24 ++++++++++--------------
 1 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index b9c5003..8b3546d 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -96,6 +96,8 @@
 
 #define QEMU_NAMESPACE_HREF "http://libvirt.org/schemas/domain/qemu/1.0"
 
+#define timeval_to_ms(tv)       (((tv).tv_sec * 1000ull) + ((tv).tv_usec / 1000))
+
 /* Only 1 job is allowed at any time
  * A job includes *all* monitor commands, even those just querying
  * information, not merely actions */
@@ -376,8 +378,7 @@ static int qemuDomainObjBeginJob(virDomainObjPtr obj)
                              _("cannot get time of day"));
         return -1;
     }
-    then = (now.tv_sec * 1000ull) + (now.tv_usec / 1000);
-    then += QEMU_JOB_WAIT_TIME;
+    then = timeval_to_ms(now) + QEMU_JOB_WAIT_TIME;
 
     virDomainObjRef(obj);
 
@@ -396,7 +397,7 @@ static int qemuDomainObjBeginJob(virDomainObjPtr obj)
     priv->jobActive = QEMU_JOB_UNSPECIFIED;
     priv->jobSignals = 0;
     memset(&priv->jobSignalsData, 0, sizeof(priv->jobSignalsData));
-    priv->jobStart = (now.tv_sec * 1000ull) + (now.tv_usec / 1000);
+    priv->jobStart = timeval_to_ms(now);
     memset(&priv->jobInfo, 0, sizeof(priv->jobInfo));
 
     return 0;
@@ -422,8 +423,7 @@ static int qemuDomainObjBeginJobWithDriver(struct qemud_driver *driver,
                              _("cannot get time of day"));
         return -1;
     }
-    then = (now.tv_sec * 1000ull) + (now.tv_usec / 1000);
-    then += QEMU_JOB_WAIT_TIME;
+    then = timeval_to_ms(now) + QEMU_JOB_WAIT_TIME;
 
     virDomainObjRef(obj);
     qemuDriverUnlock(driver);
@@ -444,7 +444,7 @@ static int qemuDomainObjBeginJobWithDriver(struct qemud_driver *driver,
     priv->jobActive = QEMU_JOB_UNSPECIFIED;
     priv->jobSignals = 0;
     memset(&priv->jobSignalsData, 0, sizeof(priv->jobSignalsData));
-    priv->jobStart = (now.tv_sec * 1000ull) + (now.tv_usec / 1000);
+    priv->jobStart = timeval_to_ms(now);
     memset(&priv->jobInfo, 0, sizeof(priv->jobInfo));
 
     virDomainObjUnlock(obj);
@@ -5469,9 +5469,7 @@ qemuDomainWaitForMigrationComplete(struct qemud_driver *driver, virDomainObjPtr
                                  _("cannot get time of day"));
             goto cleanup;
         }
-        priv->jobInfo.timeElapsed =
-            ((now.tv_sec * 1000ull) + (now.tv_usec / 1000)) -
-            priv->jobStart;
+        priv->jobInfo.timeElapsed = timeval_to_ms(now) - priv->jobStart;
 
         switch (status) {
         case QEMU_MONITOR_MIGRATION_STATUS_INACTIVE:
@@ -11154,7 +11152,7 @@ endjob:
         virDomainObjIsActive(vm)) {
         priv->jobActive = QEMU_JOB_MIGRATION_IN;
         priv->jobInfo.type = VIR_DOMAIN_JOB_UNBOUNDED;
-        priv->jobStart = (now.tv_sec * 1000ull) + (now.tv_usec / 1000);
+        priv->jobStart = timeval_to_ms(now);
     }
 
 cleanup:
@@ -11382,7 +11380,7 @@ endjob:
         virDomainObjIsActive(vm)) {
         priv->jobActive = QEMU_JOB_MIGRATION_IN;
         priv->jobInfo.type = VIR_DOMAIN_JOB_UNBOUNDED;
-        priv->jobStart = (now.tv_sec * 1000ull) + (now.tv_usec / 1000);
+        priv->jobStart = timeval_to_ms(now);
     }
 
 cleanup:
@@ -12371,9 +12369,7 @@ static int qemuDomainGetJobInfo(virDomainPtr dom,
                                      _("cannot get time of day"));
                 goto cleanup;
             }
-            info->timeElapsed =
-                ((now.tv_sec * 1000ull) + (now.tv_usec / 1000)) -
-                priv->jobStart;
+            info->timeElapsed = timeval_to_ms(now) - priv->jobStart;
         } else {
             memset(info, 0, sizeof(*info));
             info->type = VIR_DOMAIN_JOB_NONE;
-- 
1.7.3


-- 
Thanks,
Hu Tao




More information about the libvir-list mailing list