summaryrefslogtreecommitdiff
path: root/ext/Time
diff options
context:
space:
mode:
authorSteve Peters <steve@fisharerojo.org>2006-08-22 14:14:23 +0000
committerSteve Peters <steve@fisharerojo.org>2006-08-22 14:14:23 +0000
commit47e797f625b9a2cf70daaee8ee96850aad2c78c3 (patch)
treef58197497a167289467b88c29fef6696e62e4347 /ext/Time
parent8a722a808f014b250085459c05169292bb4903ff (diff)
downloadperl-47e797f625b9a2cf70daaee8ee96850aad2c78c3.tar.gz
Upgrade to Time-HiRes-1.88.
p4raw-id: //depot/perl@28745
Diffstat (limited to 'ext/Time')
-rw-r--r--ext/Time/HiRes/Changes5
-rw-r--r--ext/Time/HiRes/HiRes.pm2
-rw-r--r--ext/Time/HiRes/HiRes.xs51
3 files changed, 35 insertions, 23 deletions
diff --git a/ext/Time/HiRes/Changes b/ext/Time/HiRes/Changes
index 048912332f..1dc4b3f252 100644
--- a/ext/Time/HiRes/Changes
+++ b/ext/Time/HiRes/Changes
@@ -1,5 +1,10 @@
Revision history for Perl extension Time::HiRes.
+1.88 [2006-08-21]
+ - clean up the g++ warnings in HiRes.xs, all of them
+ about mixing integer and floating point, introduce
+ constants IV_1[679] and NV_1[679]
+
1.87 [2006-02-13]
- [rt.cpan.org #17442] 'make test' frequently fails under
Cygwin Perl v5.8.8, reported and patched by J. R. Hedden
diff --git a/ext/Time/HiRes/HiRes.pm b/ext/Time/HiRes/HiRes.pm
index 564f10e22a..c1821845ba 100644
--- a/ext/Time/HiRes/HiRes.pm
+++ b/ext/Time/HiRes/HiRes.pm
@@ -21,7 +21,7 @@ require DynaLoader;
d_nanosleep d_clock_gettime d_clock_getres
d_clock d_clock_nanosleep);
-$VERSION = '1.87';
+$VERSION = '1.88';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
diff --git a/ext/Time/HiRes/HiRes.xs b/ext/Time/HiRes/HiRes.xs
index 8883be8b55..236f38da2a 100644
--- a/ext/Time/HiRes/HiRes.xs
+++ b/ext/Time/HiRes/HiRes.xs
@@ -37,6 +37,13 @@ extern "C" {
}
#endif
+#define IV_1E6 1000000L
+#define IV_1E7 10000000L
+#define IV_1E9 1000000000L
+#define NV_1E6 1000000.0
+#define NV_1E7 10000000.0
+#define NV_1E9 1000000000.0
+
#ifndef PerlProc_pause
# define PerlProc_pause() Pause()
#endif
@@ -154,8 +161,8 @@ _gettimeofday(pTHX_ struct timeval *tp, void *not_used)
QueryPerformanceCounter((LARGE_INTEGER*)&ticks);
ticks -= MY_CXT.base_ticks;
ft.ft_i64 = MY_CXT.base_systime_as_filetime.ft_i64
- + Const64(10000000) * (ticks / MY_CXT.tick_frequency)
- +(Const64(10000000) * (ticks % MY_CXT.tick_frequency)) / MY_CXT.tick_frequency;
+ + Const64(IV_1E7) * (ticks / MY_CXT.tick_frequency)
+ +(Const64(IV_1E7) * (ticks % MY_CXT.tick_frequency)) / MY_CXT.tick_frequency;
diff = ft.ft_i64 - MY_CXT.base_systime_as_filetime.ft_i64;
if (diff < -MAX_PERF_COUNTER_SKEW || diff > MAX_PERF_COUNTER_SKEW) {
MY_CXT.base_ticks += ticks;
@@ -165,10 +172,10 @@ _gettimeofday(pTHX_ struct timeval *tp, void *not_used)
}
/* seconds since epoch */
- tp->tv_sec = (long)((ft.ft_i64 - EPOCH_BIAS) / Const64(10000000));
+ tp->tv_sec = (long)((ft.ft_i64 - EPOCH_BIAS) / Const64(IV_1E7));
/* microseconds remaining */
- tp->tv_usec = (long)((ft.ft_i64 / Const64(10)) % Const64(1000000));
+ tp->tv_usec = (long)((ft.ft_i64 / Const64(10)) % Const64(IV_1E6));
return 0;
}
@@ -383,8 +390,8 @@ void
hrt_nanosleep(unsigned long usec) /* This is used to emulate usleep. */
{
struct timespec res;
- res.tv_sec = usec/1000/1000;
- res.tv_nsec = ( usec - res.tv_sec*1000*1000 ) * 1000;
+ res.tv_sec = usec / IV_1E6;
+ res.tv_nsec = ( usec - res.tv_sec * IV_1E6 ) * 1000;
nanosleep(&res, NULL);
}
@@ -456,10 +463,10 @@ int
hrt_ualarm(int usec, int interval)
{
struct itimerval itv;
- itv.it_value.tv_sec = usec / 1000000;
- itv.it_value.tv_usec = usec % 1000000;
- itv.it_interval.tv_sec = interval / 1000000;
- itv.it_interval.tv_usec = interval % 1000000;
+ itv.it_value.tv_sec = usec / IV_1E6;
+ itv.it_value.tv_usec = usec % IV_1E6;
+ itv.it_interval.tv_sec = interval / IV_1E6;
+ itv.it_interval.tv_usec = interval % IV_1E6;
return setitimer(ITIMER_REAL, &itv, 0);
}
#endif /* #if !defined(HAS_UALARM) && defined(HAS_SETITIMER) */
@@ -683,7 +690,7 @@ myNVtime()
struct timeval Tp;
int status;
status = gettimeofday (&Tp, NULL);
- return status == 0 ? Tp.tv_sec + (Tp.tv_usec / 1000000.) : -1.0;
+ return status == 0 ? Tp.tv_sec + (Tp.tv_usec / NV_1E6) : -1.0;
}
#endif /* #ifdef HAS_GETTIMEOFDAY */
@@ -774,7 +781,7 @@ nanosleep(nsec)
} else if (nsec < 0.0)
croak("Time::HiRes::nanosleep(%"NVgf"): negative time not invented yet", nsec);
ts1.tv_sec = (IV) (nsec / 1E9);
- ts1.tv_nsec = (IV) nsec - ts1.tv_sec * 1E9;
+ ts1.tv_nsec = (IV) nsec - (IV) (ts1.tv_sec * NV_1E9);
status = nanosleep(&ts1, NULL);
} else {
PerlProc_pause();
@@ -866,8 +873,8 @@ alarm(seconds,interval=0)
CODE:
if (seconds < 0.0 || interval < 0.0)
croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): negative time not invented yet", seconds, interval);
- RETVAL = (NV)ualarm(seconds * 1000000,
- interval * 1000000) / 1E6;
+ RETVAL = (NV)ualarm((IV)(seconds * IV_1E6),
+ (IV)(interval * IV_1E6)) / NV_1E6;
OUTPUT:
RETVAL
@@ -912,7 +919,7 @@ gettimeofday()
PUSHs(sv_2mortal(newSViv(Tp.tv_usec)));
} else {
EXTEND(sp, 1);
- PUSHs(sv_2mortal(newSVnv(Tp.tv_sec + (Tp.tv_usec / 1000000.0))));
+ PUSHs(sv_2mortal(newSVnv(Tp.tv_sec + (Tp.tv_usec / NV_1E6))));
}
}
@@ -926,7 +933,7 @@ time()
status = gettimeofday (&Tp, &Tz);
if (status == 0) {
Tp.tv_sec += Tz.tz_minuteswest * 60; /* adjust for TZ */
- RETVAL = Tp.tv_sec + (Tp.tv_usec / 1000000.0);
+ RETVAL = Tp.tv_sec + (Tp.tv_usec / NV_1E6);
} else {
RETVAL = -1.0;
}
@@ -948,7 +955,7 @@ gettimeofday()
PUSHs(sv_2mortal(newSViv(Tp.tv_usec)));
} else {
EXTEND(sp, 1);
- PUSHs(sv_2mortal(newSVnv(Tp.tv_sec + (Tp.tv_usec / 1000000.0))));
+ PUSHs(sv_2mortal(newSVnv(Tp.tv_sec + (Tp.tv_usec / NV_1E6))));
}
}
@@ -960,7 +967,7 @@ time()
int status;
status = gettimeofday (&Tp, NULL);
if (status == 0) {
- RETVAL = Tp.tv_sec + (Tp.tv_usec / 1000000.);
+ RETVAL = Tp.tv_sec + (Tp.tv_usec / NV_1E6);
} else {
RETVAL = -1.0;
}
@@ -985,12 +992,12 @@ setitimer(which, seconds, interval = 0)
PPCODE:
if (seconds < 0.0 || interval < 0.0)
croak("Time::HiRes::setitimer(%"IVdf", %"NVgf", %"NVgf"): negative time not invented yet", (IV)which, seconds, interval);
- newit.it_value.tv_sec = seconds;
+ newit.it_value.tv_sec = (IV)seconds;
newit.it_value.tv_usec =
- (seconds - (NV)newit.it_value.tv_sec) * 1000000.0;
- newit.it_interval.tv_sec = interval;
+ (IV)((seconds - (NV)newit.it_value.tv_sec) * NV_1E6);
+ newit.it_interval.tv_sec = (IV)interval;
newit.it_interval.tv_usec =
- (interval - (NV)newit.it_interval.tv_sec) * 1000000.0;
+ (IV)((interval - (NV)newit.it_interval.tv_sec) * NV_1E6);
if (setitimer(which, &newit, &oldit) == 0) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSVnv(TV2NV(oldit.it_value))));