64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
#ifndef _SYS_TIME_H
|
|
#define _SYS_TIME_H
|
|
|
|
/* gettimofday returns this */
|
|
struct timeval {
|
|
long tv_sec; /* seconds */
|
|
long tv_usec; /* microseconds */
|
|
};
|
|
|
|
struct timezone {
|
|
int tz_minuteswest; /* minutes west of Greenwich */
|
|
int tz_dsttime; /* type of dst correction */
|
|
};
|
|
|
|
#define DST_NONE 0 /* not on dst */
|
|
#define DST_USA 1 /* USA style dst */
|
|
#define DST_AUST 2 /* Australian style dst */
|
|
#define DST_WET 3 /* Western European dst */
|
|
#define DST_MET 4 /* Middle European dst */
|
|
#define DST_EET 5 /* Eastern European dst */
|
|
#define DST_CAN 6 /* Canada */
|
|
#define DST_GB 7 /* Great Britain and Eire */
|
|
#define DST_RUM 8 /* Rumania */
|
|
#define DST_TUR 9 /* Turkey */
|
|
#define DST_AUSTALT 10 /* Australian style with shift in 1986 */
|
|
|
|
#define FD_SET(fd,fdsetp) (*(fdsetp) |= (1 << (fd)))
|
|
#define FD_CLR(fd,fdsetp) (*(fdsetp) &= ~(1 << (fd)))
|
|
#define FD_ISSET(fd,fdsetp) ((*(fdsetp) >> fd) & 1)
|
|
#define FD_ZERO(fdsetp) (*(fdsetp) = 0)
|
|
|
|
/*
|
|
* Operations on timevals.
|
|
*
|
|
* NB: timercmp does not work for >= or <=.
|
|
*/
|
|
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
|
|
#define timercmp(tvp, uvp, cmp) \
|
|
((tvp)->tv_sec cmp (uvp)->tv_sec || \
|
|
(tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
|
|
#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
|
|
|
|
/*
|
|
* Names of the interval timers, and structure
|
|
* defining a timer setting.
|
|
*/
|
|
#define ITIMER_REAL 0
|
|
#define ITIMER_VIRTUAL 1
|
|
#define ITIMER_PROF 2
|
|
|
|
struct itimerval {
|
|
struct timeval it_interval; /* timer interval */
|
|
struct timeval it_value; /* current value */
|
|
};
|
|
|
|
#include <time.h>
|
|
#include <sys/types.h>
|
|
|
|
int gettimeofday(struct timeval * tp, struct timezone * tz);
|
|
int select(int width, fd_set * readfds, fd_set * writefds,
|
|
fd_set * exceptfds, struct timeval * timeout);
|
|
|
|
#endif /*_SYS_TIME_H*/
|