#include "arch.h"
#include "os.h"
+#ifdef FIO_HAVE_SYSLET
+#include "syslet.h"
+#endif
+
enum fio_ddir {
DDIR_READ = 0,
DDIR_WRITE,
struct list_head list;
struct fio_file *file;
unsigned long long offset;
- unsigned int len;
+ unsigned long len;
enum fio_ddir ddir;
};
+#ifdef FIO_HAVE_SYSLET
+struct syslet_req {
+ struct syslet_uatom atom;
+ long ret;
+};
+#endif
+
/*
* The io unit
*/
#endif
#ifdef FIO_HAVE_SGIO
struct sg_io_hdr hdr;
+#endif
+#ifdef FIO_HAVE_SYSLET
+ struct syslet_req req;
#endif
};
struct timeval start_time;
* Allocated/set buffer and length
*/
void *buf;
- unsigned int buflen;
+ unsigned long buflen;
unsigned long long offset;
/*
* partial transfers / residual data counts
*/
void *xfer_buf;
- unsigned int xfer_buflen;
+ unsigned long xfer_buflen;
unsigned int resid;
unsigned int error;
* How many depth levels to log
*/
#define FIO_IO_U_MAP_NR 8
+#define FIO_IO_U_LAT_NR 12
/*
* This describes a single thread/process executing a fio job.
*/
unsigned int cur_depth;
unsigned int io_u_map[FIO_IO_U_MAP_NR];
+ unsigned int io_u_lat[FIO_IO_U_LAT_NR];
unsigned long total_io_u;
struct list_head io_u_freelist;
struct list_head io_u_busylist;
#define for_each_file(td, f, i) \
for ((i) = 0, (f) = &(td)->files[0]; (i) < (int) (td)->nr_files; (i)++, (f)++)
+#define fio_assert(td, cond) do { \
+ if (!(cond)) { \
+ int *__foo = NULL; \
+ fprintf(stderr, "file:%s:%d, assert %s failed\n", __FILE__, __LINE__, #cond); \
+ (td)->runstate = TD_EXITED; \
+ (td)->error = EFAULT; \
+ *__foo = 0; \
+ } \
+} while (0)
+
#endif