Make lib/num2str.c a stand-alone library by adding lib/num2str.h
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index df17074211a33e6beb08032b87de4335a9d7673a..b67613e6d10bdcb4309e9df6c14f7dbae9cc2f1e 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -25,7 +25,7 @@
 #include "debug.h"
 #include "file.h"
 #include "io_ddir.h"
-#include "ioengine.h"
+#include "ioengines.h"
 #include "iolog.h"
 #include "helpers.h"
 #include "options.h"
 #include "oslib/getopt.h"
 #include "lib/rand.h"
 #include "lib/rbtree.h"
+#include "lib/num2str.h"
 #include "client.h"
 #include "server.h"
 #include "stat.h"
 #include "flow.h"
+#include "io_u.h"
 #include "io_u_queue.h"
 #include "workqueue.h"
 #include "steadystate.h"
@@ -74,7 +76,7 @@ enum {
        TD_F_VER_NONE           = 1U << 5,
        TD_F_PROFILE_OPS        = 1U << 6,
        TD_F_COMPRESS           = 1U << 7,
-       TD_F_NOIO               = 1U << 8,
+       TD_F_RESERVED           = 1U << 8, /* not used */
        TD_F_COMPRESS_LOG       = 1U << 9,
        TD_F_VSTATE_SAVED       = 1U << 10,
        TD_F_NEED_LOCK          = 1U << 11,
@@ -99,6 +101,8 @@ enum {
        FIO_DEDUPE_OFF,
        FIO_RAND_POISSON_OFF,
        FIO_RAND_ZONE_OFF,
+       FIO_RAND_POISSON2_OFF,
+       FIO_RAND_POISSON3_OFF,
        FIO_RAND_NR_OFFS,
 };
 
@@ -121,7 +125,6 @@ enum {
  * Per-thread/process specific data. Only used for the network client
  * for now.
  */
-struct sk_out;
 void sk_out_assign(struct sk_out *);
 void sk_out_drop(void);
 
@@ -205,8 +208,6 @@ struct thread_data {
        void *iolog_buf;
        FILE *iolog_f;
 
-       char *sysfs_root;
-
        unsigned long rand_seeds[FIO_RAND_NR_OFFS];
 
        struct frand_state bsrange_state;
@@ -233,6 +234,7 @@ struct thread_data {
         * to any of the available IO engines.
         */
        struct ioengine_ops *io_ops;
+       int io_ops_init;
 
        /*
         * IO engine private data and dlhandle.
@@ -282,8 +284,8 @@ struct thread_data {
        unsigned long rate_blocks[DDIR_RWDIR_CNT];
        unsigned long long rate_io_issue_bytes[DDIR_RWDIR_CNT];
        struct timeval lastrate[DDIR_RWDIR_CNT];
-       int64_t last_usec;
-       struct frand_state poisson_state;
+       int64_t last_usec[DDIR_RWDIR_CNT];
+       struct frand_state poisson_state[DDIR_RWDIR_CNT];
 
        /*
         * Enforced rate submission/completion workqueue
@@ -492,7 +494,7 @@ static inline int should_fsync(struct thread_data *td)
 {
        if (td->last_was_sync)
                return 0;
-       if (td_write(td) || td_rw(td) || td->o.override_sync)
+       if (td_write(td) || td->o.override_sync)
                return 1;
 
        return 0;
@@ -518,11 +520,9 @@ extern int fio_show_option_help(const char *);
 extern void fio_options_set_ioengine_opts(struct option *long_options, struct thread_data *td);
 extern void fio_options_dup_and_init(struct option *);
 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 td_fill_verify_state_seed(struct thread_data *);
 extern void add_job_opts(const char **, int);
-extern char *num2str(uint64_t, int, int, int, int);
 extern int ioengine_load(struct thread_data *);
 extern bool parse_dryrun(void);
 extern int fio_running_or_pending_io_threads(void);
@@ -613,6 +613,11 @@ extern int __must_check allocate_io_mem(struct thread_data *);
 extern void free_io_mem(struct thread_data *);
 extern void free_threads_shm(void);
 
+#ifdef FIO_INTERNAL
+#define PTR_ALIGN(ptr, mask)   \
+       (char *) (((uintptr_t) (ptr) + (mask)) & ~(mask))
+#endif
+
 /*
  * Reset stats after ramp time completes
  */
@@ -637,6 +642,9 @@ extern void lat_target_check(struct thread_data *);
 extern void lat_target_init(struct thread_data *);
 extern void lat_target_reset(struct thread_data *);
 
+/*
+ * Iterates all threads/processes within all the defined jobs
+ */
 #define for_each_td(td, i)     \
        for ((i) = 0, (td) = &threads[0]; (i) < (int) thread_number; (i)++, (td)++)
 #define for_each_file(td, f, i)        \