dwww Home | Manual pages | Find package

timeval(3bsd)                        LOCAL                       timeval(3bsd)

NAME
     timeval, timespec — time structures

LIBRARY
     Utility functions from BSD systems (libbsd, -lbsd)

SYNOPSIS
     #include <sys/time.h>
     (See libbsd(7) for include usage.)

     void
     TIMEVAL_TO_TIMESPEC(struct timeval *tv, struct timespec *ts);

     void
     TIMESPEC_TO_TIMEVAL(struct timeval *tv, struct timespec *ts);

DESCRIPTION
     The <sys/time.h> header, included by <time.h>, defines various structures
     related to time and timers.

      1.   The following structure is used by gettimeofday(2), among others:

                 struct timeval {
                         time_t          tv_sec;
                         suseconds_t     tv_usec;
                 };

           The tv_sec member represents the elapsed time, in whole seconds.
           The tv_usec member captures rest of the elapsed time, represented
           as the number of microseconds.

      2.   The following structure is used by nanosleep(2), among others:

                 struct timespec {
                         time_t          tv_sec;
                         long            tv_nsec;
                 };

           The tv_sec member is again the elapsed time in whole seconds.  The
           tv_nsec member represents the rest of the elapsed time in nanosec-
           onds.

           A microsecond is equal to one millionth of a second, 1000 nanosec-
           onds, or 1/1000 milliseconds.  To ease the conversions, the macros
           TIMEVAL_TO_TIMESPEC() and TIMESPEC_TO_TIMEVAL() can be used to con-
           vert between struct timeval and struct timespec.

EXAMPLES
     It can be stressed that the traditional UNIX timeval and timespec struc-
     tures represent elapsed time, measured by the system clock.  The follow-
     ing sketch implements a function suitable for use in a context where the
     timespec structure is required for a conditional timeout:

           static void
           example(struct timespec *spec, time_t minutes)
           {
                   struct timeval elapsed;

                   (void)gettimeofday(&elapsed, NULL);

                   _DIAGASSERT(spec != NULL);
                   TIMEVAL_TO_TIMESPEC(&elapsed, spec);

                   /* Add the offset for timeout in minutes. */
                   spec->tv_sec = spec->tv_sec + minutes * 60;
           }

     A better alternative would use the more precise clock_gettime(2).

SEE ALSO
     timeradd(3bsd)

BSD                             April 12, 2011                             BSD

Generated by dwww version 1.15 on Sun Jun 16 18:00:58 CEST 2024.