projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
server: fix for non zero appended strings
[fio.git]
/
gettime.c
diff --git
a/gettime.c
b/gettime.c
index 08d2d2b3b1205a56543ec6aef00e52b37711d622..72fda3f8597e335be2fc4677a208f02db9fa62b7 100644
(file)
--- a/
gettime.c
+++ b/
gettime.c
@@
-5,15
+5,18
@@
#include <unistd.h>
#include <math.h>
#include <sys/time.h>
#include <unistd.h>
#include <math.h>
#include <sys/time.h>
+#include <time.h>
#include "fio.h"
#include "smalloc.h"
#include "hash.h"
#include "fio.h"
#include "smalloc.h"
#include "hash.h"
+#ifdef ARCH_HAVE_CPU_CLOCK
static unsigned long cycles_per_usec;
static unsigned long cycles_per_usec;
-static struct timeval last_tv;
static unsigned long last_cycles;
static unsigned long last_cycles;
+#endif
+static struct timeval last_tv;
static int last_tv_valid;
static struct timeval *fio_tv;
static int last_tv_valid;
static struct timeval *fio_tv;
@@
-183,6
+186,7
@@
void fio_gettime(struct timeval *tp, void fio_unused *caller)
memcpy(&last_tv, tp, sizeof(*tp));
}
memcpy(&last_tv, tp, sizeof(*tp));
}
+#ifdef ARCH_HAVE_CPU_CLOCK
static unsigned long get_cycles_per_usec(void)
{
struct timeval s, e;
static unsigned long get_cycles_per_usec(void)
{
struct timeval s, e;
@@
-204,14
+208,12
@@
static unsigned long get_cycles_per_usec(void)
return c_e - c_s;
}
return c_e - c_s;
}
-
void fio_clock_init
(void)
+
static void calibrate_cpu_clock
(void)
{
double delta, mean, S;
unsigned long avg, cycles[10];
int i, samples;
{
double delta, mean, S;
unsigned long avg, cycles[10];
int i, samples;
- last_tv_valid = 0;
-
cycles[0] = get_cycles_per_usec();
S = delta = mean = 0.0;
for (i = 0; i < 10; i++) {
cycles[0] = get_cycles_per_usec();
S = delta = mean = 0.0;
for (i = 0; i < 10; i++) {
@@
-229,7
+231,7
@@
void fio_clock_init(void)
for (i = 0; i < 10; i++) {
double this = cycles[i];
for (i = 0; i < 10; i++) {
double this = cycles[i];
- if ((
max(this, mean) -
min(this, mean)) > S)
+ if ((
fmax(this, mean) - f
min(this, mean)) > S)
continue;
samples++;
avg += this;
continue;
samples++;
avg += this;
@@
-246,6
+248,18
@@
void fio_clock_init(void)
dprint(FD_TIME, "mean=%f, S=%f\n", mean, S);
cycles_per_usec = avg;
dprint(FD_TIME, "mean=%f, S=%f\n", mean, S);
cycles_per_usec = avg;
+
+}
+#else
+static void calibrate_cpu_clock(void)
+{
+}
+#endif
+
+void fio_clock_init(void)
+{
+ last_tv_valid = 0;
+ calibrate_cpu_clock();
}
void fio_gtod_init(void)
}
void fio_gtod_init(void)