xref: /freebsd/share/man/man3/timeradd.3 (revision 8881d206f4e68b564c2c5f50fc717086fc3e827a)
1.\" Copyright (c) 1999 Kelly Yancey <kbyanc@posi.net>
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the author nor the names of any co-contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\" $FreeBSD$
29.\"
30.Dd July 30, 2018
31.Dt TIMERADD 3
32.Os
33.Sh NAME
34.Nm timeradd ,
35.Nm timersub ,
36.Nm timerclear ,
37.Nm timerisset ,
38.Nm timercmp ,
39.Nm timespecadd ,
40.Nm timespecsub ,
41.Nm timespecclear ,
42.Nm timespecisset ,
43.Nm timespeccmp
44.Nd operations on timevals and timespecs
45.Sh SYNOPSIS
46.In sys/time.h
47.Ft void
48.Fn timeradd "struct timeval *a" "struct timeval *b" "struct timeval *res"
49.Ft void
50.Fn timersub "struct timeval *a" "struct timeval *b" "struct timeval *res"
51.Ft void
52.Fn timerclear "struct timeval *tvp"
53.Ft int
54.Fn timerisset "struct timeval *tvp"
55.Ft int
56.Fn timercmp "struct timeval *a" "struct timeval *b" CMP
57.Ft void
58.Fn timespecadd "struct timespec *a" "struct timespec *b" "struct timespec *res"
59.Ft void
60.Fn timespecsub "struct timespec *a" "struct timespec *b" "struct timespec *res"
61.Ft void
62.Fn timespecclear "struct timespec *ts"
63.Ft int
64.Fn timespecisset "struct timespec *ts"
65.Ft int
66.Fn timespeccmp "struct timespec *a" "struct timespec *b" CMP
67.Sh DESCRIPTION
68These macros are provided for manipulating
69.Fa timeval
70and
71.Fa timespec
72structures for use with the
73.Xr clock_gettime 2 ,
74.Xr clock_settime 2 ,
75.Xr gettimeofday 2
76and
77.Xr settimeofday 2
78calls.
79The
80.Fa timeval
81structure is defined in
82.In sys/time.h
83as:
84.Bd -literal
85struct timeval {
86	long	tv_sec;		/* seconds since Jan. 1, 1970 */
87	long	tv_usec;	/* and microseconds */
88};
89.Ed
90And the
91.Fa timespec
92structure is defined in
93.In time.h
94as:
95.Bd -literal
96struct timespec {
97	time_t tv_sec;		/* seconds */
98	long   tv_nsec;		/* and nanoseconds */
99};
100.Ed
101.Pp
102.Fn timeradd
103and
104.Fn timespecadd
105add the time information stored in
106.Fa a
107to
108.Fa b
109and store the result in
110.Fa res .
111The results are simplified such that the value of
112.Fa res->tv_usec
113or
114.Fa res->tv_nsec
115is always less than 1 second.
116.Pp
117.Fn timersub
118and
119.Fn timespecsub
120subtract the time information stored in
121.Fa b
122from
123.Fa a
124and store the result
125in
126.Fa res .
127.Pp
128.Fn timerclear
129and
130.Fn timespecclear
131initialize their argument to midnight (0 hour) January 1st, 1970 (the Epoch).
132.Pp
133.Fn timerisset
134and
135.Fn timespecisset
136return true if their argument is set to any time value other than the Epoch.
137.Pp
138.Fn timercmp
139and
140.Fn timespeccmp
141compare
142.Fa a
143to
144.Fa b
145using the comparison operator given in
146.Fa CMP ,
147and return the result of that comparison.
148.Sh SEE ALSO
149.Xr clock_gettime 2 ,
150.Xr gettimeofday 2
151.Sh HISTORY
152The
153.Fn timeradd
154family of macros were imported from
155.Nx 1.1 ,
156and appeared in
157.Fx 2.2.6 .
158The
159.Fn timespecadd
160family of macros were imported from
161.Nx 1.3
162into
163.Fx 3.0 ,
164though they were not exposed to userland until
165.Fx 12.0 .
166