On 07.06.2011 15:01, Jiri Denemark wrote:
---
src/libvirt_private.syms | 1 +
src/util/util.c | 24 ++++++++++++++++++++++++
src/util/util.h | 2 ++
3 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index e6ab870..2415a89 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1027,6 +1027,7 @@ virStrToLong_ul;
virStrToLong_ull;
virStrcpy;
virStrncpy;
+virTimeMs;
virTimestamp;
virVasprintf;
diff --git a/src/util/util.c b/src/util/util.c
index e221abe..d758cf9 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -3117,6 +3117,30 @@ virTimestamp(void)
return timestamp;
}
+#define timeval_to_ms(tv) (((tv).tv_sec * 1000ull) + ((tv).tv_usec / 1000))
What
about making this in util.h so we can have only one definition and
then cleanup src/qemu/qemu_domain.c:48, src/qemu/qemu_driver.c:116,
src/qemu/qemu_migration.c:49?
+
+/**
+ * virTimeMs:
+ *
+ * Get current time in milliseconds.
+ *
+ * Returns 0 on success, -1 on failure.
+ */
+int
+virTimeMs(unsigned long long *ms)
+{
+ struct timeval now;
+
+ if (gettimeofday(&now, NULL) < 0) {
+ virReportSystemError(errno, "%s",
+ _("cannot get time of day"));
+ return -1;
+ }
+
+ *ms = timeval_to_ms(now);
+ return 0;
+}
+
#if HAVE_LIBDEVMAPPER_H
bool
virIsDevMapperDevice(const char *devname)
diff --git a/src/util/util.h b/src/util/util.h
index a1bcca0..273248a 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -286,6 +286,8 @@ int virBuildPathInternal(char **path, ...) ATTRIBUTE_SENTINEL;
char *virTimestamp(void);
+int virTimeMs(unsigned long long *ms);
I'd add ATTRIBUTE_NONNULL(1); here.
+
bool virIsDevMapperDevice(const char *devname) ATTRIBUTE_NONNULL(1);
int virEmitXMLWarning(int fd,
Otherwise looking good.
ACK
Michal