GETTIMEOFDAY(2)

NAME
gettimeofday, settimeofday - get / set time

SYNOPSIS
#include <sys/time.h>
#include <unistd.h>

int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv , const struct timezone *tz);

DESCRIPTION
gettimeofday and settimeofday can set the time as well as a timezone. tv is a timeval struct, as specified in /usr/include/sys/time.h:

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.

RETURN VALUES
getimeofday and settimeofday return 0 for success, or -1 for failure (in which case errno is set appropriately).

ERRORS

EPERM
    settimeofday is called by someone other than the superuser.

EINVAL
    Timezone (or something else) is invalid.

EFAULT
    One of tv or tz pointed outside your accessible address space.

CONFORMING TO
SVr4, BSD 4.3

SEE ALSO
date(1), adjtimex(2), time(2), ctime(3), ftime(3)