xref: /utopia/UTPA2-700.0.x/projects/tools/lint/aeon_include/sys/time.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* time.h -- An implementation of the standard Unix <sys/time.h> file.
2*53ee8cc1Swenshuai.xi    Written by Geoffrey Noer <noer@cygnus.com>
3*53ee8cc1Swenshuai.xi    Public domain; no rights reserved. */
4*53ee8cc1Swenshuai.xi 
5*53ee8cc1Swenshuai.xi #ifndef _SYS_TIME_H_
6*53ee8cc1Swenshuai.xi #define _SYS_TIME_H_
7*53ee8cc1Swenshuai.xi 
8*53ee8cc1Swenshuai.xi #include <_ansi.h>
9*53ee8cc1Swenshuai.xi #include <sys/types.h>
10*53ee8cc1Swenshuai.xi 
11*53ee8cc1Swenshuai.xi #ifdef __cplusplus
12*53ee8cc1Swenshuai.xi extern "C" {
13*53ee8cc1Swenshuai.xi #endif
14*53ee8cc1Swenshuai.xi 
15*53ee8cc1Swenshuai.xi #ifndef _WINSOCK_H
16*53ee8cc1Swenshuai.xi struct timeval {
17*53ee8cc1Swenshuai.xi   long tv_sec;
18*53ee8cc1Swenshuai.xi   long tv_usec;
19*53ee8cc1Swenshuai.xi };
20*53ee8cc1Swenshuai.xi 
21*53ee8cc1Swenshuai.xi struct timezone {
22*53ee8cc1Swenshuai.xi   int tz_minuteswest;
23*53ee8cc1Swenshuai.xi   int tz_dsttime;
24*53ee8cc1Swenshuai.xi };
25*53ee8cc1Swenshuai.xi 
26*53ee8cc1Swenshuai.xi #ifdef __CYGWIN__
27*53ee8cc1Swenshuai.xi #include <cygwin/sys_time.h>
28*53ee8cc1Swenshuai.xi #endif /* __CYGWIN__ */
29*53ee8cc1Swenshuai.xi 
30*53ee8cc1Swenshuai.xi #endif /* _WINSOCK_H */
31*53ee8cc1Swenshuai.xi 
32*53ee8cc1Swenshuai.xi #define ITIMER_REAL     0
33*53ee8cc1Swenshuai.xi #define ITIMER_VIRTUAL  1
34*53ee8cc1Swenshuai.xi #define ITIMER_PROF     2
35*53ee8cc1Swenshuai.xi 
36*53ee8cc1Swenshuai.xi struct  itimerval {
37*53ee8cc1Swenshuai.xi   struct  timeval it_interval;
38*53ee8cc1Swenshuai.xi   struct  timeval it_value;
39*53ee8cc1Swenshuai.xi };
40*53ee8cc1Swenshuai.xi 
41*53ee8cc1Swenshuai.xi /* BSD time macros used by RTEMS code */
42*53ee8cc1Swenshuai.xi #if defined (__rtems__) || defined (__CYGWIN__)
43*53ee8cc1Swenshuai.xi 
44*53ee8cc1Swenshuai.xi /* Convenience macros for operations on timevals.
45*53ee8cc1Swenshuai.xi    NOTE: `timercmp' does not work for >= or <=.  */
46*53ee8cc1Swenshuai.xi #define	timerisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
47*53ee8cc1Swenshuai.xi #define	timerclear(tvp)		((tvp)->tv_sec = (tvp)->tv_usec = 0)
48*53ee8cc1Swenshuai.xi #define	timercmp(a, b, CMP) 						      \
49*53ee8cc1Swenshuai.xi   (((a)->tv_sec == (b)->tv_sec) ? 					      \
50*53ee8cc1Swenshuai.xi    ((a)->tv_usec CMP (b)->tv_usec) : 					      \
51*53ee8cc1Swenshuai.xi    ((a)->tv_sec CMP (b)->tv_sec))
52*53ee8cc1Swenshuai.xi #define	timeradd(a, b, result)						      \
53*53ee8cc1Swenshuai.xi   do {									      \
54*53ee8cc1Swenshuai.xi     (result)->tv_sec = (a)->tv_sec + (b)->tv_sec;			      \
55*53ee8cc1Swenshuai.xi     (result)->tv_usec = (a)->tv_usec + (b)->tv_usec;			      \
56*53ee8cc1Swenshuai.xi     if ((result)->tv_usec >= 1000000)					      \
57*53ee8cc1Swenshuai.xi       {									      \
58*53ee8cc1Swenshuai.xi 	++(result)->tv_sec;						      \
59*53ee8cc1Swenshuai.xi 	(result)->tv_usec -= 1000000;					      \
60*53ee8cc1Swenshuai.xi       }									      \
61*53ee8cc1Swenshuai.xi   } while (0)
62*53ee8cc1Swenshuai.xi #define	timersub(a, b, result)						      \
63*53ee8cc1Swenshuai.xi   do {									      \
64*53ee8cc1Swenshuai.xi     (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;			      \
65*53ee8cc1Swenshuai.xi     (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;			      \
66*53ee8cc1Swenshuai.xi     if ((result)->tv_usec < 0) {					      \
67*53ee8cc1Swenshuai.xi       --(result)->tv_sec;						      \
68*53ee8cc1Swenshuai.xi       (result)->tv_usec += 1000000;					      \
69*53ee8cc1Swenshuai.xi     }									      \
70*53ee8cc1Swenshuai.xi   } while (0)
71*53ee8cc1Swenshuai.xi #endif /* defined (__rtems__) || defined (__CYGWIN__) */
72*53ee8cc1Swenshuai.xi 
73*53ee8cc1Swenshuai.xi int _EXFUN(gettimeofday, (struct timeval *__p, struct timezone *__z));
74*53ee8cc1Swenshuai.xi int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *));
75*53ee8cc1Swenshuai.xi int _EXFUN(utimes, (const char *__path, const struct timeval *__tvp));
76*53ee8cc1Swenshuai.xi int _EXFUN(getitimer, (int __which, struct itimerval *__value));
77*53ee8cc1Swenshuai.xi int _EXFUN(setitimer, (int __which, const struct itimerval *__value,
78*53ee8cc1Swenshuai.xi 					struct itimerval *__ovalue));
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi #ifdef __cplusplus
81*53ee8cc1Swenshuai.xi }
82*53ee8cc1Swenshuai.xi #endif
83*53ee8cc1Swenshuai.xi #endif /* _SYS_TIME_H_ */
84