[Openais] changing gettimeofday to times

Fabien THOMAS fabien.thomas at netasq.com
Mon Nov 20 05:54:03 PST 2006


under my previous mail i incorrectly stated that clock_gettime is  
unavailable under Darwin and FreeBSD:
it exist under FreeBSD with CLOCK_MONOTONIC.

steven do you need a clock that can be converted to time of day ?

Le 20 nov. 06 à 13:38, Alejandro López a écrit :

> Hi Steven,
>
> on Solaris you can use the function posix clock_gettime():
>
> Realtime Library Functions                     clock_settime(3RT)
>
> NAME
>      clock_settime, clock_gettime, clock_getres - high-resolution
>      clock operations
>
> SYNOPSIS
>      cc [ flag... ] file... -lrt [ library... ]
>      #include <time.h>
>
>      int clock_gettime(clockid_t clock_id, struct timespec *tp);
>
>
> with clock_id CLOCK_HIGHRES:
>
>      A clock_id of CLOCK_HIGHRES represents  the  non-adjustable,
>      high-resolution  clock  for  the system. For this clock, the
>      value returned by clock_gettime(3RT) represents  the  amount
>      of  time  (in  seconds and nanoseconds) since some arbitrary
>      time in the past; it is not correlated in  any  way  to  the
>      time  of  day,  and  thus  is  not  subject  to resetting or
>      drifting   by    way    of    adjtime(2),    ntp_adjtime(2),
>      settimeofday(3C),  or  clock_settime().  The time source for
>      this clock is the same as that for gethrtime(3C).
>
>
> This function is also available on linux but the clock_id is  
> CLOCK_MONOTONIC.
>
>
>
>
>
> Or you could use the Solaris-specific gethrtime():
>
>
> Standard C Library Functions                        gethrtime(3C)
>
>
>
> NAME
>      gethrtime, gethrvtime - get high resolution time
>
> SYNOPSIS
>      #include <sys/time.h>
>
>      hrtime_t gethrtime(void);
>
>      hrtime_t gethrvtime(void);
>
> DESCRIPTION
>      The gethrtime() function returns the current high-resolution
>      real time. Time is expressed as nanoseconds since some arbi-
>      trary time in the past; it is not correlated in any  way  to
>      the  time  of  day,  and thus is not subject to resetting or
>      drifting by way of adjtime(2) or settimeofday(3C).  The  hi-
>      res  timer  is  ideally  suited  to  performance measurement
>      tasks, where cheap, accurate interval timing is required.
>
>      The  gethrvtime()  function  returns   the   current   high-
>      resolution  LWP virtual time, expressed as total nanoseconds
>      of execution time.
>
>      The gethrtime() and gethrvtime() functions  both  return  an
>      hrtime_t, which is a 64-bit (long long) signed integer.
>
>
>
>
> Hope this helps.
> Alejandro.
>
>
>
> Steven Dake wrote:
>> If the system time is changed while openais is running the timing  
>> system
>> gets all out of wack.  This is because gettimeofday returns the  
>> current
>> time, instead of the number of msec since boot and is used in the  
>> tlist
>> code.
>>
>> There is a mechanism to determine the number of msec since boot which
>> appears to be portable.  The posix API is "times" which returns the
>> number of clock ticks since system boot.
>>
>> The Linux man page says times returns a time value from some time  
>> in the
>> past but on linux this is the system boot time.
>>
>> On BSD or Solaris, is this also the case?  I don't have the man  
>> pages to
>> check these systems and would like a portable solution.  The other
>> possibility is getitimer and setitimer or the posix timer_gettime
>> absolute time but I think these posix APIs are not supported on all
>> platforms.
>>
>> Regards
>> -steve
>>
>> _______________________________________________
>> Openais mailing list
>> Openais at lists.osdl.org
>> https://lists.osdl.org/mailman/listinfo/openais
> _______________________________________________
> Openais mailing list
> Openais at lists.osdl.org
> https://lists.osdl.org/mailman/listinfo/openais





More information about the Openais mailing list