Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Aug 2002 08:29:20 -0700 (PDT)
From:      Kevin Martin <sigma@pair.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/41781: clock_getres returns tv_nsec=0 when TSC is 1Ghz or faster
Message-ID:  <200208191529.g7JFTKSe066376@www.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         41781
>Category:       kern
>Synopsis:       clock_getres returns tv_nsec=0 when TSC is 1Ghz or faster
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Aug 19 08:30:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Kevin Martin
>Release:        4.6-STABLE
>Organization:
pair Networks, Inc
>Environment:
FreeBSD vondu.pair.com 4.6-STABLE FreeBSD 4.6-STABLE #12: Mon Aug 19 10:08:01 GMT 2002     sigma@vondu.pair.com:/usr/src/sys/compile/PAIRa  i386

>Description:
When the the TSC timer is 1Ghz or faster:
Timecounter "TSC"  frequency 1002275326 Hz
kern/kern_time.c handles clock_getres by dividing this value into
1000000000L.  The integer result is unfortunately zero.  Programs
which expect a useful result are disappointed.  For example, PGP uses
this value and divides by it, promptly dumping core.
>How-To-Repeat:
#include <sys/time.h>
#include <stdio.h>

main()
{
  struct timespec res;

  clock_getres(CLOCK_REALTIME, &res);
  printf("%u\n",(unsigned)res.tv_nsec);
}


gcc -o test test.c
./test

>Fix:
I believe the best solution is to return a minimum value of one
nanosecond, since the worst you've done is tell the calling program
that the timer is less precise than it is.  Does POSIX have anything
to say?  I don't know.

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




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