Shift X2 status from legacy to archived
[khatus.git] / x5 / bsdtimespec.h
1 /* $OpenBSD: time.h,v 1.36 2016/09/12 19:41:20 guenther Exp $ */
2 /* $NetBSD: time.h,v 1.18 1996/04/23 10:29:33 mycroft Exp $ */
3
4 /*
5 * Copyright (c) 1982, 1986, 1993
6 * The Regents of the University of California. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of the University nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 *
32 * @(#)time.h 8.2 (Berkeley) 7/10/94
33 */
34
35 /* Operations on timespecs. */
36 #ifndef timespecclear
37 #define timespecclear(tsp) (tsp)->tv_sec = (tsp)->tv_nsec = 0
38 #endif
39
40 #ifndef timespecisset
41 #define timespecisset(tsp) ((tsp)->tv_sec || (tsp)->tv_nsec)
42 #endif
43
44 #ifndef timespeccmp
45 #define timespeccmp(tsp, usp, cmp) \
46 (((tsp)->tv_sec == (usp)->tv_sec) ? \
47 ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
48 ((tsp)->tv_sec cmp (usp)->tv_sec))
49 #endif
50
51 #ifndef timespecadd
52 #define timespecadd(tsp, usp, vsp) \
53 do { \
54 (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
55 (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
56 if ((vsp)->tv_nsec >= 1000000000L) { \
57 (vsp)->tv_sec++; \
58 (vsp)->tv_nsec -= 1000000000L; \
59 } \
60 } while (0)
61 #endif
62
63 #ifndef timespecsub
64 #define timespecsub(tsp, usp, vsp) \
65 do { \
66 (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
67 (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
68 if ((vsp)->tv_nsec < 0) { \
69 (vsp)->tv_sec--; \
70 (vsp)->tv_nsec += 1000000000L; \
71 } \
72 } while (0)
73 #endif
This page took 0.057829 seconds and 4 git commands to generate.