2015-04-12 10:19:02 +02:00
|
|
|
/*
|
2015-04-14 07:42:23 +02:00
|
|
|
Tis file is part of libcapwap.
|
2015-04-12 10:19:02 +02:00
|
|
|
|
|
|
|
libcapwap is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
libcapwap is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2015-04-11 19:02:45 +02:00
|
|
|
#ifndef __CW_TIMER_H
|
|
|
|
#define __CW_TIMER_H
|
|
|
|
|
|
|
|
#include <time.h>
|
2015-04-12 11:03:43 +02:00
|
|
|
#include <sys/time.h>
|
2015-04-11 19:02:45 +02:00
|
|
|
|
|
|
|
/**
|
2015-04-12 10:19:02 +02:00
|
|
|
* @defgroup TimerFunctions Timer Functions
|
2015-04-11 19:02:45 +02:00
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
2015-04-19 16:44:20 +02:00
|
|
|
/**
|
|
|
|
* CAPWAP timer type, used in #cw_timer_start and #cw_timer_timeout.
|
|
|
|
*/
|
|
|
|
typedef time_t cw_timer_t;
|
|
|
|
|
|
|
|
|
2015-04-11 19:02:45 +02:00
|
|
|
/**
|
|
|
|
* Start a timer.
|
|
|
|
* @param t number of seconds until the timer expires
|
|
|
|
* @return timer value to initialize a variable of time_t
|
|
|
|
*
|
|
|
|
* Example: time_t timer = cw_timer_start(60);
|
|
|
|
*/
|
|
|
|
#define cw_timer_start(t) (time(NULL)+t)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if a timer is expired.
|
|
|
|
* @param t an time_t variable intializes by #cw_timer_start
|
|
|
|
* @return 0=timer is not expired\n 1=timer is expired.
|
|
|
|
*/
|
|
|
|
#define cw_timer_timeout(t) (time(NULL)>t ? 1 : 0)
|
|
|
|
|
|
|
|
|
2015-04-12 11:03:43 +02:00
|
|
|
#define cw_timevaltodouble(tv) \
|
|
|
|
(( ((1000000.0)*(double)((tv)->tv_sec) + (double)(tv)->tv_usec)) )
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Define a clock variable to measure runtime (not CPU runtime, but
|
2015-04-14 07:42:23 +02:00
|
|
|
* real time). This variable can be used with #cw_clock_start
|
2015-04-12 11:03:43 +02:00
|
|
|
* and #cw_clock_lap.
|
|
|
|
*
|
|
|
|
* @param c name of the variable
|
|
|
|
*/
|
2015-04-19 16:44:20 +02:00
|
|
|
#define CLOCK_DEFINE(c)\
|
2015-04-12 11:03:43 +02:00
|
|
|
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
|
2015-04-11 19:02:45 +02:00
|
|
|
|
|
|
|
/** @} */
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|