From 30a7ea2141b70b806fb91554b9fab22ea99ab8c6 Mon Sep 17 00:00:00 2001 From: Anoop Saldanha Date: Sat, 7 Nov 2009 13:09:47 +0530 Subject: [PATCH] adapted counters to use util-time.[ch] --- src/counters.c | 17 ++++++++++------- src/counters.h | 2 +- src/util-time.c | 19 +++++++++++-------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/counters.c b/src/counters.c index 16722ea258..85bc1314e9 100644 --- a/src/counters.c +++ b/src/counters.c @@ -8,8 +8,9 @@ #include "threadvars.h" #include "tm-modules.h" #include "tm-threads.h" -#include "util-unittest.h" #include "conf.h" +#include "util-time.h" +#include "util-unittest.h" #include "util-debug.h" /** \todo Get the default log directory from some global resource. */ @@ -322,7 +323,7 @@ static int SCPerfParseTBCounterInterval(SCPerfCounter *pc, char *interval) pc->type_q->total_secs = ((pc->type_q->hours * 60 * 60) + (pc->type_q->minutes * 60) + pc->type_q->seconds); - pc->type_q->ts = time(NULL); + TimeGet(&pc->type_q->ts); return 0; @@ -601,7 +602,7 @@ static void SCPerfCopyCounterValue(SCPCAElem *pcae, int reset_lc) */ static void SCPerfOutputCalculateCounterValue(SCPerfCounter *pc, void *cvalue_op) { - time_t curr_ts; + struct timeval curr_ts; int elapsed_secs = 0; double divisor = 0; @@ -621,8 +622,9 @@ static void SCPerfOutputCalculateCounterValue(SCPerfCounter *pc, void *cvalue_op return; /* we have a timebased counter. Awesome. Time for some more processing */ - curr_ts = time(NULL); - elapsed_secs = curr_ts - pc->type_q->ts; + TimeGet(&curr_ts); + elapsed_secs = ((curr_ts.tv_sec + curr_ts.tv_usec / 1000000.0) - + (pc->type_q->ts.tv_sec + pc->type_q->ts.tv_usec / 1000000.0)); if (elapsed_secs < pc->type_q->total_secs) return; @@ -642,8 +644,9 @@ static void SCPerfOutputCalculateCounterValue(SCPerfCounter *pc, void *cvalue_op break; } - pc->type_q->ts = time(NULL); - + /* reset the timestamp to the current time */ + TimeGet(&pc->type_q->ts); + /* reset the local counter back to 0 */ memset(pc->value->cvalue, 0, pc->value->size); return; diff --git a/src/counters.h b/src/counters.h index d10e0e6bb6..ac310eaf27 100644 --- a/src/counters.h +++ b/src/counters.h @@ -76,7 +76,7 @@ typedef struct SCPerfCounterTypeQ_ { int total_secs; /* timestamp to indicate the time, when the counter was last reset */ - time_t ts; + struct timeval ts; } SCPerfCounterTypeQ; /** diff --git a/src/util-time.c b/src/util-time.c index 4e27ba1183..f00ff9b63d 100644 --- a/src/util-time.c +++ b/src/util-time.c @@ -5,21 +5,24 @@ #include "threads.h" #include "util-debug.h" -static struct timeval current_time = { 0,0 }; +static struct timeval current_time = { 0, 0 }; static pthread_mutex_t current_time_mutex = PTHREAD_MUTEX_INITIALIZER; static char live = TRUE; -void TimeModeSetLive(void) { +void TimeModeSetLive(void) +{ live = TRUE; SCLogDebug("live time mode enabled"); } -void TimeModeSetOffline (void) { +void TimeModeSetOffline (void) +{ live = FALSE; SCLogDebug("offline time mode enabled"); } -void TimeSet(struct timeval *tv) { +void TimeSet(struct timeval *tv) +{ if (live == TRUE) return; @@ -31,12 +34,13 @@ void TimeSet(struct timeval *tv) { current_time.tv_usec = tv->tv_usec; SCLogDebug("time set to %" PRIuMAX " sec, %" PRIuMAX " usec", - (uintmax_t)current_time.tv_sec, (uintmax_t)current_time.tv_usec); + (uintmax_t)current_time.tv_sec, (uintmax_t)current_time.tv_usec); mutex_unlock(¤t_time_mutex); } -void TimeGet(struct timeval *tv) { +void TimeGet(struct timeval *tv) +{ if (tv == NULL) return; @@ -50,6 +54,5 @@ void TimeGet(struct timeval *tv) { } SCLogDebug("time we got is %" PRIuMAX " sec, %" PRIuMAX " usec", - (uintmax_t)tv->tv_sec, (uintmax_t)tv->tv_usec); + (uintmax_t)tv->tv_sec, (uintmax_t)tv->tv_usec); } -