xref: /illumos-gate/usr/src/man/man3c/timespec_get.3c (revision d3aba68370c737a5035fef1f4c6a95a1ba0d815f)
1fc2512cfSRobert Mustacchi.\"
2fc2512cfSRobert Mustacchi.\" This file and its contents are supplied under the terms of the
3fc2512cfSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
4fc2512cfSRobert Mustacchi.\" You may only use this file in accordance with the terms of version
5fc2512cfSRobert Mustacchi.\" 1.0 of the CDDL.
6fc2512cfSRobert Mustacchi.\"
7fc2512cfSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
8fc2512cfSRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
9fc2512cfSRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
10fc2512cfSRobert Mustacchi.\"
11fc2512cfSRobert Mustacchi.\"
12fc2512cfSRobert Mustacchi.\" Copyright 2016 Joyent, Inc.
13*d3aba683SRobert Mustacchi.\" Copyright 2025 Oxide Computer Company
14fc2512cfSRobert Mustacchi.\"
15*d3aba683SRobert Mustacchi.Dd "January 12, 2025"
16fc2512cfSRobert Mustacchi.Dt TIMESPEC_GET 3C
17fc2512cfSRobert Mustacchi.Os
18fc2512cfSRobert Mustacchi.Sh NAME
19*d3aba683SRobert Mustacchi.Nm timespec_get ,
20*d3aba683SRobert Mustacchi.Nm timespec_getres
21fc2512cfSRobert Mustacchi.Nd get time information
22fc2512cfSRobert Mustacchi.Sh SYNOPSIS
23fc2512cfSRobert Mustacchi.In time.h
24fc2512cfSRobert Mustacchi.Ft int
25fc2512cfSRobert Mustacchi.Fo timespec_get
26fc2512cfSRobert Mustacchi.Fa "struct timespec *ts"
27fc2512cfSRobert Mustacchi.Fa "int base"
28fc2512cfSRobert Mustacchi.Fc
29*d3aba683SRobert Mustacchi.Ft int
30*d3aba683SRobert Mustacchi.Fo timespec_getres
31*d3aba683SRobert Mustacchi.Fa "struct timespec *ts"
32*d3aba683SRobert Mustacchi.Fa "int base"
33*d3aba683SRobert Mustacchi.Fc
34fc2512cfSRobert Mustacchi.Sh DESCRIPTION
35fc2512cfSRobert MustacchiThe
36fc2512cfSRobert Mustacchi.Fn timespec_get
37*d3aba683SRobert Mustacchifunction provides access to nanosecond resolution time.
38*d3aba683SRobert MustacchiThe
39*d3aba683SRobert Mustacchi.Fn timespec_getres
40*d3aba683SRobert Mustacchifunction provides access to the underlying clock's resolution.
4172d3dbb9SYuri PankovThe meaning and source of time is defined by the
42fc2512cfSRobert Mustacchi.Fa base
4372d3dbb9SYuri Pankovargument.
4472d3dbb9SYuri PankovThe following values are defined for
45fc2512cfSRobert Mustacchi.Fa base :
46fc2512cfSRobert Mustacchi.Bl -tag -width Ds
47*d3aba683SRobert Mustacchi.It Dv TIME_UTC
4872d3dbb9SYuri PankovObtain the current time of day from the realtime clock on the system.
4972d3dbb9SYuri PankovIt represents the amount of time in second and nanoseconds since the Epoch.
50fc2512cfSRobert MustacchiThis is logically equivalent to calling
51fc2512cfSRobert Mustacchi.Xr clock_gettime 3C
52fc2512cfSRobert Mustacchiwith
53*d3aba683SRobert Mustacchi.Dv CLOCK_REALTIME .
54*d3aba683SRobert Mustacchi.It Dv TIME_MONOTONIC
55*d3aba683SRobert MustacchiThe system's monotonic clock is a non-adjustable, high-resolution clock.
56*d3aba683SRobert MustacchiThe returned value is not subject to adjustments from time of day drift
57*d3aba683SRobert Mustacchinor can it be set.
58*d3aba683SRobert MustacchiThis clock is generally only useful for measuring elapsed time relative
59*d3aba683SRobert Mustacchito a prior reading.
60*d3aba683SRobert MustacchiThis is logically equivalent to using the
61*d3aba683SRobert Mustacchi.Dv CLOCK_HIGHRES
62*d3aba683SRobert Mustacchiand
63*d3aba683SRobert Mustacchi.Dv CLOCK_MONOTONIC
64*d3aba683SRobert Mustacchiclocks or calling
65*d3aba683SRobert Mustacchi.Xr gethrtime 3C .
66*d3aba683SRobert Mustacchi.It Dv TIME_THREAD_ACTIVE
67*d3aba683SRobert MustacchiThis clock measures the elapsed system and user CPU-time of the current
68*d3aba683SRobert Mustacchithread.
69*d3aba683SRobert MustacchiThe amount of time it has spent executing code is measured in seconds
70*d3aba683SRobert Mustacchiand nanoseconds.
71*d3aba683SRobert MustacchiThe
72*d3aba683SRobert Mustacchi.Fa pr_utime
73*d3aba683SRobert Mustacchimember of the
74*d3aba683SRobert Mustacchi.Vt lwpsinfo_t
75*d3aba683SRobert Mustacchior
76*d3aba683SRobert Mustacchi.Vt prusage_t
77*d3aba683SRobert Mustacchistructures discussed in
78*d3aba683SRobert Mustacchi.Xr proc 5
79*d3aba683SRobert Mustacchiare alternative ways to see the user component.
80*d3aba683SRobert MustacchiThe system component is a combination of both the system and trap time
81*d3aba683SRobert Mustacchithat the thread has experienced.
82*d3aba683SRobert MustacchiIn the
83*d3aba683SRobert Mustacchi.Vt lwpsinfo_t
84*d3aba683SRobert Mustacchithis is covered solely by the
85*d3aba683SRobert Mustacchi.Fa pr_stime
86*d3aba683SRobert Mustacchimember.
87*d3aba683SRobert MustacchiFor the
88*d3aba683SRobert Mustacchi.Vt prusage_t
89*d3aba683SRobert Mustacchithese are separated out into the
90*d3aba683SRobert Mustacchi.Fa pr_stime
91*d3aba683SRobert Mustacchiand
92*d3aba683SRobert Mustacchi.Fa pr_ttime
93*d3aba683SRobert Mustacchimembers respectively.
94*d3aba683SRobert Mustacchi.Pp
95*d3aba683SRobert MustacchiThis is logically equivalent to using the
96*d3aba683SRobert Mustacchi.Dv CLOCK_THREAD_CPUTIME_ID
97*d3aba683SRobert Mustacchiclock .
98*d3aba683SRobert MustacchiThis clock is optional and may not be present on other platforms.
99*d3aba683SRobert Mustacchi.It Dv TIME_THREAD_ACTIVE_USR
100*d3aba683SRobert MustacchiThis clock is similar to the
101*d3aba683SRobert Mustacchi.Dv TIME_THREAD_ACTIVE
102*d3aba683SRobert Mustacchiclock, except it only counts user time that has elapsed.
103*d3aba683SRobert MustacchiThis is logically equivalent to using the
104*d3aba683SRobert Mustacchi.Dv CLOCK_VIRTUAL
105*d3aba683SRobert Mustacchiclock or calling
106*d3aba683SRobert Mustacchi.Xr gethrvtime 3C .
107*d3aba683SRobert MustacchiThis clock is an extension and may not be available on other platforms.
108*d3aba683SRobert Mustacchi.It Dv TIME_ACTIVE
109*d3aba683SRobert MustacchiThis clock measures the elapsed system and user CPU-time of the current
110*d3aba683SRobert Mustacchiprocess, including all of its threads.
111*d3aba683SRobert MustacchiNone of the process's children are counted in this measure, whether
112*d3aba683SRobert Mustacchirunning or terminated.
113*d3aba683SRobert MustacchiThe value read here will be the same as combining the corresponding
114*d3aba683SRobert Mustacchi.Xr proc 5
115*d3aba683SRobert Mustacchi.Vt psinfo_t
116*d3aba683SRobert Mustacchistructure's
117*d3aba683SRobert Mustacchi.Fa pr_stime
118*d3aba683SRobert Mustacchiand
119*d3aba683SRobert Mustacchi.Fa pr_utime
120*d3aba683SRobert Mustacchimembers.
121*d3aba683SRobert MustacchiThis clock is optional and may not be present on other platforms.
122fc2512cfSRobert Mustacchi.El
123fc2512cfSRobert Mustacchi.Pp
124fc2512cfSRobert MustacchiFor the definition of the
125*d3aba683SRobert Mustacchi.Vt timespec
126fc2512cfSRobert Mustacchistructure, see
127fc2512cfSRobert Mustacchi.Xr time.h 3HEAD .
128fc2512cfSRobert Mustacchi.Sh RETURN VALUES
129fc2512cfSRobert MustacchiUpon successful completion, the
130fc2512cfSRobert Mustacchi.Fn timespec_get
131*d3aba683SRobert Mustacchiand
132*d3aba683SRobert Mustacchi.Fn timespec_getres
133*d3aba683SRobert Mustacchifunctions return the passed in value of
134fc2512cfSRobert Mustacchi.Fa base .
135fc2512cfSRobert MustacchiOtherwise,
136fc2512cfSRobert Mustacchi.Sy 0
137fc2512cfSRobert Mustacchiis returned to represent an error.
138fc2512cfSRobert Mustacchi.Sh ERRORS
139fc2512cfSRobert MustacchiUnlike other functions, the
140fc2512cfSRobert Mustacchi.Fn timespec_get
141*d3aba683SRobert Mustacchiand
142*d3aba683SRobert Mustacchi.Fn timespec_getres
143*d3aba683SRobert Mustacchifunctions are not defined to set
144*d3aba683SRobert Mustacchi.Vt errno .
145fc2512cfSRobert MustacchiHowever, the
146fc2512cfSRobert Mustacchi.Fn timespec_get
147*d3aba683SRobert Mustacchiand
148*d3aba683SRobert Mustacchi.Fn timespec_getres
149*d3aba683SRobert Mustacchifunctions will fail if:
150fc2512cfSRobert Mustacchi.Bl -bullet -offset indent
151fc2512cfSRobert Mustacchi.It
152fc2512cfSRobert MustacchiThe value of
153fc2512cfSRobert Mustacchi.Fa base
154fc2512cfSRobert Mustacchidoes not refer to a known time specification.
155fc2512cfSRobert Mustacchi.It
156fc2512cfSRobert MustacchiThere was an error obtaining the time for
157fc2512cfSRobert Mustacchi.Fa base .
158fc2512cfSRobert Mustacchi.El
159fc2512cfSRobert Mustacchi.Sh INTERFACE STABILITY
160fc2512cfSRobert Mustacchi.Sy Standard
161fc2512cfSRobert Mustacchi.Sh MT-LEVEL
162fc2512cfSRobert Mustacchi.Sy MT-Safe
163fc2512cfSRobert Mustacchi.Sh SEE ALSO
164*d3aba683SRobert Mustacchi.Xr clock_getres 3C ,
165fc2512cfSRobert Mustacchi.Xr clock_gettime 3C ,
166*d3aba683SRobert Mustacchi.Xr gethrtime 3C ,
167*d3aba683SRobert Mustacchi.Xr gethrvtime 3C ,
168fc2512cfSRobert Mustacchi.Xr time.h 3HEAD ,
169bbf21555SRichard Lowe.Xr attributes 7
170