7 #if !defined(GLOBUS_TIME_H)
17 #define GLOBUS_I_TIME_INFINITY_SEC INT_MAX
18 #define GLOBUS_I_TIME_INFINITY_NSEC INT_MAX
19 #define GLOBUS_I_TIME_INFINITY_USEC INT_MAX
21 #if defined(_WIN32) && !defined(_POSIX)
22 typedef struct globus_abstime_s
28 typedef struct timespec globus_abstime_t;
31 typedef struct timeval globus_reltime_t;
36 #define GlobusTimeAbstimeSet(Abstime, Sec, USec) \
38 GlobusTimeAbstimeGetCurrent(Abstime); \
39 (Abstime).tv_nsec += (USec * 1000); \
40 if((Abstime).tv_nsec >= 1000000000) \
42 (Abstime).tv_sec += ((Abstime).tv_nsec / 1000000000);\
43 (Abstime).tv_nsec = (Abstime).tv_nsec % 1000000000; \
45 (Abstime).tv_sec += Sec; \
50 #define GlobusTimeAbstimeGet(Abstime, Sec, USec) \
52 Sec = (Abstime).tv_sec; \
53 USec = ((Abstime).tv_nsec / 1000); \
59 #define GlobusTimeReltimeSet(Reltime, Sec, USec) \
61 (Reltime).tv_usec = (USec); \
62 (Reltime).tv_sec = Sec; \
63 if((Reltime).tv_usec >= 1000000) \
65 (Reltime).tv_sec += ((Reltime).tv_usec / 1000000);\
66 (Reltime).tv_usec = (Reltime).tv_usec % 1000000; \
70 #define GlobusTimeReltimeGet(Reltime, Sec, USec) \
72 (USec) = (Reltime).tv_usec; \
73 (Sec) = (Reltime).tv_sec; \
76 #define GlobusTimeAbstimePrintf(Abstime) \
78 printf("sec -->%lu\n", (unsigned long) (Abstime).tv_sec); \
79 printf("nsec -->%lu\n", (unsigned long) (Abstime).tv_nsec); \
82 #define GlobusTimeReltimePrintf(Reltime) \
84 printf("sec -->%lu\n", (unsigned long) (Reltime).tv_sec); \
85 printf("usec -->%lu\n", (unsigned long) (Reltime).tv_usec); \
91 #define GlobusTimeAbstimeDiff(Reltime, T1, T2) \
93 int __res = globus_abstime_cmp(&(T1), &(T2)); \
96 (Reltime).tv_sec = (T2).tv_sec - (T1).tv_sec; \
98 (((T2).tv_nsec - (T1).tv_nsec) / 1000); \
99 if((Reltime).tv_usec < 0) \
101 (Reltime).tv_sec--; \
102 (Reltime).tv_usec += 1000000; \
107 (Reltime).tv_sec = (T1).tv_sec - (T2).tv_sec; \
108 (Reltime).tv_usec = \
109 (((T1).tv_nsec - (T2).tv_nsec) / 1000); \
110 if((Reltime).tv_usec < 0) \
112 (Reltime).tv_sec--; \
113 (Reltime).tv_usec += 1000000; \
118 (Reltime).tv_sec = 0; \
119 (Reltime).tv_usec = 0; \
123 #define GlobusTimeReltimeDiff(Reltime, T1, T2) \
125 int __res = globus_reltime_cmp(&(T1), &(T2)); \
128 (Reltime).tv_sec = (T2).tv_sec - (T1).tv_sec; \
129 (Reltime).tv_usec = \
130 ((T2).tv_usec - (T1).tv_usec); \
131 if((Reltime).tv_usec < 0) \
133 (Reltime).tv_sec--; \
134 (Reltime).tv_usec += 1000000; \
139 (Reltime).tv_sec = (T1).tv_sec - (T2).tv_sec; \
140 (Reltime).tv_usec = \
141 ((T1).tv_usec - (T2).tv_usec); \
142 if((Reltime).tv_usec < 0) \
144 (Reltime).tv_sec--; \
145 (Reltime).tv_usec += 1000000; \
150 (Reltime).tv_sec = 0; \
151 (Reltime).tv_usec = 0; \
158 #define GlobusTimeReltimeToUSec(SlpInt, Reltime) \
160 SlpInt = ((Reltime).tv_sec * 1000000) + \
161 ((Reltime).tv_usec); \
167 #define GlobusTimeReltimeToMilliSec( Milliseconds, Reltime) \
169 Milliseconds = ((Reltime).tv_sec * 1000) + \
170 ((Reltime).tv_usec)/ 1000; \
176 #define GlobusTimeAbstimeInc(Abstime, Reltime) \
178 (Abstime).tv_nsec += ((Reltime).tv_usec * 1000); \
179 if((Abstime).tv_nsec >= 1000000000) \
181 (Abstime).tv_sec++; \
182 (Abstime).tv_nsec -= 1000000000; \
184 (Abstime).tv_sec += (Reltime).tv_sec; \
187 #define GlobusTimeAbstimeDec(Abstime, Reltime) \
189 (Abstime).tv_nsec -= ((Reltime).tv_usec * 1000); \
190 if((Abstime).tv_nsec < 0) \
192 (Abstime).tv_sec--; \
193 (Abstime).tv_nsec += 1000000000; \
195 (Abstime).tv_sec -= (Reltime).tv_sec; \
203 # define GlobusTimeAbstimeGetCurrent(Abstime) \
205 struct _timeb timebuffer; \
207 _ftime(&timebuffer); \
208 (Abstime).tv_sec = timebuffer.time; \
209 (Abstime).tv_nsec = (timebuffer.millitm * 1000000); \
212 # define GlobusTimeAbstimeGetCurrent(Abstime) \
214 struct timeval __time; \
216 gettimeofday(&__time, GLOBUS_NULL); \
217 (Abstime).tv_sec = __time.tv_sec; \
218 (Abstime).tv_nsec = (__time.tv_usec * 1000); \
225 #define GlobusTimeAbstimeCopy(Dest, Src) \
227 (Dest).tv_sec = (Src).tv_sec; \
228 (Dest).tv_nsec = (Src).tv_nsec; \
234 #define GlobusTimeReltimeCopy(Dest, Src) \
236 (Dest).tv_sec = (Src).tv_sec; \
237 (Dest).tv_usec = (Src).tv_usec; \
243 #define GlobusTimeReltimeMultiply(Reltime, Factor) \
245 (Reltime).tv_usec *= Factor; \
246 (Reltime).tv_sec *= Factor; \
248 if((Reltime).tv_usec >= 1000000) \
250 (Reltime).tv_sec += ((Reltime).tv_usec / 1000000);\
251 (Reltime).tv_usec = (Reltime).tv_usec % 1000000; \
258 #define GlobusTimeReltimeDivide(Reltime, Factor) \
260 (Reltime).tv_usec /= Factor; \
261 (Reltime).tv_sec /= Factor; \
264 extern const globus_abstime_t globus_i_abstime_infinity;
265 extern const globus_abstime_t globus_i_abstime_zero;
266 extern const globus_reltime_t globus_i_reltime_infinity;
267 extern const globus_reltime_t globus_i_reltime_zero;
277 const globus_abstime_t * abstime);
284 const globus_abstime_t * abstime);
291 const globus_reltime_t * reltime);
305 const globus_abstime_t * abstime_1,
306 const globus_abstime_t * abstime_2);
320 const globus_reltime_t * reltime_1,
321 const globus_reltime_t * reltime_2);
int globus_reltime_cmp(const globus_reltime_t *reltime_1, const globus_reltime_t *reltime_2)
Definition: globus_time.c:116
globus_bool_t globus_time_abstime_is_infinity(const globus_abstime_t *abstime)
Definition: globus_time.c:47
globus_bool_t globus_time_reltime_is_infinity(const globus_reltime_t *reltime)
Definition: globus_time.c:60
int globus_abstime_cmp(const globus_abstime_t *abstime_1, const globus_abstime_t *abstime_2)
Definition: globus_time.c:73
globus_bool_t globus_time_has_expired(const globus_abstime_t *abstime)
Definition: globus_time.c:31
int globus_bool_t
Boolean type.
Definition: globus_types.h:78