Message ID | AANLkTinEWYoC41sjAGwZ7oCLdu1=Tk-XkP9UJgieZBoi@mail.gmail.com |
---|---|
State | New |
Headers | show |
Am 13.03.2011 15:49, schrieb Blue Swirl: > Implement and wrap timersub() for Win32. > > Signed-off-by: Blue Swirl <blauwirbel@gmail.com> > --- > osdep.h | 19 +++++++++++++++++-- > ui/vnc.c | 6 +++--- > 2 files changed, 20 insertions(+), 5 deletions(-) > > diff --git a/osdep.h b/osdep.h > index 27eedcf..8c45000 100644 > --- a/osdep.h > +++ b/osdep.h > @@ -8,9 +8,7 @@ > #include <sys/signal.h> > #endif > > -#ifndef _WIN32 > #include <sys/time.h> > -#endif > > #ifndef glue > #define xglue(x, y) x ## y > @@ -131,4 +129,21 @@ int qemu_madvise(void *addr, size_t len, int advice); > > int qemu_create_pidfile(const char *filename); > > +#ifdef _WIN32 > +static inline void qemu_timersub(const struct timeval *val1, > + const struct timeval *val2, > + struct timeval *res) > +{ > + res->tv_sec = val1->tv_sec - val2->tv_sec; > + if (val1->tv_usec - val2->tv_usec < 0) { shorter: if (val1->tv_usec < val2->tv_usec) { > + res->tv_sec--; > + res->tv_usec = val1->tv_usec - val2->tv_usec + 1000 * 1000; > + } else { > + res->tv_usec = val1->tv_usec - val2->tv_usec; > + } > +} > +#else > +#define qemu_timersub timersub > +#endif > + > #endif > diff --git a/ui/vnc.c b/ui/vnc.c > index 34dc0cd..1b68965 100644 > --- a/ui/vnc.c > +++ b/ui/vnc.c > @@ -2302,7 +2302,7 @@ static int vnc_update_stats(VncDisplay *vd, > struct timeval * tv) > } > } > > - timersub(tv, &VNC_REFRESH_STATS, &res); > + qemu_timersub(tv, &VNC_REFRESH_STATS, &res); > > if (timercmp(&vd->guest.last_freq_check, &res, >)) { > return has_dirty; > @@ -2320,7 +2320,7 @@ static int vnc_update_stats(VncDisplay *vd, > struct timeval * tv) > } > > max = rect->times[(rect->idx + count - 1) % count]; > - timersub(tv, &max, &res); > + qemu_timersub(tv, &max, &res); > > if (timercmp(&res, &VNC_REFRESH_LOSSY, >)) { > rect->freq = 0; > @@ -2331,7 +2331,7 @@ static int vnc_update_stats(VncDisplay *vd, > struct timeval * tv) > > min = rect->times[rect->idx]; > max = rect->times[(rect->idx + count - 1) % count]; > - timersub(&max, &min, &res); > + qemu_timersub(&max, &min, &res); > > rect->freq = res.tv_sec + res.tv_usec / 1000000.; > rect->freq /= count; Acked-by: Stefan Weil <weil@mail.berlios.de>
On Sun, Mar 13, 2011 at 7:00 PM, Stefan Weil <weil@mail.berlios.de> wrote: > Am 13.03.2011 15:49, schrieb Blue Swirl: >> >> Implement and wrap timersub() for Win32. >> >> Signed-off-by: Blue Swirl <blauwirbel@gmail.com> >> --- >> osdep.h | 19 +++++++++++++++++-- >> ui/vnc.c | 6 +++--- >> 2 files changed, 20 insertions(+), 5 deletions(-) >> >> diff --git a/osdep.h b/osdep.h >> index 27eedcf..8c45000 100644 >> --- a/osdep.h >> +++ b/osdep.h >> @@ -8,9 +8,7 @@ >> #include <sys/signal.h> >> #endif >> >> -#ifndef _WIN32 >> #include <sys/time.h> >> -#endif >> >> #ifndef glue >> #define xglue(x, y) x ## y >> @@ -131,4 +129,21 @@ int qemu_madvise(void *addr, size_t len, int advice); >> >> int qemu_create_pidfile(const char *filename); >> >> +#ifdef _WIN32 >> +static inline void qemu_timersub(const struct timeval *val1, >> + const struct timeval *val2, >> + struct timeval *res) >> +{ >> + res->tv_sec = val1->tv_sec - val2->tv_sec; >> + if (val1->tv_usec - val2->tv_usec < 0) { > > shorter: if (val1->tv_usec < val2->tv_usec) { > >> + res->tv_sec--; >> + res->tv_usec = val1->tv_usec - val2->tv_usec + 1000 * 1000; >> + } else { >> + res->tv_usec = val1->tv_usec - val2->tv_usec; >> + } >> +} >> +#else >> +#define qemu_timersub timersub >> +#endif >> + >> #endif >> diff --git a/ui/vnc.c b/ui/vnc.c >> index 34dc0cd..1b68965 100644 >> --- a/ui/vnc.c >> +++ b/ui/vnc.c >> @@ -2302,7 +2302,7 @@ static int vnc_update_stats(VncDisplay *vd, >> struct timeval * tv) >> } >> } >> >> - timersub(tv, &VNC_REFRESH_STATS, &res); >> + qemu_timersub(tv, &VNC_REFRESH_STATS, &res); >> >> if (timercmp(&vd->guest.last_freq_check, &res, >)) { >> return has_dirty; >> @@ -2320,7 +2320,7 @@ static int vnc_update_stats(VncDisplay *vd, >> struct timeval * tv) >> } >> >> max = rect->times[(rect->idx + count - 1) % count]; >> - timersub(tv, &max, &res); >> + qemu_timersub(tv, &max, &res); >> >> if (timercmp(&res, &VNC_REFRESH_LOSSY, >)) { >> rect->freq = 0; >> @@ -2331,7 +2331,7 @@ static int vnc_update_stats(VncDisplay *vd, >> struct timeval * tv) >> >> min = rect->times[rect->idx]; >> max = rect->times[(rect->idx + count - 1) % count]; >> - timersub(&max, &min, &res); >> + qemu_timersub(&max, &min, &res); >> >> rect->freq = res.tv_sec + res.tv_usec / 1000000.; >> rect->freq /= count; > > Acked-by: Stefan Weil <weil@mail.berlios.de> Thanks for the ack, applied.
From cff2dbcf5ae3fc259b78dfa2d77737ec38c6de42 Mon Sep 17 00:00:00 2001 Message-Id: <cff2dbcf5ae3fc259b78dfa2d77737ec38c6de42.1300027705.git.blauwirbel@gmail.com> From: Blue Swirl <blauwirbel@gmail.com> Date: Sun, 13 Mar 2011 10:30:52 +0000 Subject: [PATCH] win32: implement missing timersub Implement and wrap timersub() for Win32. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- osdep.h | 19 +++++++++++++++++-- ui/vnc.c | 6 +++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/osdep.h b/osdep.h index 27eedcf..8c45000 100644 --- a/osdep.h +++ b/osdep.h @@ -8,9 +8,7 @@ #include <sys/signal.h> #endif -#ifndef _WIN32 #include <sys/time.h> -#endif #ifndef glue #define xglue(x, y) x ## y @@ -131,4 +129,21 @@ int qemu_madvise(void *addr, size_t len, int advice); int qemu_create_pidfile(const char *filename); +#ifdef _WIN32 +static inline void qemu_timersub(const struct timeval *val1, + const struct timeval *val2, + struct timeval *res) +{ + res->tv_sec = val1->tv_sec - val2->tv_sec; + if (val1->tv_usec - val2->tv_usec < 0) { + res->tv_sec--; + res->tv_usec = val1->tv_usec - val2->tv_usec + 1000 * 1000; + } else { + res->tv_usec = val1->tv_usec - val2->tv_usec; + } +} +#else +#define qemu_timersub timersub +#endif + #endif diff --git a/ui/vnc.c b/ui/vnc.c index 34dc0cd..1b68965 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -2302,7 +2302,7 @@ static int vnc_update_stats(VncDisplay *vd, struct timeval * tv) } } - timersub(tv, &VNC_REFRESH_STATS, &res); + qemu_timersub(tv, &VNC_REFRESH_STATS, &res); if (timercmp(&vd->guest.last_freq_check, &res, >)) { return has_dirty; @@ -2320,7 +2320,7 @@ static int vnc_update_stats(VncDisplay *vd, struct timeval * tv) } max = rect->times[(rect->idx + count - 1) % count]; - timersub(tv, &max, &res); + qemu_timersub(tv, &max, &res); if (timercmp(&res, &VNC_REFRESH_LOSSY, >)) { rect->freq = 0; @@ -2331,7 +2331,7 @@ static int vnc_update_stats(VncDisplay *vd, struct timeval * tv) min = rect->times[rect->idx]; max = rect->times[(rect->idx + count - 1) % count]; - timersub(&max, &min, &res); + qemu_timersub(&max, &min, &res); rect->freq = res.tv_sec + res.tv_usec / 1000000.; rect->freq /= count; -- 1.7.2.3
Implement and wrap timersub() for Win32. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- osdep.h | 19 +++++++++++++++++-- ui/vnc.c | 6 +++--- 2 files changed, 20 insertions(+), 5 deletions(-) return has_dirty; @@ -2320,7 +2320,7 @@ static int vnc_update_stats(VncDisplay *vd, struct timeval * tv) } max = rect->times[(rect->idx + count - 1) % count]; - timersub(tv, &max, &res); + qemu_timersub(tv, &max, &res); if (timercmp(&res, &VNC_REFRESH_LOSSY, >)) { rect->freq = 0; @@ -2331,7 +2331,7 @@ static int vnc_update_stats(VncDisplay *vd, struct timeval * tv) min = rect->times[rect->idx]; max = rect->times[(rect->idx + count - 1) % count]; - timersub(&max, &min, &res); + qemu_timersub(&max, &min, &res); rect->freq = res.tv_sec + res.tv_usec / 1000000.; rect->freq /= count;