diff --git a/src/capwap/timer.h b/src/capwap/timer.h index 0998e828..cc7e4787 100644 --- a/src/capwap/timer.h +++ b/src/capwap/timer.h @@ -21,6 +21,7 @@ #define __CW_TIMER_H #include +#include /** * @defgroup TimerFunctions Timer Functions @@ -44,14 +45,46 @@ #define cw_timer_timeout(t) (time(NULL)>t ? 1 : 0) -#define cw_clock_start()\ - clock() +#define cw_timevaltodouble(tv) \ + (( ((1000000.0)*(double)((tv)->tv_sec) + (double)(tv)->tv_usec)) ) -#define cw_clock_stop(t)\ - (((double) (clock()-(t))) / CLOCKS_PER_SEC) +/** + * Define a clock variable to measure runtime (not CPU runtime, but + * ralt time). This variable can be used with #cw_clock_start + * and #cw_clock_lap. + * + * @param c name of the variable + */ +#define DEFINE_CLOCK(c)\ + struct timeval c; + +/** + * Start the clock (stop watch), start measuring time + * @param c a pounter to a variable defined with #DEFINE_CLOCK + */ +#define cw_clock_start(c)\ + gettimeofday(c,NULL); + +/** + * Get lap time. (stop watch) + * @param tv pointer to clock variable defined with #DEFINE_CLOCK + * @return lap time in seconds. + */ +static inline double cw_clock_lap(struct timeval *tv){ + struct timeval lap; + gettimeofday(&lap,NULL); + return (cw_timevaltodouble(&lap)-cw_timevaltodouble(tv))/1000000.0; +} + +/** + * An alias for #cw_clock_lap + */ +#define cw_clock_stop cw_clock_lap + + /** @} */