summaryrefslogtreecommitdiffstats
path: root/man2/gettimeofday.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/gettimeofday.2')
-rw-r--r--man2/gettimeofday.2228
1 files changed, 228 insertions, 0 deletions
diff --git a/man2/gettimeofday.2 b/man2/gettimeofday.2
new file mode 100644
index 000000000..eafd7df55
--- /dev/null
+++ b/man2/gettimeofday.2
@@ -0,0 +1,228 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt (michael@moria.de)
+.\" Modified 1993-07-23 by Rik Faith (faith@cs.unc.edu)
+.\" Modified 1994-08-21 by Michael Chastain (mec@shell.portal.com):
+.\" Fixed necessary '#include' lines.
+.\" Modified 1995-04-15 by Michael Chastain (mec@shell.portal.com):
+.\" Added reference to adjtimex.
+.\" Removed some nonsense lines pointed out by Urs Thuermann,
+.\" (urs@isnogud.escape.de), aeb, 950722.
+.\" Modified 1997-01-14 by Austin Donnelly (and1000@debian.org):
+.\" Added return values section, and bit on EFAULT
+.\" Added clarification on timezone, aeb, 971210.
+.\" Removed "#include <unistd.h>", aeb, 010316.
+.\" Modified, 2004-05-27 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
+.\" Added notes on capability requirement.
+.\"
+.TH GETTIMEOFDAY 2 2004-05-27 "Linux 2.6.6" "Linux Programmer's Manual"
+.SH NAME
+gettimeofday, settimeofday \- get / set time
+.SH SYNOPSIS
+.B #include <sys/time.h>
+.sp
+.BI "int gettimeofday(struct timeval *" tv ", struct timezone *" tz );
+.br
+.BI "int settimeofday(const struct timeval *" tv
+.BI ", const struct timezone *" tz );
+.SH DESCRIPTION
+The functions
+.B gettimeofday
+and
+.B settimeofday
+can get and set the time as well as a timezone.
+The
+.I tv
+argument is a
+.B timeval
+struct, as specified in <sys/time.h>:
+.sp
+.nf
+struct timeval {
+.in +8
+time_t tv_sec; /* seconds */
+suseconds_t tv_usec; /* microseconds */
+.in -8
+};
+.fi
+.sp
+and gives the number of seconds and microseconds since the Epoch (see
+.BR time (2)).
+The
+.I tz
+argument is a
+.B timezone
+:
+.sp
+.nf
+struct timezone {
+.in +8
+int tz_minuteswest; /* minutes W of Greenwich */
+int tz_dsttime; /* type of dst correction */
+.in -8
+};
+.fi
+.PP
+The use of the timezone struct is obsolete; the
+.I 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.
+
+The field
+.I tz_dsttime
+contains a symbolic constant (values are given below)
+that indicates in which part of the year Daylight Saving Time
+is in force. (Note: its value is constant throughout the year -
+it does not indicate that DST is in force, it just selects an
+algorithm.)
+The daylight saving time algorithms defined are as follows :
+.PP
+.ta 14
+\fB DST_NONE\fP /* not on dst */
+.br
+\fB DST_USA\fP /* USA style dst */
+.br
+\fB DST_AUST\fP /* Australian style dst */
+.br
+\fB DST_WET\fP /* Western European dst */
+.br
+\fB DST_MET\fP /* Middle European dst */
+.br
+\fB DST_EET\fP /* Eastern European dst */
+.br
+\fB DST_CAN\fP /* Canada */
+.br
+\fB DST_GB\fP /* Great Britain and Eire */
+.br
+\fB DST_RUM\fP /* Rumania */
+.br
+\fB DST_TUR\fP /* Turkey */
+.br
+\fB DST_AUSTALT\fP /* Australian style with shift in 1986 */
+.PP
+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. Under Linux, in a call to
+.B settimeofday
+the
+.I tz_dsttime
+field should be zero.
+.PP
+Under Linux there is some peculiar `warp clock' semantics associated
+to the
+.B settimeofday
+system call if on the very first call (after booting)
+that has a non-NULL
+.I tz
+argument, the
+.I tv
+argument is NULL and the
+.I tz_minuteswest
+field is nonzero. In such a case it is assumed that the CMOS clock
+is on local time, and that it has to be incremented by this amount
+to get UTC system time.
+No doubt it is a bad idea to use this feature.
+.PP
+The following macros are defined to operate on a struct timeval :
+.br
+.nf
+#define timerisset(tvp)\\
+.ti +8
+((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp, uvp, cmp)\\
+.in +8
+((tvp)->tv_sec cmp (uvp)->tv_sec ||\\
+(tvp)->tv_sec == (uvp)->tv_sec &&\\
+(tvp)->tv_usec cmp (uvp)->tv_usec)
+.in -8
+#define timerclear(tvp)\\
+.ti +8
+((tvp)->tv_sec = (tvp)->tv_usec = 0)
+.fi
+.PP
+If either
+.I tv
+or
+.I tz
+is null, the corresponding structure is not set or returned.
+.PP
+Only the super user may use
+.BR settimeofday .
+.SH "RETURN VALUE"
+.B gettimeofday
+and
+.B settimeofday
+return 0 for success, or \-1 for failure (in which case
+.I errno
+is set appropriately).
+.SH ERRORS
+.TP
+.B EFAULT
+One of
+.I tv
+or
+.I tz
+pointed outside the accessible address space.
+.TP
+.B EINVAL
+Timezone (or something else) is invalid.
+.TP
+.B EPERM
+The calling process has insufficient privilege to call
+.BR settimeofday ;
+under Linux the
+.B CAP_SYS_TIME
+capability is required.
+.SH NOTE
+The prototype for
+.B settimeofday
+and the defines for
+.BR timercmp ,
+.BR timerisset ,
+.BR timerclear ,
+.BR timeradd ,
+.BR timersub
+are (since glibc2.2.2) only available if
+.B _BSD_SOURCE
+is defined (either explicitly, or implicitly, by not defining
+_POSIX_SOURCE or compiling with the -ansi flag).
+.LP
+Traditionally, the fields of struct timeval were longs.
+.SH "CONFORMING TO"
+SVr4, BSD 4.3. POSIX 1003.1-2001 describes gettimeofday()
+but not settimeofday().
+.SH "SEE ALSO"
+.BR date (1),
+.BR adjtimex (2),
+.BR time (2),
+.BR ctime (3),
+.BR ftime (3),
+.BR capabilities (7)