gettime: print first clock offset for CPU clock
[fio.git] / gettime.c
index 180aa5f2ed6c3893235e85b8852d5e9a6673affd..9988e6c54cd56a61200a17106f27a4512d9c6cb6 100644 (file)
--- a/gettime.c
+++ b/gettime.c
@@ -133,7 +133,9 @@ static void fio_init gtod_init(void)
 #ifdef CONFIG_CLOCK_GETTIME
 static int fill_clock_gettime(struct timespec *ts)
 {
-#ifdef CONFIG_CLOCK_MONOTONIC
+#if defined(CONFIG_CLOCK_MONOTONIC_RAW)
+       return clock_gettime(CLOCK_MONOTONIC_RAW, ts);
+#elif defined(CONFIG_CLOCK_MONOTONIC)
        return clock_gettime(CLOCK_MONOTONIC, ts);
 #else
        return clock_gettime(CLOCK_REALTIME, ts);
@@ -483,6 +485,7 @@ static void *clock_thread_fn(void *data)
        struct clock_entry *c;
        os_cpu_mask_t cpu_mask;
        uint32_t last_seq;
+       unsigned long long first;
        int i;
 
        if (fio_cpuset_init(&cpu_mask)) {
@@ -504,6 +507,7 @@ static void *clock_thread_fn(void *data)
        pthread_mutex_lock(&t->lock);
        pthread_mutex_unlock(&t->started);
 
+       first = get_cpu_clock();
        last_seq = 0;
        c = &t->entries[0];
        for (i = 0; i < t->nr_entries; i++, c++) {
@@ -526,7 +530,8 @@ static void *clock_thread_fn(void *data)
                unsigned long long clocks;
 
                clocks = t->entries[i - 1].tsc - t->entries[0].tsc;
-               log_info("cs: cpu%3d: %llu clocks seen\n", t->cpu, clocks);
+               log_info("cs: cpu%3d: %llu clocks seen, first %llu\n", t->cpu,
+                                                       clocks, first);
        }
 
        /*
@@ -638,6 +643,8 @@ int fio_monotonic_clocktest(int debug)
 
        qsort(entries, tentries, sizeof(struct clock_entry), clock_cmp);
 
+       /* silence silly gcc */
+       prev = NULL;
        for (failed = i = 0; i < tentries; i++) {
                this = &entries[i];