blob: eb25c5002a8f623c9d63db8458120fb26d10c22c [file] [log] [blame]
Jens Axboed6aed792009-06-03 08:41:15 +02001#ifndef FIO_DDIR_H
2#define FIO_DDIR_H
3
4enum fio_ddir {
5 DDIR_READ = 0,
Shaohua Li6eaf09d2012-09-14 08:49:43 +02006 DDIR_WRITE = 1,
7 DDIR_TRIM = 2,
8 DDIR_RWDIR_CNT = 3,
9 DDIR_SYNC = 3,
Jens Axboe5f9099e2009-06-16 22:40:26 +020010 DDIR_DATASYNC,
Jens Axboe44f29692010-03-09 20:09:44 +010011 DDIR_SYNC_FILE_RANGE,
Glen Ogilvie457bf392009-11-03 21:52:36 +010012 DDIR_WAIT,
Jens Axboed6aed792009-06-03 08:41:15 +020013 DDIR_INVAL = -1,
14};
15
16enum td_ddir {
17 TD_DDIR_READ = 1 << 0,
18 TD_DDIR_WRITE = 1 << 1,
19 TD_DDIR_RAND = 1 << 2,
Shaohua Li6eaf09d2012-09-14 08:49:43 +020020 TD_DDIR_TRIM = 1 << 3,
Jens Axboed6aed792009-06-03 08:41:15 +020021 TD_DDIR_RW = TD_DDIR_READ | TD_DDIR_WRITE,
22 TD_DDIR_RANDREAD = TD_DDIR_READ | TD_DDIR_RAND,
23 TD_DDIR_RANDWRITE = TD_DDIR_WRITE | TD_DDIR_RAND,
24 TD_DDIR_RANDRW = TD_DDIR_RW | TD_DDIR_RAND,
Shaohua Li6eaf09d2012-09-14 08:49:43 +020025 TD_DDIR_RANDTRIM = TD_DDIR_TRIM | TD_DDIR_RAND,
Jens Axboed6aed792009-06-03 08:41:15 +020026};
27
Jens Axboe29c8e862009-06-05 22:10:51 +020028#define td_read(td) ((td)->o.td_ddir & TD_DDIR_READ)
29#define td_write(td) ((td)->o.td_ddir & TD_DDIR_WRITE)
Shaohua Li6eaf09d2012-09-14 08:49:43 +020030#define td_trim(td) ((td)->o.td_ddir & TD_DDIR_TRIM)
Jens Axboe29c8e862009-06-05 22:10:51 +020031#define td_rw(td) (((td)->o.td_ddir & TD_DDIR_RW) == TD_DDIR_RW)
32#define td_random(td) ((td)->o.td_ddir & TD_DDIR_RAND)
Jens Axboe7ebd7962012-11-28 21:24:46 +010033#define file_randommap(td, f) (!(td)->o.norandommap && (f)->io_axmap)
Jens Axboe29c8e862009-06-05 22:10:51 +020034
Jens Axboe5f9099e2009-06-16 22:40:26 +020035static inline int ddir_sync(enum fio_ddir ddir)
36{
Jens Axboe44f29692010-03-09 20:09:44 +010037 return ddir == DDIR_SYNC || ddir == DDIR_DATASYNC ||
38 ddir == DDIR_SYNC_FILE_RANGE;
Jens Axboe5f9099e2009-06-16 22:40:26 +020039}
40
Jens Axboeff58fce2010-08-25 12:02:08 +020041static inline int ddir_rw(enum fio_ddir ddir)
42{
Shaohua Li6eaf09d2012-09-14 08:49:43 +020043 return ddir == DDIR_READ || ddir == DDIR_WRITE || ddir == DDIR_TRIM;
Jens Axboeff58fce2010-08-25 12:02:08 +020044}
45
Jens Axboe77b640d2013-04-11 13:48:31 +020046static inline const char *ddir_str(enum td_ddir ddir)
Jens Axboe807f9972012-03-02 10:25:24 +010047{
48 const char *ddir_str[] = { NULL, "read", "write", "rw", NULL,
Jens Axboed79db122012-09-24 08:51:24 +020049 "randread", "randwrite", "randrw",
50 "trim", NULL, NULL, NULL, "randtrim" };
Jens Axboe807f9972012-03-02 10:25:24 +010051
52 return ddir_str[ddir];
53}
54
Shaohua Li6eaf09d2012-09-14 08:49:43 +020055#define ddir_trim(ddir) ((ddir) == DDIR_TRIM)
56
Jens Axboe342f4be2012-09-14 08:59:20 +020057#define ddir_rw_sum(arr) \
58 ((arr)[DDIR_READ] + (arr)[DDIR_WRITE] + (arr)[DDIR_TRIM])
59
Jens Axboed6aed792009-06-03 08:41:15 +020060#endif