00001
00002
00003
00004
00005
00006
00007 #include "wvtimeutils.h"
00008
00009 #ifdef _WIN32
00010 int gettimeofday(struct timeval *tv, struct timezone *tz);
00011 #endif
00012
00013 time_t msecdiff(const struct timeval &a, const struct timeval &b)
00014 {
00015 time_t secdiff = a.tv_sec - b.tv_sec;
00016 time_t usecdiff = a.tv_usec - b.tv_usec;
00017 return secdiff * 1000 + usecdiff / 1000;
00018 }
00019
00020
00021 struct timeval wvtime()
00022 {
00023 struct timeval tv;
00024 gettimeofday(&tv, 0);
00025 return tv;
00026 }
00027
00028
00029 struct timeval msecadd(const struct timeval &a, time_t msec)
00030 {
00031 struct timeval b;
00032 b.tv_sec = a.tv_sec + msec / 1000;
00033 b.tv_usec = a.tv_usec + (msec % 1000) * 1000;
00034 normalize(b);
00035 return b;
00036 }
00037
00038
00039 struct timeval tvdiff(const struct timeval &a,
00040 const struct timeval &b)
00041 {
00042 struct timeval c;
00043 c.tv_sec = a.tv_sec - b.tv_sec;
00044 c.tv_usec = a.tv_usec;
00045
00046 if (b.tv_usec > a.tv_usec)
00047 {
00048 c.tv_sec--;
00049 c.tv_usec += 1000000;
00050 }
00051
00052 c.tv_usec -= b.tv_usec;
00053
00054 normalize(c);
00055 return c;
00056 }
00057