[PATCH] Split status/eta code out of fio.c
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 915c0b5365417b33097accc8bcee8b14b37c5941..9471666b02b45cf7328637841e249636247f06c1 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -131,6 +131,7 @@ enum fio_ioengine_flags {
        FIO_SYNCIO      = 1 << 0,
        FIO_CPUIO       = 1 << 1,
        FIO_MMAPIO      = 1 << 2,
+       FIO_RAWIO       = 1 << 3,
 };
 
 struct fio_file {
@@ -150,6 +151,8 @@ struct fio_file {
 
        unsigned long *file_map;
        unsigned int num_maps;
+
+       int fileno;
 };
 
 /*
@@ -186,6 +189,7 @@ struct thread_data {
        unsigned char sync_io;
        unsigned char verify;
        unsigned char use_thread;
+       unsigned char unlink;
        unsigned char do_disk_util;
        unsigned char override_sync;
        unsigned char rand_repeatable;
@@ -423,10 +427,12 @@ extern int setup_rate(struct thread_data *);
 /*
  * Time functions
  */
+extern void time_init(void);
 extern unsigned long utime_since(struct timeval *, struct timeval *);
 extern unsigned long mtime_since(struct timeval *, struct timeval *);
 extern unsigned long mtime_since_now(struct timeval *);
 extern unsigned long time_since_now(struct timeval *);
+extern unsigned long mtime_since_genesis(void);
 extern void __usec_sleep(unsigned int);
 extern void usec_sleep(struct thread_data *, unsigned long);
 extern void rate_throttle(struct thread_data *, unsigned long, unsigned int);
@@ -443,6 +449,29 @@ extern int init_random_state(struct thread_data *);
 extern void close_files(struct thread_data *);
 extern int setup_files(struct thread_data *);
 
+/*
+ * ETA/status stuff
+ */
+extern void print_thread_status(void);
+extern void print_status_init(int);
+
+/*
+ * Thread life cycle. Once a thread has a runstate beyond TD_INITIALIZED, it
+ * will never back again. It may cycle between running/verififying/fsyncing.
+ * Once the thread reaches TD_EXITED, it is just waiting for the core to
+ * reap it.
+ */
+enum {
+       TD_NOT_CREATED = 0,
+       TD_CREATED,
+       TD_INITIALIZED,
+       TD_RUNNING,
+       TD_VERIFYING,
+       TD_FSYNCING,
+       TD_EXITED,
+       TD_REAPED,
+};
+
 /*
  * This is a pretty crappy semaphore implementation, but with the use that fio
  * has (just signalling start/go conditions), it doesn't have to be better.
@@ -504,6 +533,6 @@ extern void close_ioengine(struct thread_data *);
 #define fio_unused     __attribute((__unused__))
 
 #define for_each_file(td, f, i)        \
-       for ((i) = 0, (f) = &(td)->files[(i)]; (i) < (td)->nr_files; (i)++, (f) = &(td)->files[(i)])
+       for ((i) = 0, (f) = &(td)->files[0]; (i) < (td)->nr_files; (i)++, (f) = &(td)->files[(i)])
 
 #endif