diff options
Diffstat (limited to 'lib/libc/gen/time.3')
-rw-r--r-- | lib/libc/gen/time.3 | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/lib/libc/gen/time.3 b/lib/libc/gen/time.3 new file mode 100644 index 000000000000..6df74df2dcb4 --- /dev/null +++ b/lib/libc/gen/time.3 @@ -0,0 +1,139 @@ +.\" Copyright (c) 1989, 1991, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" the American National Standards Committee X3, on Information +.\" Processing Systems. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd April 14, 2022 +.Dt TIME 3 +.Os +.Sh NAME +.Nm time +.Nd get time of day +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In time.h +.Ft time_t +.Fn time "time_t *tloc" +.Sh DESCRIPTION +The +.Fn time +function +returns the value of time in seconds since 0 hours, 0 minutes, +0 seconds, January 1, 1970, Coordinated Universal Time (UTC). +If an error occurs, +.Fn time +returns the value +.Po Vt time_t Pc Ns \-1 . +.Pp +The return value is also stored in +.No \&* Ns Va tloc , +provided that +.Va tloc +is non-null. +.Sh ERRORS +The +.Fn time +function may fail for any of the reasons described in +.Xr clock_gettime 2 . +.Sh SEE ALSO +.Xr clock_gettime 2 , +.Xr gettimeofday 2 , +.Xr ctime 3 +.Sh STANDARDS +The +.Nm +function conforms to +.St -p1003.1-2008 . +.Sh HISTORY +The +.Fn time +system call first appeared in +.At v1 . +Through the +.At v3 , +it returned 60 Hz ticks since an epoch that changed occasionally, because it +was a 32-bit value that overflowed in a little over 2 years. +.Pp +In +.At v4 +the granularity of the return value was reduced to whole seconds, +delaying the aforementioned overflow until 2038. +.Pp +.At v7 +introduced the +.Fn ftime +system call, which returned time at a millisecond level, +though retained the +.Fn gtime +system call (exposed as +.Fn time +in userland). +.Fn time +could have been implemented as a wrapper around +.Fn ftime , +but that wasn't done. +.Pp +.Bx 4.1c +implemented a higher-precision time function +.Fn gettimeofday +to replace +.Fn ftime +and reimplemented +.Fn time +in terms of that. +.Pp +Since +.Fx 9 +the implementation of +.Fn time +uses +.Fn clock_gettime "CLOCK_SECOND" +instead of +.Fn gettimeofday +for performance reasons. +.Sh BUGS +Neither +.St -isoC-99 +nor +.St -p1003.1-2001 +requires +.Fn time +to set +.Va errno +on failure; thus, it is impossible for an application to distinguish +the valid time value \-1 (representing the last UTC second of 1969) +from the error return value. +.Pp +Systems conforming to earlier versions of the C and POSIX +standards (including older versions of +.Fx ) +did not set +.No \&* Ns Va tloc +in the error case. |