程序14-32 linux/include/sys/time.h
1 #ifndef _SYS_TIME_H
2 #define _SYS_TIME_H
3
4 /* gettimofday returns this */ // gettimeofday()函数返回该时间结构。
5 struct timeval {
6 long tv_sec; /* seconds */ // 秒。
7 long tv_usec; /* microseconds */ // 微秒。
8 };
9
// 时间区结构。tz为时区(Time Zone)的缩写,DST(Daylight Saving Time)是夏令时的缩写。
10 struct timezone {
11 int tz_minuteswest; /* minutes west of Greenwich */ // 格林威治西部分钟时间。
12 int tz_dsttime; /* type of dst correction */ // 夏令时区调整时间。
13 };
14
15 #define DST_NONE 0 /* not on dst */ // 非夏令时。
16 #define DST_USA 1 /* USA style dst */ // USA形式的夏令时。
17 #define DST_AUST 2 /* Australian style dst */ // 澳洲形式的夏令时。
18 #define DST_WET 3 /* Western European dst */
19 #define DST_MET 4 /* Middle European dst */
20 #define DST_EET 5 /* Eastern European dst */
21 #define DST_CAN 6 /* Canada */
22 #define DST_GB 7 /* Great Britain and Eire */
23 #define DST_RUM 8 /* Rumania */
24 #define DST_TUR 9 /* Turkey */
25 #define DST_AUSTALT 10 /* Australian style with shift in 1986 */
26
// 文件描述符集的设置宏,用于select()函数。
27 #define FD_SET(fd,fdsetp) (*(fdsetp) |= (1 << (fd)))
28 #define FD_CLR(fd,fdsetp) (*(fdsetp) &= ~(1 << (fd)))
29 #define FD_ISSET(fd,fdsetp) ((*(fdsetp) >> fd) & 1)
30 #define FD_ZERO(fdsetp) (*(fdsetp) = 0)
31
32 /*
33 * Operations on timevals.
34 *
35 * NB: timercmp does not work for >= or <=.
36 */
// timeval时间结构的操作函数。
37 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
38 #define timercmp(tvp, uvp, cmp) \
39 ((tvp)->tv_sec cmp (uvp)->tv_sec || \
40 (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
41 #define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
42
43 /*
44 * Names of the interval timers, and structure
45 * defining a timer setting.
46 */
/* 内部定时器名称和结构,用于定义定时器设置。 */
47 #define ITIMER_REAL 0 // 以实际时间递减。
48 #define ITIMER_VIRTUAL 1 // 以进程虚拟时间递减。
49 #define ITIMER_PROF 2 // 以进程虚拟时间或者当系统运行时以进程时间递减。
50
// 内部时间结构。其中it(Internal Timer)是内部定时器的缩写。
51 struct itimerval {
52 struct timeval it_interval; /* timer interval */
53 struct timeval it_value; /* current value */
54 };
55
56 #include <time.h>
57 #include <sys/types.h>
58
59 int gettimeofday(struct timeval * tp, struct timezone * tz);
60 int select(int width, fd_set * readfds, fd_set * writefds,
61 fd_set * exceptfds, struct timeval * timeout);
62
63 #endif /*_SYS_TIME_H*/
64