Add check for pipe/fifo files
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 1e63f3b63747b761a75c854e2ec79bf0ac5cdd94..7ac5734308bff9d72bfa2b2a8c6b93844fdb994c 100644 (file)
--- a/fio.h
+++ b/fio.h
 #include <string.h>
 #include <getopt.h>
 
+#include "compiler/compiler.h"
 #include "list.h"
 #include "rbtree.h"
 #include "md5.h"
 #include "crc32.h"
-#include "arch.h"
-#include "os.h"
+#include "arch/arch.h"
+#include "os/os.h"
 #include "mutex.h"
 
 #ifdef FIO_HAVE_SYSLET
@@ -223,6 +224,7 @@ enum fio_filetype {
        FIO_TYPE_FILE = 1,              /* plain file */
        FIO_TYPE_BD,                    /* block device */
        FIO_TYPE_CHAR,                  /* character device */
+       FIO_TYPE_PIPE,                  /* pipe */
 };
 
 enum fio_ioengine_flags {
@@ -240,6 +242,8 @@ enum fio_file_flags {
        FIO_FILE_EXISTS         = 1 << 3,       /* file there */
        FIO_FILE_EXTEND         = 1 << 4,       /* needs extend */
        FIO_FILE_NOSORT         = 1 << 5,       /* don't sort verify blocks */
+       FIO_FILE_DONE           = 1 << 6,       /* io completed to this file */
+       FIO_SIZE_KNOWN          = 1 << 7,       /* size has been set */
 };
 
 /*
@@ -446,6 +450,7 @@ struct thread_data {
        struct fio_file *files;
        unsigned int files_index;
        unsigned int nr_open_files;
+       unsigned int nr_done_files;
        unsigned int nr_normal_files;
        union {
                unsigned int next_file;
@@ -643,8 +648,9 @@ struct disk_util {
        struct list_head list;
 
        char *name;
+       char *sysfs_root;
        char path[256];
-       dev_t dev;
+       int major, minor;
 
        struct disk_util_stat dus;
        struct disk_util_stat last_dus;
@@ -742,6 +748,21 @@ extern void dup_files(struct thread_data *, struct thread_data *);
 extern void print_thread_status(void);
 extern void print_status_init(int);
 
+/*
+ * disk util stuff
+ */
+#ifdef FIO_HAVE_DISK_UTIL
+extern void show_disk_util(void);
+extern void disk_util_timer_arm(void);
+extern void init_disk_util(struct thread_data *);
+extern void update_io_ticks(void);
+#else
+#define show_disk_util()
+#define disk_util_timer_arm()
+#define init_disk_util(td)
+#define update_io_ticks()
+#endif
+
 /*
  * Thread life cycle. Once a thread has a runstate beyond TD_INITIALIZED, it
  * will never back again. It may cycle between running/verififying/fsyncing.
@@ -836,7 +857,7 @@ struct ioengine_ops {
        void *dlhandle;
 };
 
-#define FIO_IOOPS_VERSION      6
+#define FIO_IOOPS_VERSION      7
 
 extern struct ioengine_ops *load_ioengine(struct thread_data *, const char *);
 extern void register_ioengine(struct ioengine_ops *);
@@ -865,4 +886,10 @@ extern void close_ioengine(struct thread_data *);
        }       \
 } while (0)
 
+static inline void clear_error(struct thread_data *td)
+{
+       td->error = 0;
+       td->verror[0] = '\0';
+}
+
 #endif