1 .\" 2 .\" This file and its contents are supplied under the terms of the 3 .\" Common Development and Distribution License ("CDDL"), version 1.0. 4 .\" You may only use this file in accordance with the terms of version 5 .\" 1.0 of the CDDL. 6 .\" 7 .\" A full copy of the text of the CDDL should have accompanied this 8 .\" source. A copy of the CDDL is also available via the Internet at 9 .\" http://www.illumos.org/license/CDDL. 10 .\" 11 .\" 12 .\" Copyright 2020 OmniOS Community Edition (OmniOSce) Association. 13 .\" 14 .Dd Sep 06, 2020 15 .Dt timespec 3HEAD 16 .Os 17 .Sh NAME 18 .Nm timespec , 19 .Nm timeval , 20 .Nm TIMESPEC_TO_TIMEVAL , 21 .Nm TIMEVAL_TO_TIMESPEC 22 .Nd time structures and conversion 23 .Sh SYNOPSIS 24 .In sys/time.h 25 .Ft void 26 .Fo TIMESPEC_TO_TIMEVAL 27 .Fa "struct timeval *tv" 28 .Fa "const struct timespec *ts" 29 .Fc 30 .Ft void 31 .Fo TIMEVAL_TO_TIMESPEC 32 .Fa "const struct timeval *tv" 33 .Fa "struct timespec *ts" 34 .Fc 35 .Sh DESCRIPTION 36 The 37 .Vt timeval 38 and 39 .Vt timespec 40 structures are declared in the 41 .In time.h 42 and 43 .In sys/time.h 44 headers respectively: 45 .Bd -literal -offset indent 46 typedef struct timespec { 47 time_t tv_sec; /* seconds */ 48 long tv_nsec; /* and nanoseconds */ 49 } timespec_t; 50 51 struct timeval { 52 time_t tv_sec; /* seconds */ 53 suseconds_t tv_usec; /* and microseconds */ 54 }; 55 .Ed 56 .Pp 57 In both cases, the 58 .Fa tv_sec 59 member represents elapsed time in whole seconds. 60 The 61 .Fa tv_nsec 62 and 63 .Fa tv_usec 64 members represent the rest of the elapsed time in nanoseconds and 65 microseconds respectively, depending on the structure. 66 .Pp 67 The 68 .Dv TIMEVAL_TO_TIMESPEC 69 macro can be used to convert a 70 .Vt struct timeval 71 structure to a 72 .Vt struct timespec 73 structure, while the 74 .Dv TIMESPEC_TO_TIMEVAL 75 macro works in the opposite direction. 76 .Pp 77 When converting from a 78 .Vt struct timespec 79 to a 80 .Vt struct timeval 81 structure, the 82 .Fa tv_nsec 83 member is truncated, losing precision. 84 When converting from a 85 .Vt struct timeval 86 to a 87 .Vt struct timespec 88 structure, the 89 .Fa tv_usec 90 member is multiplied by 1000 to reach the precision of the target 91 structure. 92 The 93 .Fa tv_sec 94 member is always preserved, no matter which conversion is performed. 95 .Pp 96 Note that the 97 .Dv TIMEVAL_TO_TIMESPEC 98 and 99 .Dv TIMESPEC_TO_TIMEVAL 100 macros are non-standard but are commonly found on UNIX and UNIX-like systems. 101 .Sh INTERFACE STABILITY 102 .Sy Committed 103 .Sh MT-LEVEL 104 .Sy MT-Safe 105 .Sh SEE ALSO 106 .Xr time.h 3HEAD