gettimeofday - get time
#include <sys/time.h> #include <time.h> int gettimeofday(struct timeval *tv, struct timezone *tz);
struct timeval {
long tv_sec; /* seconds / long tv_usec; / microseconds */
};
The tv_sec member of the struct is the number of seconds since the Epoch (see time(2)), and tv_usec is the amount of microseconds past the current tv_sec value.
struct timezone {
int tz_minuteswest; /* minutes W of Greenwich / int tz_dsttime; / type of dst correction */
};
The use of the timezone struct is obsolete; the tz_dsttime field has never been used under Linux - it has not been and will not be supported by libc or glibc. Each and every occurrence of this field in the kernel source (other than the declaration) is a bug. Thus, the following is purely of historic interest.
Of course it turned out that the period in which Daylight Saving Time is in force cannot be given by a simple algorithm, one per country; indeed, this period is determined by unpredictable political decisions. So this method of representing time zones has been abandoned.
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.
gettimeofday(2) return 0 for success, or -1 for failure (in which case errno is set appropriately).
The defines for timercmp, timerisset, timerclear, timeradd, timersub are (since glibc2.2.2) only available if _BSD_SOURCE is defined (either explicitly, or implicitly, by not defining _POSIX_SOURCE or compiling with the -ansi flag).
SVr4, BSD 4.3
18 pages link to gettimeofday(2):