00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _ABLE_CLIB_SYS_TIME_H
00032 #define _ABLE_CLIB_SYS_TIME_H 1
00033
00034 struct timeval;
00035 struct timespec;
00036 struct timezone;
00037
00038 #include <sys/types.h>
00039
00041 struct timeval {
00042 time_t tv_sec;
00043 suseconds_t tv_usec;
00044 };
00045
00047 struct timespec {
00048 long tv_sec;
00049 long tv_nsec;
00050 };
00051
00056 struct timezone {
00057 int tz_minuteswest;
00058 int tz_dsttime;
00059 };
00060
00063 int gettimeofday(struct timeval *tv, struct timezone *tz);
00064
00067 int settimeofday(const struct timeval *tv , const struct timezone *tz);
00068
00069 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
00070
00071 #define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
00072
00073 #define timercmp(a, b, CMP) \
00074 (((a)->tv_sec == (b)->tv_sec) ? \
00075 ((a)->tv_usec CMP (b)->tv_usec) : \
00076 ((a)->tv_sec CMP (b)->tv_sec))
00077
00078 #define timeradd(a, b, result) \
00079 do { \
00080 (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
00081 (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
00082 while ((result)->tv_usec >= 1000000) { \
00083 ++(result)->tv_sec; \
00084 (result)->tv_usec -= 1000000; \
00085 } \
00086 } while (0)
00087
00088 #define timersub(a, b, result) \
00089 do { \
00090 (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
00091 (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
00092 while ((result)->tv_usec < 0) { \
00093 --(result)->tv_sec; \
00094 (result)->tv_usec += 1000000; \
00095 } \
00096 } while (0)
00097
00098 #endif