int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv
, const struct timezone *tz);
struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ };
and tz is a timezone :
struct timezone { int tz_minuteswest; /* minutes west of Greenwich */ int tz_dsttime; /* type of dst correction */ };
With daylight savings times defined as follows :
DST_NONE
/* not on dst */
DST_USA
/* USA style dst */
DST_AUST
/* Australian style dst */
DST_WET
/* Western European dst */
DST_MET
/* Middle European dst */
DST_EET
/* Eastern European dst */
DST_CAN
/* Canada */
DST_GB
/* Great Britain and Eire */
DST_RUM
/* Rumania */
DST_TUR
/* Turkey */
DST_AUSTALT
/* Australian style with shift in 1986 */
And the following macros are defined to operate on this :
#define timerisset(tvp)\
((tvp)->tv_sec || (tvp)->tv_usec) #define timercmp(tvp, uvp, cmp)\ ((tvp)->tv_sec cmp (uvp)->tv_sec ||\ (tvp)->tv_sec == (uvp)->tv_sec &&\ (tvp)->tv_usec cmp (uvp)->tv_usec) #define timerclear(tvp)
((tvp)->tv_sec = (tvp)->tv_usec = 0)
If either tv or tz is null, the corresponding structure is not set or returned.
Only the super user may use settimeofday.