程序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)的缩写,DSTDaylight 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

    // 内部时间结构。其中itInternal 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