Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Jan 2000 17:41:43 -0800 (PST)
From:      Sabrina Minshall <sabrina@accesscom.com>
To:        hackers@freebsd.org
Cc:        sabrina@accesscom.com
Subject:   PR kern/14034: gettimeofday() returns negative value?
Message-ID:  <200001200141.RAA30336@shell.accesscom.com>

next in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001200141.RAA30336>