Commit | Line | Data |
---|---|---|
d6aed795 JA |
1 | #ifndef FIO_DDIR_H |
2 | #define FIO_DDIR_H | |
3 | ||
4 | enum fio_ddir { | |
5 | DDIR_READ = 0, | |
6eaf09d6 SL |
6 | DDIR_WRITE = 1, |
7 | DDIR_TRIM = 2, | |
6eaf09d6 | 8 | DDIR_SYNC = 3, |
5f9099ea | 9 | DDIR_DATASYNC, |
44f29692 | 10 | DDIR_SYNC_FILE_RANGE, |
457bf399 | 11 | DDIR_WAIT, |
173375c2 | 12 | DDIR_LAST, |
d6aed795 | 13 | DDIR_INVAL = -1, |
e8a0b539 | 14 | DDIR_TIMEOUT = -2, |
d6aed795 | 15 | |
84a41a37 JA |
16 | DDIR_RWDIR_CNT = 3, |
17 | DDIR_RWDIR_SYNC_CNT = 4, | |
18 | }; | |
19 | ||
dde39f8c AD |
20 | #define for_each_rw_ddir(ddir) for (enum fio_ddir ddir = 0; ddir < DDIR_RWDIR_CNT; ddir++) |
21 | ||
173375c2 JA |
22 | static inline const char *io_ddir_name(enum fio_ddir ddir) |
23 | { | |
820ba1f9 JA |
24 | static const char *name[] = { "read", "write", "trim", "sync", |
25 | "datasync", "sync_file_range", | |
26 | "wait", }; | |
173375c2 | 27 | |
5ea6ec73 | 28 | if (ddir >= 0 && ddir < DDIR_LAST) |
173375c2 JA |
29 | return name[ddir]; |
30 | ||
31 | return "invalid"; | |
32 | } | |
33 | ||
d6aed795 JA |
34 | enum td_ddir { |
35 | TD_DDIR_READ = 1 << 0, | |
36 | TD_DDIR_WRITE = 1 << 1, | |
37 | TD_DDIR_RAND = 1 << 2, | |
6eaf09d6 | 38 | TD_DDIR_TRIM = 1 << 3, |
d6aed795 JA |
39 | TD_DDIR_RW = TD_DDIR_READ | TD_DDIR_WRITE, |
40 | TD_DDIR_RANDREAD = TD_DDIR_READ | TD_DDIR_RAND, | |
41 | TD_DDIR_RANDWRITE = TD_DDIR_WRITE | TD_DDIR_RAND, | |
42 | TD_DDIR_RANDRW = TD_DDIR_RW | TD_DDIR_RAND, | |
6eaf09d6 | 43 | TD_DDIR_RANDTRIM = TD_DDIR_TRIM | TD_DDIR_RAND, |
82a90686 | 44 | TD_DDIR_TRIMWRITE = TD_DDIR_TRIM | TD_DDIR_WRITE, |
c16dc793 | 45 | TD_DDIR_RANDTRIMWRITE = TD_DDIR_RANDTRIM | TD_DDIR_WRITE, |
d6aed795 JA |
46 | }; |
47 | ||
29c8e868 JA |
48 | #define td_read(td) ((td)->o.td_ddir & TD_DDIR_READ) |
49 | #define td_write(td) ((td)->o.td_ddir & TD_DDIR_WRITE) | |
6eaf09d6 | 50 | #define td_trim(td) ((td)->o.td_ddir & TD_DDIR_TRIM) |
29c8e868 JA |
51 | #define td_rw(td) (((td)->o.td_ddir & TD_DDIR_RW) == TD_DDIR_RW) |
52 | #define td_random(td) ((td)->o.td_ddir & TD_DDIR_RAND) | |
967d1b63 | 53 | #define file_randommap(td, f) (!(td)->o.norandommap && fio_file_axmap((f))) |
82a90686 JA |
54 | #define td_trimwrite(td) (((td)->o.td_ddir & TD_DDIR_TRIMWRITE) \ |
55 | == TD_DDIR_TRIMWRITE) | |
f9f1e137 VF |
56 | #define td_randtrimwrite(td) (((td)->o.td_ddir & TD_DDIR_RANDTRIMWRITE) \ |
57 | == TD_DDIR_RANDTRIMWRITE) | |
29c8e868 | 58 | |
5f9099ea JA |
59 | static inline int ddir_sync(enum fio_ddir ddir) |
60 | { | |
44f29692 JA |
61 | return ddir == DDIR_SYNC || ddir == DDIR_DATASYNC || |
62 | ddir == DDIR_SYNC_FILE_RANGE; | |
5f9099ea JA |
63 | } |
64 | ||
ff58fced JA |
65 | static inline int ddir_rw(enum fio_ddir ddir) |
66 | { | |
6eaf09d6 | 67 | return ddir == DDIR_READ || ddir == DDIR_WRITE || ddir == DDIR_TRIM; |
ff58fced JA |
68 | } |
69 | ||
77b640d8 | 70 | static inline const char *ddir_str(enum td_ddir ddir) |
807f9971 | 71 | { |
6d6a7e02 | 72 | static const char *__str[] = { NULL, "read", "write", "rw", "rand", |
42da5c8b | 73 | "randread", "randwrite", "randrw", |
c16dc793 JA |
74 | "trim", NULL, "trimwrite", NULL, "randtrim", |
75 | NULL, "randtrimwrite" }; | |
807f9971 | 76 | |
42da5c8b | 77 | return __str[ddir]; |
807f9971 JA |
78 | } |
79 | ||
342f4be4 JA |
80 | #define ddir_rw_sum(arr) \ |
81 | ((arr)[DDIR_READ] + (arr)[DDIR_WRITE] + (arr)[DDIR_TRIM]) | |
82 | ||
d6aed795 | 83 | #endif |