diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:41:07 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:41:07 +0000 |
commit | 3af6d22bb3850ab2bac67287e3a3d3b0e32868e5 (patch) | |
tree | 3ee7a3ec64525911fa865bb984c86d997d855527 /man2/clock_getres.2 | |
parent | Adding debian version 6.05.01-1. (diff) | |
download | manpages-3af6d22bb3850ab2bac67287e3a3d3b0e32868e5.tar.xz manpages-3af6d22bb3850ab2bac67287e3a3d3b0e32868e5.zip |
Merging upstream version 6.7.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man2/clock_getres.2')
-rw-r--r-- | man2/clock_getres.2 | 85 |
1 files changed, 50 insertions, 35 deletions
diff --git a/man2/clock_getres.2 b/man2/clock_getres.2 index 170215d..ec1e327 100644 --- a/man2/clock_getres.2 +++ b/man2/clock_getres.2 @@ -9,32 +9,32 @@ .\" 2003-08-24 aeb, large parts rewritten .\" 2004-08-06 Christoph Lameter <clameter@sgi.com>, SMP note .\" -.TH clock_getres 2 2023-07-20 "Linux man-pages 6.05.01" +.TH clock_getres 2 2024-03-05 "Linux man-pages 6.7" .SH NAME clock_getres, clock_gettime, clock_settime \- clock and time functions .SH LIBRARY Standard C library .RI ( libc ", " \-lc ), since glibc 2.17 -.PP +.P Before glibc 2.17, Real-time library .RI ( librt ", " \-lrt ) .SH SYNOPSIS .nf .B #include <time.h> -.PP +.P .BI "int clock_getres(clockid_t " clockid ", struct timespec *_Nullable " res ); -.PP +.P .BI "int clock_gettime(clockid_t " clockid ", struct timespec *" tp ); .BI "int clock_settime(clockid_t " clockid ", const struct timespec *" tp ); .fi -.PP +.P .RS -4 Feature Test Macro Requirements for glibc (see .BR feature_test_macros (7)): .RE -.PP +.P .BR clock_getres (), .BR clock_gettime (), .BR clock_settime (): @@ -60,14 +60,14 @@ is not a multiple of .IR res , then it is truncated to a multiple of .IR res . -.PP +.P The functions .BR clock_gettime () and .BR clock_settime () retrieve and set the time of the specified clock .IR clockid . -.PP +.P The .I res and @@ -75,24 +75,24 @@ and arguments are .BR timespec (3) structures. -.PP +.P The .I clockid argument is the identifier of the particular clock on which to act. A clock may be system-wide and hence visible for all processes, or per-process if it measures time only within a single process. -.PP +.P All implementations support the system-wide real-time clock, which is identified by .BR CLOCK_REALTIME . Its time represents seconds and nanoseconds since the Epoch. When its time is changed, timers for a relative interval are unaffected, but timers for an absolute point in time are affected. -.PP +.P More clocks may be implemented. The interpretation of the corresponding time values and the effect on timers is unspecified. -.PP +.P Sufficiently recent versions of glibc and the Linux kernel support the following clocks: .TP @@ -101,9 +101,17 @@ A settable system-wide clock that measures real (i.e., wall-clock) time. Setting this clock requires appropriate privileges. This clock is affected by discontinuous jumps in the system time (e.g., if the system administrator manually changes the clock), -and by the incremental adjustments performed by -.BR adjtime (3) -and NTP. +and by frequency adjustments performed by NTP and similar applications via +.BR adjtime (3), +.BR adjtimex (2), +.BR clock_adjtime (2), +and +.BR ntp_adjtime (3). +This clock normally counts the number of seconds since +1970-01-01 00:00:00 Coordinated Universal Time (UTC) +except that it ignores leap seconds; +near a leap second it is typically adjusted by NTP +to stay roughly in sync with UTC. .TP .BR CLOCK_REALTIME_ALARM " (since Linux 3.0; Linux-specific)" Like @@ -126,9 +134,9 @@ and probably also architecture support for this flag in the .BR CLOCK_TAI " (since Linux 3.10; Linux-specific)" .\" commit 1ff3c9677bff7e468e0c487d0ffefe4e901d33f4 A nonsettable system-wide clock derived from wall-clock time -but ignoring leap seconds. +but counting leap seconds. This clock does -not experience discontinuities and backwards jumps caused by NTP +not experience discontinuities or frequency adjustments caused by inserting leap seconds as .B CLOCK_REALTIME does. @@ -146,9 +154,7 @@ The .B CLOCK_MONOTONIC clock is not affected by discontinuous jumps in the system time (e.g., if the system administrator manually changes the clock), -but is affected by the incremental adjustments performed by -.BR adjtime (3) -and NTP. +but is affected by frequency adjustments. This clock does not count time that the system is suspended. All .B CLOCK_MONOTONIC @@ -170,9 +176,7 @@ and probably also architecture support for this flag in the Similar to .BR CLOCK_MONOTONIC , but provides access to a raw hardware-based time -that is not subject to NTP adjustments or -the incremental adjustments performed by -.BR adjtime (3). +that is not subject to frequency adjustments. This clock does not count time that the system is suspended. .TP .BR CLOCK_BOOTTIME " (since Linux 2.6.39; Linux-specific)" @@ -203,7 +207,7 @@ On Linux, this clock is not settable. .BR CLOCK_THREAD_CPUTIME_ID " (since Linux 2.6.12)" This is a clock that measures CPU time consumed by this thread. On Linux, this clock is not settable. -.PP +.P Linux also implements dynamic clock instances as described below. .SS Dynamic clocks In addition to the hard-coded System-V style clock IDs described above, @@ -211,7 +215,7 @@ Linux also supports POSIX clock operations on certain character devices. Such devices are called "dynamic" clocks, and are supported since Linux 2.6.39. -.PP +.P Using the appropriate macros, open file descriptors may be converted into clock IDs and passed to .BR clock_gettime (), @@ -220,7 +224,7 @@ and .BR clock_adjtime (2). The following example shows how to convert a file descriptor into a dynamic clock ID. -.PP +.P .in +4n .EX #define CLOCKFD 3 @@ -304,6 +308,17 @@ has disappeared after its character device was opened. The operation is not supported by the dynamic POSIX clock device specified. .TP +.B EOVERFLOW +The timestamp would not fit in +.I time_t +range. +This can happen if an executable with 32-bit +.I time_t +is run on a 64-bit kernel when the time is 2038-01-19 03:14:08 UTC or later. +However, when the system time is out of +.I time_t +range in other situations, the behavior is undefined. +.TP .B EPERM .BR clock_settime () does not have permission to set the clock indicated. @@ -323,11 +338,10 @@ T{ .BR clock_settime () T} Thread safety MT-Safe .TE -.sp 1 .SH VERSIONS POSIX.1 specifies the following: .RS -.PP +.P Setting the value of the .B CLOCK_REALTIME clock via @@ -339,7 +353,7 @@ function; nor on the expiration of relative timers based upon this clock. Consequently, these time services shall expire when the requested relative interval elapses, independently of the new or old value of the clock. .RE -.PP +.P According to POSIX.1-2001, a process with "appropriate privileges" may set the .B CLOCK_PROCESS_CPUTIME_ID and @@ -359,10 +373,12 @@ POSIX.1-2008. .SH HISTORY POSIX.1-2001, SUSv2. Linux 2.6. -.PP +.P On POSIX systems on which these functions are available, the symbol .B _POSIX_TIMERS is defined in \fI<unistd.h>\fP to a value greater than 0. +POSIX.1-2008 makes these functions mandatory. +.P The symbols .BR _POSIX_MONOTONIC_CLOCK , .BR _POSIX_CPUTIME , @@ -374,7 +390,6 @@ indicate that are available. (See also .BR sysconf (3).) -POSIX.1-2008 makes these APIs mandatory. .\" .SS Historical note for SMP systems Before Linux added kernel support for @@ -388,7 +403,7 @@ These registers may differ between CPUs and as a consequence these clocks may return .B bogus results if a process is migrated to another CPU. -.PP +.P If the CPUs in an SMP system have different clock sources, then there is no way to maintain a correlation between the timer registers since each CPU will run at a slightly different frequency. @@ -399,7 +414,7 @@ will return to signify this condition. The two clocks will then be useful only if it can be ensured that a process stays on a certain CPU. -.PP +.P The processors in an SMP system do not start all at exactly the same time and therefore the timer registers are typically running at an offset. Some architectures include code that attempts to limit these offsets on bootup. @@ -408,7 +423,7 @@ glibc contains no provisions to deal with these offsets (unlike the Linux Kernel). Typically these offsets are small and therefore the effects may be negligible in most cases. -.PP +.P Since glibc 2.4, the wrapper functions for the system calls described in this page avoid the abovementioned problems by employing the kernel implementation of @@ -424,7 +439,7 @@ and .BR clock_getres () with various clocks. This is an example of what we might see when running the program: -.PP +.P .in +4n .EX $ \fB./clock_times x\fP |