bad form, i think, to have a local variable shadow a global.
Index: kern_clock.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_clock.c,v
retrieving revision 1.83
diff -u -p -r1.83 kern_clock.c
--- kern_clock.c 8 Oct 2013 03:50:07 -0000 1.83
+++ kern_clock.c 29 Nov 2013 21:48:40 -0000
@@ -213,7 +213,7 @@ int
hzto(const struct timeval *tv)
{
struct timeval now;
- unsigned long ticks;
+ unsigned long nticks;
long sec, usec;
/*
@@ -244,18 +244,18 @@ hzto(const struct timeval *tv)
usec += 1000000;
}
if (sec < 0 || (sec == 0 && usec <= 0)) {
- ticks = 0;
+ nticks = 0;
} else if (sec <= LONG_MAX / 1000000)
- ticks = (sec * 1000000 + (unsigned long)usec + (tick - 1))
+ nticks = (sec * 1000000 + (unsigned long)usec + (tick - 1))
/ tick + 1;
else if (sec <= LONG_MAX / hz)
- ticks = sec * hz
+ nticks = sec * hz
+ ((unsigned long)usec + (tick - 1)) / tick + 1;
else
- ticks = LONG_MAX;
- if (ticks > INT_MAX)
- ticks = INT_MAX;
- return ((int)ticks);
+ nticks = LONG_MAX;
+ if (nticks > INT_MAX)
+ nticks = INT_MAX;
+ return ((int)nticks);
}
/*
@@ -264,7 +264,7 @@ hzto(const struct timeval *tv)
int
tvtohz(const struct timeval *tv)
{
- unsigned long ticks;
+ unsigned long nticks;
time_t sec;
long usec;
@@ -291,18 +291,18 @@ tvtohz(const struct timeval *tv)
sec = tv->tv_sec;
usec = tv->tv_usec;
if (sec < 0 || (sec == 0 && usec <= 0))
- ticks = 0;
+ nticks = 0;
else if (sec <= LONG_MAX / 1000000)
- ticks = (sec * 1000000 + (unsigned long)usec + (tick - 1))
+ nticks = (sec * 1000000 + (unsigned long)usec + (tick - 1))
/ tick + 1;
else if (sec <= LONG_MAX / hz)
- ticks = sec * hz
+ nticks = sec * hz
+ ((unsigned long)usec + (tick - 1)) / tick + 1;
else
- ticks = LONG_MAX;
- if (ticks > INT_MAX)
- ticks = INT_MAX;
- return ((int)ticks);
+ nticks = LONG_MAX;
+ if (nticks > INT_MAX)
+ nticks = INT_MAX;
+ return ((int)nticks);
}
int