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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list