public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jan Hudec <bulb@ucw.cz>
To: linux-kernel@vger.kernel.org
Subject: Re: gettimeofday problem
Date: Tue, 25 Jun 2002 12:00:57 +0200	[thread overview]
Message-ID: <20020625100057.GC7500@vagabond> (raw)
In-Reply-To: <3D183540.6CA7CB00@sympatico.ca>

On Tue, Jun 25, 2002 at 05:17:52AM -0400, Christian Robert wrote:
> John Alvord wrote:
> > Maybe this is the result of floating point rounding errors. Floating
> > point is notorious for occaisional strange results. I suggest redoing
> > the test program to keep all results in integer and seeing what
> > happens...
> You were close. 
> Programming error on my part.

What about comparing the struct timeval things directly? There is even a
timercmp macro for that (well I noticed that in the manpage when I
have olrady had the test written; the macro can only do sharp comparsions).

Something like this:
(I am now running it on three machines - Athlon 850, Pentium 1500 and dual
Pentium III 500 - all seem to be OK so far)

#include<stdio.h>
#include<errno.h>
#include<sys/time.h>
#include<signal.h>

volatile int loop = 1;

void sigint(int foo) {
	loop = 0;
}

int main(void) {
	unsigned long long cnt = 0, bcnt = 0, ecnt = 0;
	struct timeval old, new = {0, 0};

	signal(SIGINT, sigint);
	while(loop && cnt < (1LLU<<54)) {
		cnt++;
		old = new;
		if(gettimeofday(&new, NULL)) {
			ecnt++;
			printf("Error #%llu: count=%llu"
			       " error/count=0.%04llu errno=%i (%s)\n",
			       ecnt, cnt, (10000*ecnt)/cnt, errno,
			       sys_errlist[errno]);
			continue;
		}
		if((new.tv_sec < old.tv_sec) || ((new.tv_sec == old.tv_sec) && (new.tv_usec < old.tv_usec))) {
			bcnt++;
			printf("Skew #%llu: count=%llu errors=%llu"
			       " skew/good count=0.%04llu, new=(%li,"
			       " %li) old=(%li, %li)\n", bcnt, cnt,
			       ecnt, (10000*bcnt)/(cnt-ecnt),
			       new.tv_sec, new.tv_usec, old.tv_sec,
			       old.tv_usec);
		}
	}

	printf("Counted %llu, errors %llu (0.%04llu), skews %llu"
	       " (0.%04llu)\n", cnt, ecnt, (10000*ecnt)/cnt, bcnt,
	       (10000*bcnt)/(cnt-ecnt));
	return 0;
}



-------------------------------------------------------------------------------
						 Jan 'Bulb' Hudec <bulb@ucw.cz>

  reply	other threads:[~2002-06-26 15:32 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-25  0:37 gettimeofday problem Christian Robert
2002-06-25  0:43 ` Brad Hards
2002-06-25  2:03   ` Christian Robert
2002-06-25  2:47     ` John Alvord
2002-06-25  9:17       ` Christian Robert
2002-06-25 10:00         ` Jan Hudec [this message]
2002-07-19 12:17           ` Amos Waterland
2002-06-25 11:45   ` Richard B. Johnson
2002-06-25 11:50     ` Brad Hards
  -- strict thread matches above, loose matches on Subject: below --
2002-06-24  8:55 Salvatore D'Angelo
     [not found] ` <200206240934.g5O9YL524660@budgie.cs.uwa.edu.au>
2002-06-24 10:20   ` Salvatore D'Angelo
2002-06-24 12:46     ` Matti Aarnio
2002-06-24 13:57       ` Salvatore D'Angelo
2002-06-24 18:56         ` Karim Yaghmour
2002-06-26 11:01           ` Gabriel Paubert
2002-07-01  2:30         ` Pavel Machek
2002-07-01  2:29       ` Pavel Machek
2002-06-24 19:44     ` Richard B. Johnson
2002-06-24 23:34       ` Frank van de Pol
2002-06-25 11:42         ` Richard B. Johnson
2002-06-28 18:04           ` george anzinger
2002-06-25 13:36       ` Chris Friesen
2002-06-26 10:58         ` Gabriel Paubert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020625100057.GC7500@vagabond \
    --to=bulb@ucw.cz \
    --cc=bulb@vagabond.cybernet.cz \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox