Add binject IO engine
[fio.git] / os / binject.h
CommitLineData
79a43187
JA
1#ifndef BINJECT_H
2#define BINJECT_H
3
4#include <linux/types.h>
5
6#define BINJECT_MAGIC 0x89
7#define BINJECT_VER 0x01
8#define BINJECT_MAGIC_SHIFT 8
9#define BINJECT_VER_MASK ((1 << BINJECT_MAGIC_SHIFT) - 1)
10
11struct b_user_cmd {
12 __u16 magic; /* INPUT */
13 __u16 type; /* INPUT */
14 __u32 error; /* OUTPUT */
15 __u32 flags; /* INPUT */
16 __u32 len; /* INPUT */
17 __u64 offset; /* INPUT */
18 __u64 buf; /* INPUT */
19 __u64 usr_ptr; /* PASSED THROUGH */
20 __u64 nsec; /* OUTPUT */
21};
22
23struct b_ioctl_cmd {
24 int fd;
25 int minor;
26};
27
28enum {
29 B_TYPE_READ = 0,
30 B_TYPE_WRITE,
31 B_TYPE_DISCARD,
32 B_TYPE_READVOID,
33 B_TYPE_WRITEZERO,
34 B_TYPE_NR
35};
36
37enum {
38 __B_FLAG_SYNC = 0,
39 __B_FLAG_UNPLUG,
40 __B_FLAG_NOIDLE,
41 __B_FLAG_BARRIER,
42 __B_FLAG_META,
43 __B_FLAG_RAHEAD,
44 __B_FLAG_FAILFAST_DEV,
45 __B_FLAG_FAILFAST_TRANSPORT,
46 __B_FLAG_FAILFAST_DRIVER,
47 __B_FLAG_NR,
48
49 B_FLAG_SYNC = 1 << __B_FLAG_SYNC,
50 B_FLAG_UNPLUG = 1 << __B_FLAG_UNPLUG,
51 B_FLAG_NOIDLE = 1 << __B_FLAG_NOIDLE,
52 B_FLAG_BARRIER = 1 << __B_FLAG_BARRIER,
53 B_FLAG_META = 1 << __B_FLAG_META,
54 B_FLAG_RAHEAD = 1 << __B_FLAG_RAHEAD,
55 B_FLAG_FAILFAST_DEV = 1 << __B_FLAG_FAILFAST_DEV,
56 B_FLAG_FAILFAST_TRANSPORT = 1 << __B_FLAG_FAILFAST_TRANSPORT,
57 B_FLAG_FAILFAST_DRIVER = 1 << __B_FLAG_FAILFAST_DRIVER,
58};
59
60static inline void binject_buc_set_magic(struct b_user_cmd *buc)
61{
62 buc->magic = (BINJECT_MAGIC << BINJECT_MAGIC_SHIFT) | BINJECT_VER;
63}
64
65#endif