Split mutex.c and .h each into three files
[fio.git] / stat.c
diff --git a/stat.c b/stat.c
index bd2c27d0ec75abfa0de5e1b017ec9aa7fe68d23e..8a242c97430bd0bff2502013af5fd848a2a57881 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -18,7 +18,7 @@
 #include "helper_thread.h"
 #include "smalloc.h"
 
-#define LOG_MSEC_SLACK 10
+#define LOG_MSEC_SLACK 1
 
 struct fio_mutex *stat_mutex;
 
@@ -135,7 +135,7 @@ static int double_cmp(const void *a, const void *b)
        return cmp;
 }
 
-unsigned int calc_clat_percentiles(unsigned int *io_u_plat, unsigned long long nr,
+unsigned int calc_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr,
                                   fio_fp64_t *plist, unsigned long long **output,
                                   unsigned long long *maxv, unsigned long long *minv)
 {
@@ -198,7 +198,7 @@ unsigned int calc_clat_percentiles(unsigned int *io_u_plat, unsigned long long n
 /*
  * Find and display the p-th percentile of clat
  */
-static void show_clat_percentiles(unsigned int *io_u_plat, unsigned long long nr,
+static void show_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr,
                                  fio_fp64_t *plist, unsigned int precision,
                                  const char *pre, struct buf_output *out)
 {
@@ -323,7 +323,7 @@ void show_group_stats(struct group_run_stats *rs, struct buf_output *out)
        }
 }
 
-void stat_calc_dist(unsigned int *map, unsigned long total, double *io_u_dist)
+void stat_calc_dist(uint64_t *map, unsigned long total, double *io_u_dist)
 {
        int i;
 
@@ -342,7 +342,7 @@ void stat_calc_dist(unsigned int *map, unsigned long total, double *io_u_dist)
 }
 
 static void stat_calc_lat(struct thread_stat *ts, double *dst,
-                         unsigned int *src, int nr)
+                         uint64_t *src, int nr)
 {
        unsigned long total = ddir_rw_sum(ts->total_io_u);
        int i;
@@ -1860,13 +1860,14 @@ void __show_run_stats(void)
                char time_buf[32];
                struct timeval now;
                unsigned long long ms_since_epoch;
+               time_t tv_sec;
 
                gettimeofday(&now, NULL);
                ms_since_epoch = (unsigned long long)(now.tv_sec) * 1000 +
                                 (unsigned long long)(now.tv_usec) / 1000;
 
-               os_ctime_r((const time_t *) &now.tv_sec, time_buf,
-                               sizeof(time_buf));
+               tv_sec = now.tv_sec;
+               os_ctime_r(&tv_sec, time_buf, sizeof(time_buf));
                if (time_buf[strlen(time_buf) - 1] == '\n')
                        time_buf[strlen(time_buf) - 1] = '\0';
 
@@ -2340,9 +2341,11 @@ static void _add_stat_to_log(struct io_log *iolog, unsigned long elapsed,
                __add_stat_to_log(iolog, ddir, elapsed, log_max);
 }
 
-static long add_log_sample(struct thread_data *td, struct io_log *iolog,
-                          union io_sample_data data, enum fio_ddir ddir,
-                          unsigned int bs, uint64_t offset)
+static unsigned long add_log_sample(struct thread_data *td,
+                                   struct io_log *iolog,
+                                   union io_sample_data data,
+                                   enum fio_ddir ddir, unsigned int bs,
+                                   uint64_t offset)
 {
        unsigned long elapsed, this_window;
 
@@ -2373,7 +2376,7 @@ static long add_log_sample(struct thread_data *td, struct io_log *iolog,
        if (elapsed < iolog->avg_last[ddir])
                return iolog->avg_last[ddir] - elapsed;
        else if (this_window < iolog->avg_msec) {
-               int diff = iolog->avg_msec - this_window;
+               unsigned long diff = iolog->avg_msec - this_window;
 
                if (inline_log(iolog) || diff > LOG_MSEC_SLACK)
                        return diff;
@@ -2460,7 +2463,7 @@ void add_clat_sample(struct thread_data *td, enum fio_ddir ddir,
                this_window = elapsed - hw->hist_last;
                
                if (this_window >= iolog->hist_msec) {
-                       unsigned int *io_u_plat;
+                       uint64_t *io_u_plat;
                        struct io_u_plat_entry *dst;
 
                        /*
@@ -2470,7 +2473,7 @@ void add_clat_sample(struct thread_data *td, enum fio_ddir ddir,
                         * located in iolog.c after printing this sample to the
                         * log file.
                         */
-                       io_u_plat = (unsigned int *) td->ts.io_u_plat[ddir];
+                       io_u_plat = (uint64_t *) td->ts.io_u_plat[ddir];
                        dst = malloc(sizeof(struct io_u_plat_entry));
                        memcpy(&(dst->io_u_plat), io_u_plat,
                                FIO_IO_U_PLAT_NR * sizeof(unsigned int));
@@ -2562,7 +2565,7 @@ static int __add_samples(struct thread_data *td, struct timespec *parent_tv,
 {
        unsigned long spent, rate;
        enum fio_ddir ddir;
-       unsigned int next, next_log;
+       unsigned long next, next_log;
 
        next_log = avg_time;