* hires.h (hires_base::reset): New function.

(hires_us): Specify that hires_base is a public import.
(hires_ms): Ditto.
* times.cc (gtod): Move earlier in file.
(settimeofday): Reset gtod so that base will be subsequently recalculated.
This commit is contained in:
Christopher Faylor 2010-05-26 14:48:17 +00:00
parent 1ee8d76ca0
commit fca8f35f11
3 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,12 @@
2010-05-26 Christopher Faylor <me+cygwin@cgf.cx>
* hires.h (hires_base::reset): New function.
(hires_us): Specify that hires_base is a public import.
(hires_ms): Ditto.
* times.cc (gtod): Move earlier in file.
(settimeofday): Reset gtod so that base will be subsequently
recalculated.
2010-05-26 Corinna Vinschen <corinna@vinschen.de> 2010-05-26 Corinna Vinschen <corinna@vinschen.de>
* path.cc (symlink_info::check): Don't try to handle remote reparse * path.cc (symlink_info::check): Don't try to handle remote reparse

View File

@ -1,6 +1,6 @@
/* hires.h: Definitions for hires clock calculations /* hires.h: Definitions for hires clock calculations
Copyright 2002, 2003, 2004, 2005, 2009 Red Hat, Inc. Copyright 2002, 2003, 2004, 2005, 2009, 2010 Red Hat, Inc.
This file is part of Cygwin. This file is part of Cygwin.
@ -25,9 +25,11 @@ class hires_base
{ {
protected: protected:
int inited; int inited;
public:
void reset() {inited = false;}
}; };
class hires_us : hires_base class hires_us : public hires_base
{ {
LARGE_INTEGER primed_ft; LARGE_INTEGER primed_ft;
LARGE_INTEGER primed_pc; LARGE_INTEGER primed_pc;
@ -37,7 +39,7 @@ class hires_us : hires_base
LONGLONG usecs (bool justdelta); LONGLONG usecs (bool justdelta);
}; };
class hires_ms : hires_base class hires_ms : public hires_base
{ {
LONGLONG initime_ns; LONGLONG initime_ns;
void prime (); void prime ();

View File

@ -28,6 +28,8 @@ details. */
#define FACTOR (0x19db1ded53e8000LL) #define FACTOR (0x19db1ded53e8000LL)
#define NSPERSEC 10000000LL #define NSPERSEC 10000000LL
hires_ms NO_COPY gtod;
static inline LONGLONG static inline LONGLONG
systime_ns () systime_ns ()
{ {
@ -116,6 +118,7 @@ settimeofday (const struct timeval *tv, const struct timezone *tz)
st.wMilliseconds = tv->tv_usec / 1000; st.wMilliseconds = tv->tv_usec / 1000;
res = !SetSystemTime (&st); res = !SetSystemTime (&st);
gtod.reset ();
syscall_printf ("%d = settimeofday (%x, %x)", res, tv, tz); syscall_printf ("%d = settimeofday (%x, %x)", res, tv, tz);
@ -146,8 +149,6 @@ totimeval (struct timeval *dst, FILETIME *src, int sub, int flag)
dst->tv_sec = x / (long long) (1e6); dst->tv_sec = x / (long long) (1e6);
} }
hires_ms NO_COPY gtod;
/* FIXME: Make thread safe */ /* FIXME: Make thread safe */
extern "C" int extern "C" int
gettimeofday (struct timeval *tv, void *tzvp) gettimeofday (struct timeval *tv, void *tzvp)