/* Portable timers.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Wget.
GNU Wget is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
GNU Wget is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with Wget; if not, write to the Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+along with Wget. If not, see <http://www.gnu.org/licenses/>.
In addition, as a special exception, the Free Software Foundation
gives permission to link the code of its release of Wget with the
ptimer_new -- creates a timer.
ptimer_reset -- resets the timer's elapsed time to zero.
ptimer_measure -- measure and return the time elapsed since
- creation or last reset.
+ creation or last reset.
ptimer_read -- reads the last measured elapsed value.
ptimer_destroy -- destroy the timer.
ptimer_granularity -- returns the approximate granularity of the timers.
#undef PTIMER_WINDOWS
#if defined(WINDOWS) || defined(__CYGWIN__)
-# define PTIMER_WINDOWS /* use Windows timers */
+# define PTIMER_WINDOWS /* use Windows timers */
#elif _POSIX_TIMERS - 0 > 0
-# define PTIMER_POSIX /* use POSIX timers (clock_gettime) */
+# define PTIMER_POSIX /* use POSIX timers (clock_gettime) */
#else
-# define PTIMER_GETTIMEOFDAY /* use gettimeofday */
+# define PTIMER_GETTIMEOFDAY /* use gettimeofday */
#endif
#ifdef PTIMER_POSIX
{
struct timespec r;
if (clocks[i].sysconf_name != NO_SYSCONF_CHECK)
- if (sysconf (clocks[i].sysconf_name) < 0)
- continue; /* sysconf claims this clock is unavailable */
+ if (sysconf (clocks[i].sysconf_name) < 0)
+ continue; /* sysconf claims this clock is unavailable */
if (clock_getres (clocks[i].id, &r) < 0)
- continue; /* clock_getres doesn't work for this clock */
+ continue; /* clock_getres doesn't work for this clock */
posix_clock_id = clocks[i].id;
posix_clock_resolution = (double) r.tv_sec + r.tv_nsec / 1e9;
/* Guard against nonsense returned by a broken clock_getres. */
if (posix_clock_resolution == 0)
- posix_clock_resolution = 1e-3;
+ posix_clock_resolution = 1e-3;
break;
}
if (i == countof (clocks))
{
/* If no clock was found, it means that clock_getres failed for
- the realtime clock. */
+ the realtime clock. */
logprintf (LOG_NOTQUIET, _("Cannot get REALTIME clock frequency: %s\n"),
- strerror (errno));
+ strerror (errno));
/* Use CLOCK_REALTIME, but invent a plausible resolution. */
posix_clock_id = CLOCK_REALTIME;
posix_clock_resolution = 1e-3;
posix_diff (ptimer_system_time *pst1, ptimer_system_time *pst2)
{
return ((pst1->tv_sec - pst2->tv_sec)
- + (pst1->tv_nsec - pst2->tv_nsec) / 1e9);
+ + (pst1->tv_nsec - pst2->tv_nsec) / 1e9);
}
static inline double
{
return posix_clock_resolution;
}
-#endif /* PTIMER_POSIX */
+#endif /* PTIMER_POSIX */
#ifdef PTIMER_GETTIMEOFDAY
/* Elapsed time measurement using gettimeofday: system time is held in
gettimeofday_diff (ptimer_system_time *pst1, ptimer_system_time *pst2)
{
return ((pst1->tv_sec - pst2->tv_sec)
- + (pst1->tv_usec - pst2->tv_usec) / 1e6);
+ + (pst1->tv_usec - pst2->tv_usec) / 1e6);
}
static inline double
than 1ms. Assume 100 usecs. */
return 0.1;
}
-#endif /* PTIMER_GETTIMEOFDAY */
+#endif /* PTIMER_GETTIMEOFDAY */
#ifdef PTIMER_WINDOWS
/* Elapsed time measurement on Windows: where high-resolution timers
if (windows_hires_timers)
return 1.0 / windows_hires_freq;
else
- return 10; /* according to MSDN */
+ return 10; /* according to MSDN */
}
-#endif /* PTIMER_WINDOWS */
+#endif /* PTIMER_WINDOWS */
\f
/* The code below this point is independent of timer implementation. */