Static error value checking
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index baaa9a8d51f57512d2a5ed062e12fa0d4cc658be..e6931619f64373abd06c9792d227d3549baef851 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -225,6 +225,31 @@ struct fio_file {
        unsigned int unlink;
 };
 
+struct thread_stat {
+       struct io_log *slat_log;
+       struct io_log *clat_log;
+       struct io_log *bw_log;
+
+       /*
+        * bandwidth and latency stats
+        */
+       struct io_stat clat_stat[2];            /* completion latency */
+       struct io_stat slat_stat[2];            /* submission latency */
+       struct io_stat bw_stat[2];              /* bandwidth stats */
+
+       unsigned long long stat_io_bytes[2];
+       struct timeval stat_sample_time[2];
+
+       /*
+        * fio system usage accounting
+        */
+       struct rusage ru_start;
+       struct rusage ru_end;
+       unsigned long usr_time;
+       unsigned long sys_time;
+       unsigned long ctx;
+};
+
 /*
  * How many depth levels to log
  */
@@ -243,6 +268,7 @@ struct thread_data {
        pthread_t thread;
        int thread_number;
        int groupid;
+       struct thread_stat ts;
        enum fio_filetype filetype;
        struct fio_file *files;
        unsigned int nr_files;
@@ -299,6 +325,7 @@ struct thread_data {
        unsigned int stonewall;
        unsigned int numjobs;
        unsigned int iodepth;
+       unsigned int iodepth_low;
        os_cpu_mask_t cpumask;
        unsigned int iolog;
        unsigned int read_iolog;
@@ -357,8 +384,8 @@ struct thread_data {
        unsigned long io_issues[2];
        unsigned long long io_blocks[2];
        unsigned long long io_bytes[2];
-       unsigned long long zone_bytes;
        unsigned long long this_io_bytes[2];
+       unsigned long long zone_bytes;
        volatile int mutex;
 
        /*
@@ -372,33 +399,10 @@ struct thread_data {
        unsigned int cpuload;
        unsigned int cpucycle;
 
-       /*
-        * bandwidth and latency stats
-        */
-       struct io_stat clat_stat[2];            /* completion latency */
-       struct io_stat slat_stat[2];            /* submission latency */
-       struct io_stat bw_stat[2];              /* bandwidth stats */
-
-       unsigned long long stat_io_bytes[2];
-       struct timeval stat_sample_time[2];
-
-       struct io_log *slat_log;
-       struct io_log *clat_log;
-       struct io_log *bw_log;
-
        struct timeval start;   /* start of this loop */
        struct timeval epoch;   /* time job was started */
        struct timeval end_time;/* time job ended */
 
-       /*
-        * fio system usage accounting
-        */
-       struct rusage ru_start;
-       struct rusage ru_end;
-       unsigned long usr_time;
-       unsigned long sys_time;
-       unsigned long ctx;
-
        /*
         * read/write mixed workload state
         */
@@ -562,9 +566,9 @@ extern int init_random_state(struct thread_data *);
  * File setup/shutdown
  */
 extern void close_files(struct thread_data *);
-extern int setup_files(struct thread_data *);
-extern int open_files(struct thread_data *);
-extern int file_invalidate_cache(struct thread_data *, struct fio_file *);
+extern int __must_check setup_files(struct thread_data *);
+extern int __must_check open_files(struct thread_data *);
+extern int __must_check file_invalidate_cache(struct thread_data *, struct fio_file *);
 
 /*
  * ETA/status stuff
@@ -593,15 +597,15 @@ enum {
  * Verify helpers
  */
 extern void populate_verify_io_u(struct thread_data *, struct io_u *);
-extern int get_next_verify(struct thread_data *td, struct io_u *);
-extern int verify_io_u(struct io_u *);
+extern int __must_check get_next_verify(struct thread_data *td, struct io_u *);
+extern int __must_check verify_io_u(struct io_u *);
 
 /*
  * Memory helpers
  */
-extern int fio_pin_memory(void);
+extern int __must_check fio_pin_memory(void);
 extern void fio_unpin_memory(void);
-extern int allocate_io_mem(struct thread_data *);
+extern int __must_check allocate_io_mem(struct thread_data *);
 extern void free_io_mem(struct thread_data *);
 
 /*
@@ -609,21 +613,22 @@ extern void free_io_mem(struct thread_data *);
  */
 #define queue_full(td) list_empty(&(td)->io_u_freelist)
 extern struct io_u *__get_io_u(struct thread_data *);
-extern struct io_u *get_io_u(struct thread_data *, struct fio_file *);
+extern struct io_u *get_io_u(struct thread_data *);
 extern void put_io_u(struct thread_data *, struct io_u *);
 extern void requeue_io_u(struct thread_data *, struct io_u **);
-extern long io_u_sync_complete(struct thread_data *, struct io_u *, endio_handler *);
-extern long io_u_queued_complete(struct thread_data *, int, endio_handler *);
+extern long __must_check io_u_sync_complete(struct thread_data *, struct io_u *, endio_handler *);
+extern long __must_check io_u_queued_complete(struct thread_data *, int, endio_handler *);
+extern void io_u_queued(struct thread_data *, struct io_u *);
 
 /*
  * io engine entry points
  */
-extern int td_io_init(struct thread_data *);
-extern int td_io_prep(struct thread_data *, struct io_u *);
-extern int td_io_queue(struct thread_data *, struct io_u *);
-extern int td_io_sync(struct thread_data *, struct fio_file *);
-extern int td_io_getevents(struct thread_data *, int, int, struct timespec *);
-extern int td_io_commit(struct thread_data *);
+extern int __must_check td_io_init(struct thread_data *);
+extern int __must_check td_io_prep(struct thread_data *, struct io_u *);
+extern int __must_check td_io_queue(struct thread_data *, struct io_u *);
+extern int __must_check td_io_sync(struct thread_data *, struct fio_file *);
+extern int __must_check td_io_getevents(struct thread_data *, int, int, struct timespec *);
+extern int __must_check td_io_commit(struct thread_data *);
 
 /*
  * This is a pretty crappy semaphore implementation, but with the use that fio
@@ -680,7 +685,7 @@ struct ioengine_ops {
 #define FIO_IOOPS_VERSION      5
 
 extern struct ioengine_ops *load_ioengine(struct thread_data *, const char *);
-extern int register_ioengine(struct ioengine_ops *);
+extern void register_ioengine(struct ioengine_ops *);
 extern void unregister_ioengine(struct ioengine_ops *);
 extern void close_ioengine(struct thread_data *);