What's going one here? Successive calls to gettimeofday
yields negative elapsed time?
Any fixes?
~~~~negtime.c~~~~
#include <sys/param.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/select.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <unistd.h>
int
time_elapsed(struct timeval *t1, struct timeval *t2)
{
int s, ms;
s = t1->tv_sec - t2->tv_sec;
assert((s >= 0));
if (s != 0) {
if (t1->tv_usec < t2->tv_usec) {
s--;
t1->tv_usec += 1000000;
}
}
ms = s * 1000000 + (t1->tv_usec - t2->tv_usec);
return (ms);
}
int
main()
{
struct timeval tv1, tv2;
int diff;
if (gettimeofday(&tv1, NULL) < 0) {
perror("gettimeofday");
}
tv2 = tv1;
for (;;) {
usleep(2000);
if (gettimeofday(&tv1, NULL) < 0) {
perror("gettimeofday");
}
/*
* diff in usec.
*/
diff = time_elapsed(&tv1, &tv2);
if (diff < 0) {
printf("-ve tvdiff %d\n", diff);
printf("%ld %ld %ld %ld\n",
tv1.tv_sec, tv1.tv_usec,
tv2.tv_sec, tv2.tv_usec);
assert(0);
}
tv2 = tv1;
}
return (0);
}
~~~~negtime.c~~~~
hacker ~>./a.out
-ve tvdiff -979993
948332324 35044 948332324 1015037
assertion "0" failed: file "negtime.c", line 56
Abort
Thanks,
sabrina
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message