00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _time_util_h
00019 #define _time_util_h
00020
00021 #include "assert_pp.h"
00022
00023
00024
00025
00026 #define MICROS_PER_SECOND 1000000
00027
00028
00029
00030
00031 #define NANOS_PER_MICRO 1000
00032
00033
00034
00035
00036
00037
00038
00039 static inline
00040 struct timespec microsec_to_timespec(unsigned long long microseconds)
00041 {
00042 struct timespec retval;
00043
00044 retval.tv_sec = (int)(microseconds / MICROS_PER_SECOND);
00045 retval.tv_nsec = (int)(microseconds % MICROS_PER_SECOND) * NANOS_PER_MICRO;
00046 return retval;
00047 }
00048
00049
00050
00051
00052
00053
00054
00055
00056 static inline
00057 unsigned long long timespec_to_microsec(struct timespec *time_spec)
00058 {
00059 long long retval;
00060
00061 require(time_spec != 0);
00062
00063 retval = time_spec->tv_sec * MICROS_PER_SECOND;
00064 retval += time_spec->tv_nsec / NANOS_PER_MICRO;
00065 return retval;
00066 }
00067
00068
00069
00070
00071
00072
00073
00074
00075 #define tscmp(tvp, uvp, cmp) \
00076 (((tvp)->tv_sec == (uvp)->tv_sec) ? \
00077 ((tvp)->tv_nsec cmp (uvp)->tv_nsec) : \
00078 ((tvp)->tv_sec cmp (uvp)->tv_sec))
00079
00080 #endif