fio: move thread_options
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 87a94f6e64289372f935879c030f55e2bdc77c6f..33b431939a9ee916e297ed0b62f8a5fce7eb4235 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -126,11 +126,10 @@ struct zone_split_index {
  * This describes a single thread/process executing a fio job.
  */
 struct thread_data {
-       struct thread_options o;
        struct flist_head opt_list;
        unsigned long flags;
+       struct thread_options o;
        void *eo;
-       char verror[FIO_VERROR_SIZE];
        pthread_t thread;
        unsigned int thread_number;
        unsigned int subjob_number;
@@ -141,6 +140,7 @@ struct thread_data {
 
        struct io_log *slat_log;
        struct io_log *clat_log;
+       struct io_log *clat_hist_log;
        struct io_log *lat_log;
        struct io_log *bw_log;
        struct io_log *iops_log;
@@ -393,6 +393,8 @@ struct thread_data {
        void *prof_data;
 
        void *pinned_mem;
+
+       char verror[FIO_VERROR_SIZE];
 };
 
 /*
@@ -676,7 +678,7 @@ static inline unsigned int td_min_bs(struct thread_data *td)
        return min(td->o.min_bs[DDIR_TRIM], min_bs);
 }
 
-static inline int td_async_processing(struct thread_data *td)
+static inline bool td_async_processing(struct thread_data *td)
 {
        return (td->flags & TD_F_NEED_LOCK) != 0;
 }
@@ -703,6 +705,24 @@ static inline void td_io_u_free_notify(struct thread_data *td)
                pthread_cond_signal(&td->free_cond);
 }
 
+static inline void td_flags_clear(struct thread_data *td, unsigned int *flags,
+                                 unsigned int value)
+{
+       if (!td_async_processing(td))
+               *flags &= ~value;
+       else
+               __sync_fetch_and_and(flags, ~value);
+}
+
+static inline void td_flags_set(struct thread_data *td, unsigned int *flags,
+                               unsigned int value)
+{
+       if (!td_async_processing(td))
+               *flags |= value;
+       else
+               __sync_fetch_and_or(flags, value);
+}
+
 extern const char *fio_get_arch_string(int);
 extern const char *fio_get_os_string(int);