Merge branch 'gfio' into gfio-int
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 2d752135cf030d2c6bd64f7cc04a66277fa86576..7d478a33b6a4299809691ccfa9e9db543947a072 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -20,7 +20,6 @@ struct thread_data;
 #include "thread_options.h"
 #include "flist.h"
 #include "fifo.h"
-#include "lib/rbtree.h"
 #include "arch/arch.h"
 #include "os/os.h"
 #include "mutex.h"
@@ -37,6 +36,7 @@ struct thread_data;
 #include "gettime.h"
 #include "lib/getopt.h"
 #include "lib/rand.h"
+#include "lib/rbtree.h"
 #include "client.h"
 #include "server.h"
 #include "stat.h"
@@ -113,10 +113,13 @@ struct thread_data {
        uint64_t stat_io_blocks[DDIR_RWDIR_CNT];
        struct timeval iops_sample_time;
 
+       volatile int update_rusage;
+       struct fio_mutex *rusage_sem;
        struct rusage ru_start;
        struct rusage ru_end;
 
        struct fio_file **files;
+       unsigned char *file_locks;
        unsigned int files_size;
        unsigned int files_index;
        unsigned int nr_open_files;
@@ -209,22 +212,22 @@ struct thread_data {
        /*
         * Rate state
         */
-       unsigned long long rate_bps[DDIR_RWDIR_CNT];
+       uint64_t rate_bps[DDIR_RWDIR_CNT];
        long rate_pending_usleep[DDIR_RWDIR_CNT];
        unsigned long rate_bytes[DDIR_RWDIR_CNT];
        unsigned long rate_blocks[DDIR_RWDIR_CNT];
        struct timeval lastrate[DDIR_RWDIR_CNT];
 
-       unsigned long long total_io_size;
-       unsigned long long fill_device_size;
+       uint64_t total_io_size;
+       uint64_t fill_device_size;
 
        unsigned long io_issues[DDIR_RWDIR_CNT];
-       unsigned long long io_blocks[DDIR_RWDIR_CNT];
-       unsigned long long this_io_blocks[DDIR_RWDIR_CNT];
-       unsigned long long io_bytes[DDIR_RWDIR_CNT];
-       unsigned long long io_skip_bytes;
-       unsigned long long this_io_bytes[DDIR_RWDIR_CNT];
-       unsigned long long zone_bytes;
+       uint64_t io_blocks[DDIR_RWDIR_CNT];
+       uint64_t this_io_blocks[DDIR_RWDIR_CNT];
+       uint64_t io_bytes[DDIR_RWDIR_CNT];
+       uint64_t io_skip_bytes;
+       uint64_t this_io_bytes[DDIR_RWDIR_CNT];
+       uint64_t zone_bytes;
        struct fio_mutex *mutex;
 
        /*
@@ -349,6 +352,7 @@ extern int temp_stall_ts;
 extern uintptr_t page_mask, page_size;
 extern int read_only;
 extern int eta_print;
+extern int eta_new_line;
 extern unsigned long done_secs;
 extern char *job_section;
 extern int fio_gtod_offload;
@@ -438,11 +442,11 @@ extern void fio_options_mem_dupe(struct thread_data *);
 extern void options_mem_dupe(void *data, struct fio_option *options);
 extern void td_fill_rand_seeds(struct thread_data *);
 extern void add_job_opts(const char **, int);
-extern char *num2str(unsigned long, int, int, int);
+extern char *num2str(unsigned long, int, int, int, int);
 extern int ioengine_load(struct thread_data *);
 
-extern unsigned long page_mask;
-extern unsigned long page_size;
+extern uintptr_t page_mask;
+extern uintptr_t page_size;
 extern int initialize_fio(char *envp[]);
 
 #define FIO_GETOPT_JOB         0x89000000
@@ -566,6 +570,14 @@ static inline int should_check_rate(struct thread_data *td,
        return ret;
 }
 
+static inline unsigned int td_max_bs(struct thread_data *td)
+{
+       unsigned int max_bs;
+
+       max_bs = max(td->o.max_bs[DDIR_READ], td->o.max_bs[DDIR_WRITE]);
+       return max(td->o.max_bs[DDIR_TRIM], max_bs);
+}
+
 static inline int is_power_of_2(unsigned int val)
 {
        return (val != 0 && ((val & (val - 1)) == 0));