1 /**
2  * D header file for POSIX.
3  *
4  * Copyright: Public Domain
5  * License:   Public Domain
6  * Authors:   Sean Kelly
7  * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8  */
9 module tango.stdc.posix.sys.time;
10 
11 private import tango.stdc.posix.config;
12 public import tango.stdc.posix.sys.types;  // for time_t, suseconds_t
13 public import tango.stdc.posix.sys.select; // for fd_set, FD_CLR() FD_ISSET() FD_SET() FD_ZERO() FD_SETSIZE
14 
15 extern (C):
16 
17 //
18 // XOpen (XSI)
19 //
20 /*
21 struct timeval
22 {
23     time_t      tv_sec;
24     suseconds_t tv_usec;
25 }
26 
27 struct itimerval
28 {
29     timeval it_interval;
30     timeval it_value;
31 }
32 
33 ITIMER_REAL
34 ITIMER_VIRTUAL
35 ITIMER_PROF
36 
37 int getitimer(int, itimerval*);
38 int gettimeofday(timeval*, void*);
39 int select(int, fd_set*, fd_set*, fd_set*, timeval*);
40 int setitimer(int, in itimerval*, itimerval*);
41 int utimes(in char*, in timeval[2]); // LEGACY
42 */
43 
44 version( linux )
45 {
46     struct timeval
47     {
48         time_t      tv_sec;
49         suseconds_t tv_usec;
50     }
51 
52     struct itimerval
53     {
54         timeval it_interval;
55         timeval it_value;
56     }
57 
58     const ITIMER_REAL       = 0;
59     const ITIMER_VIRTUAL    = 1;
60     const ITIMER_PROF       = 2;
61 
62     int getitimer(int, itimerval*);
63     int gettimeofday(timeval*, void*);
64     int select(int, fd_set*, fd_set*, fd_set*, timeval*);
65     int setitimer(int, in itimerval*, itimerval*);
66     int utimes(in char*, in timeval[2]); // LEGACY
67 }
68 else version(OSX)
69 {
70     struct timeval
71     {
72         time_t      tv_sec;
73         suseconds_t tv_usec;
74     }
75 
76     struct itimerval
77     {
78         timeval it_interval;
79         timeval it_value;
80     }
81 
82     // non-standard
83     struct timezone_t
84     {
85         int tz_minuteswest;
86         int tz_dsttime;
87     }
88 
89     int getitimer(int, itimerval*);
90     int gettimeofday(timeval*, timezone_t*); // timezone_t* is normally void*
91     int select(int, fd_set*, fd_set*, fd_set*, timeval*);
92     int setitimer(int, in itimerval*, itimerval*);
93     int utimes(in char*, in timeval[2]);
94 }
95 else version( FreeBSD )
96 {
97     struct timeval
98     {
99         time_t      tv_sec;
100         suseconds_t tv_usec;
101     }
102 
103     struct itimerval
104     {
105         timeval it_interval;
106         timeval it_value;
107     }
108 
109     // non-standard
110     struct timezone_t
111     {
112         int tz_minuteswest;
113         int tz_dsttime;
114     }
115 
116     int getitimer(int, itimerval*);
117     int gettimeofday(timeval*, timezone_t*); // timezone_t* is normally void*
118     int select(int, fd_set*, fd_set*, fd_set*, timeval*);
119     int setitimer(int, in itimerval*, itimerval*);
120     int utimes(in char*, in timeval[2]);
121 }
122 else version( solaris )
123 {
124     struct timeval
125     {
126         time_t      tv_sec;
127         suseconds_t tv_usec;
128     }
129 
130     struct itimerval
131     {
132         timeval it_interval;
133         timeval it_value;
134     }
135 
136     // non-standard
137     struct timezone_t
138     {
139         int tz_minuteswest;
140         int tz_dsttime;
141     }
142 
143     int getitimer(int, itimerval*);
144     int gettimeofday(timeval*, timezone_t*); // timezone_t* is normally void*
145     int select(int, fd_set*, fd_set*, fd_set*, timeval*);
146     int setitimer(int, in itimerval*, itimerval*);
147     int utimes(in char*, in timeval*);
148 }