Move non-timer routines from timer.[hc] to iperf_util.[hc]

This commit is contained in:
Jef Poskanzer 2012-12-05 12:34:58 -08:00
parent d6e2781d18
commit 9673370f98
6 changed files with 107 additions and 101 deletions

View File

@ -22,6 +22,7 @@
#include "iperf.h"
#include "iperf_api.h"
#include "iperf_util.h"
#include "iperf_udp.h"
#include "timer.h"
#include "net.h"

View File

@ -82,3 +82,98 @@ is_closed(int fd)
}
return (0);
}
double
timeval_to_double(struct timeval * tv)
{
double d;
d = tv->tv_sec + tv->tv_usec / 1000000;
return d;
}
int
timeval_equals(struct timeval * tv0, struct timeval * tv1)
{
if ( tv0->tv_sec == tv1->tv_sec && tv0->tv_usec == tv1->tv_usec )
return 1;
else
return 0;
}
double
timeval_diff(struct timeval * tv0, struct timeval * tv1)
{
double time1, time2;
time1 = tv0->tv_sec + (tv0->tv_usec / 1000000.0);
time2 = tv1->tv_sec + (tv1->tv_usec / 1000000.0);
time1 = time1 - time2;
if (time1 < 0)
time1 = -time1;
return (time1);
}
int
delay(int64_t ns)
{
struct timespec req, rem;
req.tv_sec = 0;
while (ns >= 1000000000L) {
ns -= 1000000000L;
req.tv_sec += 1;
}
req.tv_nsec = ns;
while (nanosleep(&req, &rem) == -1)
if (EINTR == errno)
memcpy(&req, &rem, sizeof rem);
else
return -1;
return 0;
}
# ifdef DELAY_SELECT_METHOD
int
delay(int us)
{
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = us;
(void) select(1, (fd_set *) 0, (fd_set *) 0, (fd_set *) 0, &tv);
return (1);
}
#endif
void
cpu_util(double *pcpu)
{
static struct timeval last;
static clock_t clast;
struct timeval temp;
clock_t ctemp;
double timediff;
if (pcpu == NULL) {
gettimeofday(&last, NULL);
clast = clock();
return;
}
gettimeofday(&temp, NULL);
ctemp = clock();
timediff = ((temp.tv_sec * 1000000.0 + temp.tv_usec) -
(last.tv_sec * 1000000.0 + last.tv_usec));
*pcpu = ((ctemp - clast) / timediff) * 100;
}

View File

@ -14,4 +14,14 @@ void make_cookie(char *);
int is_closed(int);
double timeval_to_double(struct timeval *tv);
int timeval_equals(struct timeval *tv0, struct timeval *tv1);
double timeval_diff(struct timeval *tv0, struct timeval *tv1);
int delay(int64_t ns);
void cpu_util(double *);
#endif

View File

@ -20,6 +20,7 @@
#include <string.h>
#include <sys/fcntl.h>
#include "iperf_util.h"
#include "net.h"
#include "timer.h"

View File

@ -20,38 +20,6 @@
#include "timer.h"
#include "iperf_api.h"
double
timeval_to_double(struct timeval * tv)
{
double d;
d = tv->tv_sec + tv->tv_usec / 1000000;
return d;
}
int
timeval_equals(struct timeval * tv0, struct timeval * tv1)
{
if ( tv0->tv_sec == tv1->tv_sec && tv0->tv_usec == tv1->tv_usec )
return 1;
else
return 0;
}
double
timeval_diff(struct timeval * tv0, struct timeval * tv1)
{
double time1, time2;
time1 = tv0->tv_sec + (tv0->tv_usec / 1000000.0);
time2 = tv1->tv_sec + (tv1->tv_usec / 1000000.0);
time1 = time1 - time2;
if (time1 < 0)
time1 = -time1;
return (time1);
}
int
timer_expired(struct timer * tp)
@ -117,40 +85,6 @@ free_timer(struct timer * tp)
free(tp);
}
int
delay(int64_t ns)
{
struct timespec req, rem;
req.tv_sec = 0;
while (ns >= 1000000000L) {
ns -= 1000000000L;
req.tv_sec += 1;
}
req.tv_nsec = ns;
while (nanosleep(&req, &rem) == -1)
if (EINTR == errno)
memcpy(&req, &rem, sizeof rem);
else
return -1;
return 0;
}
# ifdef DELAY_SELECT_METHOD
int
delay(int us)
{
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = us;
(void) select(1, (fd_set *) 0, (fd_set *) 0, (fd_set *) 0, &tv);
return (1);
}
#endif
int64_t
timer_remaining(struct timer * tp)
@ -172,28 +106,3 @@ timer_remaining(struct timer * tp)
else
return 0;
}
void
cpu_util(double *pcpu)
{
static struct timeval last;
static clock_t clast;
struct timeval temp;
clock_t ctemp;
double timediff;
if (pcpu == NULL) {
gettimeofday(&last, NULL);
clast = clock();
return;
}
gettimeofday(&temp, NULL);
ctemp = clock();
timediff = ((temp.tv_sec * 1000000.0 + temp.tv_usec) -
(last.tv_sec * 1000000.0 + last.tv_usec));
*pcpu = ((ctemp - clast) / timediff) * 100;
}

View File

@ -21,14 +21,6 @@ struct timer {
struct timer *new_timer(time_t sec, suseconds_t usec);
int delay(int64_t ns);
double timeval_to_double(struct timeval *tv);
int timeval_equals(struct timeval *tv0, struct timeval *tv1);
double timeval_diff(struct timeval *tv0, struct timeval *tv1);
int update_timer(struct timer *tp, time_t sec, suseconds_t usec);
int64_t timer_remaining(struct timer *tp);
@ -37,6 +29,4 @@ void free_timer(struct timer *tp);
int timer_expired(struct timer *);
void cpu_util(double *);
#endif