1*53ee8cc1Swenshuai.xi #ifndef _LINUX_TIME_H 2*53ee8cc1Swenshuai.xi #define _LINUX_TIME_H 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #include <linux/types.h> 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi 7*53ee8cc1Swenshuai.xi #ifndef _STRUCT_TIMESPEC 8*53ee8cc1Swenshuai.xi #define _STRUCT_TIMESPEC 9*53ee8cc1Swenshuai.xi struct timespec { 10*53ee8cc1Swenshuai.xi time_t tv_sec; /* seconds */ 11*53ee8cc1Swenshuai.xi long tv_nsec; /* nanoseconds */ 12*53ee8cc1Swenshuai.xi }; 13*53ee8cc1Swenshuai.xi #endif 14*53ee8cc1Swenshuai.xi 15*53ee8cc1Swenshuai.xi struct timeval { 16*53ee8cc1Swenshuai.xi time_t tv_sec; /* seconds */ 17*53ee8cc1Swenshuai.xi suseconds_t tv_usec; /* microseconds */ 18*53ee8cc1Swenshuai.xi }; 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi struct timezone { 21*53ee8cc1Swenshuai.xi int tz_minuteswest; /* minutes west of Greenwich */ 22*53ee8cc1Swenshuai.xi int tz_dsttime; /* type of dst correction */ 23*53ee8cc1Swenshuai.xi }; 24*53ee8cc1Swenshuai.xi 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi #define NFDBITS __NFDBITS 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi #define FD_SETSIZE __FD_SETSIZE 29*53ee8cc1Swenshuai.xi #define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp) 30*53ee8cc1Swenshuai.xi #define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp) 31*53ee8cc1Swenshuai.xi #define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp) 32*53ee8cc1Swenshuai.xi #define FD_ZERO(fdsetp) __FD_ZERO(fdsetp) 33*53ee8cc1Swenshuai.xi 34*53ee8cc1Swenshuai.xi /* 35*53ee8cc1Swenshuai.xi * Names of the interval timers, and structure 36*53ee8cc1Swenshuai.xi * defining a timer setting: 37*53ee8cc1Swenshuai.xi */ 38*53ee8cc1Swenshuai.xi #define ITIMER_REAL 0 39*53ee8cc1Swenshuai.xi #define ITIMER_VIRTUAL 1 40*53ee8cc1Swenshuai.xi #define ITIMER_PROF 2 41*53ee8cc1Swenshuai.xi 42*53ee8cc1Swenshuai.xi struct itimerspec { 43*53ee8cc1Swenshuai.xi struct timespec it_interval; /* timer period */ 44*53ee8cc1Swenshuai.xi struct timespec it_value; /* timer expiration */ 45*53ee8cc1Swenshuai.xi }; 46*53ee8cc1Swenshuai.xi 47*53ee8cc1Swenshuai.xi struct itimerval { 48*53ee8cc1Swenshuai.xi struct timeval it_interval; /* timer interval */ 49*53ee8cc1Swenshuai.xi struct timeval it_value; /* current value */ 50*53ee8cc1Swenshuai.xi }; 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi /* 53*53ee8cc1Swenshuai.xi * The IDs of the various system clocks (for POSIX.1b interval timers): 54*53ee8cc1Swenshuai.xi */ 55*53ee8cc1Swenshuai.xi #define CLOCK_REALTIME 0 56*53ee8cc1Swenshuai.xi #define CLOCK_MONOTONIC 1 57*53ee8cc1Swenshuai.xi #define CLOCK_PROCESS_CPUTIME_ID 2 58*53ee8cc1Swenshuai.xi #define CLOCK_THREAD_CPUTIME_ID 3 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi /* 61*53ee8cc1Swenshuai.xi * The IDs of various hardware clocks: 62*53ee8cc1Swenshuai.xi */ 63*53ee8cc1Swenshuai.xi #define CLOCK_SGI_CYCLE 10 64*53ee8cc1Swenshuai.xi #define MAX_CLOCKS 16 65*53ee8cc1Swenshuai.xi #define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC) 66*53ee8cc1Swenshuai.xi #define CLOCKS_MONO CLOCK_MONOTONIC 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xi /* 69*53ee8cc1Swenshuai.xi * The various flags for setting POSIX.1b interval timers: 70*53ee8cc1Swenshuai.xi */ 71*53ee8cc1Swenshuai.xi #define TIMER_ABSTIME 0x01 72*53ee8cc1Swenshuai.xi 73*53ee8cc1Swenshuai.xi #endif 74