summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
282cc16)
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
+#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;
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;
-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;
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++) {
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)
static struct timeval genesis;
static unsigned long ns_granularity;
static struct timeval genesis;
static unsigned long ns_granularity;
-unsigned long long genesis_cycles;
unsigned long long utime_since(struct timeval *s, struct timeval *e)
{
unsigned long long utime_since(struct timeval *s, struct timeval *e)
{
void set_genesis_time(void)
{
fio_gettime(&genesis, NULL);
void set_genesis_time(void)
{
fio_gettime(&genesis, NULL);
- genesis_cycles = get_cpu_clock();
}
void fill_start_time(struct timeval *t)
}
void fill_start_time(struct timeval *t)