Add binject IO engine
[fio.git] / os / binject.h
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
11 struct 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
23 struct b_ioctl_cmd {
24         int fd;
25         int minor;
26 };
27
28 enum {
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
37 enum {
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
60 static 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