d: Merge upstream dmd, druntime 4c18eed967, phobos d945686a4.
[official-gcc.git] / libphobos / libdruntime / core / sys / posix / sys / time.d
blobdda4caf0bf36aa779f121e52283ab546d820388b
1 /**
2 * D header file for POSIX.
4 * Copyright: Copyright Sean Kelly 2005 - 2009.
5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6 * Authors: Sean Kelly, Alex Rønne Petersen
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 */
10 /* Copyright Sean Kelly 2005 - 2009.
11 * Distributed under the Boost Software License, Version 1.0.
12 * (See accompanying file LICENSE or copy at
13 * http://www.boost.org/LICENSE_1_0.txt)
15 module core.sys.posix.sys.time;
17 import core.sys.posix.config;
18 public import core.sys.posix.sys.types; // for time_t, suseconds_t
19 public import core.sys.posix.sys.select; // for fd_set, FD_CLR() FD_ISSET() FD_SET() FD_ZERO() FD_SETSIZE, select()
21 version (OSX)
22 version = Darwin;
23 else version (iOS)
24 version = Darwin;
25 else version (TVOS)
26 version = Darwin;
27 else version (WatchOS)
28 version = Darwin;
30 version (linux) public import core.sys.linux.sys.time;
32 version (Posix):
33 extern (C) nothrow @nogc:
36 // XOpen (XSI)
39 struct timeval
41 time_t tv_sec;
42 suseconds_t tv_usec;
45 struct itimerval
47 timeval it_interval;
48 timeval it_value;
51 ITIMER_REAL
52 ITIMER_VIRTUAL
53 ITIMER_PROF
55 int getitimer(int, itimerval*);
56 int gettimeofday(timeval*, void*);
57 int select(int, fd_set*, fd_set*, fd_set*, timeval*); (defined in core.sys.posix.sys.signal)
58 int setitimer(int, const scope itimerval*, itimerval*);
59 int utimes(const scope char*, ref const(timeval)[2]); // LEGACY
62 version (CRuntime_Glibc)
64 struct timeval
66 time_t tv_sec;
67 suseconds_t tv_usec;
70 struct itimerval
72 timeval it_interval;
73 timeval it_value;
76 enum ITIMER_REAL = 0;
77 enum ITIMER_VIRTUAL = 1;
78 enum ITIMER_PROF = 2;
80 int getitimer(int, itimerval*);
81 int gettimeofday(timeval*, void*);
82 int setitimer(int, const scope itimerval*, itimerval*);
83 int utimes(const scope char*, ref const(timeval)[2]); // LEGACY
85 else version (CRuntime_Musl)
87 struct timeval
89 time_t tv_sec;
90 suseconds_t tv_usec;
92 pragma(mangle, muslRedirTime64Mangle!("gettimeofday", "__gettimeofday_time64"))
93 int gettimeofday(timeval*, void*);
94 pragma(mangle, muslRedirTime64Mangle!("utimes", "__utimes_time64"))
95 int utimes(const scope char*, ref const(timeval)[2]);
97 else version (Darwin)
99 struct timeval
101 time_t tv_sec;
102 suseconds_t tv_usec;
105 struct itimerval
107 timeval it_interval;
108 timeval it_value;
111 // non-standard
112 struct timezone_t
114 int tz_minuteswest;
115 int tz_dsttime;
118 int getitimer(int, itimerval*);
119 int gettimeofday(timeval*, timezone_t*); // timezone_t* is normally void*
120 int setitimer(int, const scope itimerval*, itimerval*);
121 int utimes(const scope char*, ref const(timeval)[2]);
123 else version (FreeBSD)
125 struct timeval
127 time_t tv_sec;
128 suseconds_t tv_usec;
131 struct itimerval
133 timeval it_interval;
134 timeval it_value;
137 // non-standard
138 struct timezone_t
140 int tz_minuteswest;
141 int tz_dsttime;
144 int getitimer(int, itimerval*);
145 int gettimeofday(timeval*, timezone_t*); // timezone_t* is normally void*
146 int setitimer(int, const scope itimerval*, itimerval*);
147 int utimes(const scope char*, ref const(timeval)[2]);
149 else version (NetBSD)
151 struct timeval
153 time_t tv_sec;
154 suseconds_t tv_usec;
157 struct itimerval
159 timeval it_interval;
160 timeval it_value;
163 int getitimer(int, itimerval*);
164 int gettimeofday(timeval*, void*); // timezone_t* is normally void*
165 int setitimer(int, const scope itimerval*, itimerval*);
166 int utimes(const scope char*, ref const(timeval)[2]);
168 else version (OpenBSD)
170 struct timeval
172 time_t tv_sec;
173 suseconds_t tv_usec;
176 struct itimerval
178 timeval it_interval;
179 timeval it_value;
182 // non-standard
183 struct timezone_t
185 int tz_minuteswest;
186 int tz_dsttime;
189 int getitimer(int, itimerval*);
190 int gettimeofday(timeval*, timezone_t*);
191 int setitimer(int, const scope itimerval*, itimerval*);
192 int utimes(const scope char*, ref const(timeval)[2]);
194 else version (DragonFlyBSD)
196 struct timeval
198 time_t tv_sec;
199 suseconds_t tv_usec;
202 struct itimerval
204 timeval it_interval;
205 timeval it_value;
208 // non-standard
209 struct timezone_t
211 int tz_minuteswest;
212 int tz_dsttime;
215 int getitimer(int, itimerval*);
216 int gettimeofday(timeval*, timezone_t*); // timezone_t* is normally void*
217 int setitimer(int, const scope itimerval*, itimerval*);
218 int utimes(const scope char*, ref const(timeval)[2]);
220 else version (Solaris)
222 struct timeval
224 time_t tv_sec;
225 suseconds_t tv_usec;
228 struct itimerval
230 timeval it_interval;
231 timeval it_value;
234 int getitimer(int, itimerval*);
235 int gettimeofday(timeval*, void*);
236 int setitimer(int, const scope itimerval*, itimerval*);
237 int utimes(const scope char*, ref const(timeval)[2]);
239 else version (CRuntime_Bionic)
241 struct timeval
243 time_t tv_sec;
244 suseconds_t tv_usec;
247 struct itimerval
249 timeval it_interval;
250 timeval it_value;
253 struct timezone_t
255 int tz_minuteswest;
256 int tz_dsttime;
259 enum ITIMER_REAL = 0;
260 enum ITIMER_VIRTUAL = 1;
261 enum ITIMER_PROF = 2;
263 int getitimer(int, itimerval*);
264 int gettimeofday(timeval*, timezone_t*);
265 int setitimer(int, const scope itimerval*, itimerval*);
266 int utimes(const scope char*, ref const(timeval)[2]);
268 else version (CRuntime_UClibc)
270 struct timeval
272 time_t tv_sec;
273 suseconds_t tv_usec;
276 struct itimerval
278 timeval it_interval;
279 timeval it_value;
282 enum ITIMER_REAL = 0;
283 enum ITIMER_VIRTUAL = 1;
284 enum ITIMER_PROF = 2;
286 int getitimer(int, itimerval*);
287 int gettimeofday(timeval*, void*);
288 int setitimer(int, const scope itimerval*, itimerval*);
289 int utimes(const scope char*, ref const(timeval)[2]);
291 else
293 static assert(false, "Unsupported platform");