binject updates
[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_READBARRIER,
35         B_TYPE_WRITEBARRIER,
36         B_TYPE_NR
37 };
38
39 enum {
40         __B_FLAG_SYNC   = 0,
41         __B_FLAG_UNPLUG,
42         __B_FLAG_NOIDLE,
43         __B_FLAG_BARRIER,
44         __B_FLAG_META,
45         __B_FLAG_RAHEAD,
46         __B_FLAG_FAILFAST_DEV,
47         __B_FLAG_FAILFAST_TRANSPORT,
48         __B_FLAG_FAILFAST_DRIVER,
49         __B_FLAG_NR,
50
51         B_FLAG_SYNC                     = 1 << __B_FLAG_SYNC,
52         B_FLAG_UNPLUG                   = 1 << __B_FLAG_UNPLUG,
53         B_FLAG_NOIDLE                   = 1 << __B_FLAG_NOIDLE,
54         B_FLAG_BARRIER                  = 1 << __B_FLAG_BARRIER,
55         B_FLAG_META                     = 1 << __B_FLAG_META,
56         B_FLAG_RAHEAD                   = 1 << __B_FLAG_RAHEAD,
57         B_FLAG_FAILFAST_DEV             = 1 << __B_FLAG_FAILFAST_DEV,
58         B_FLAG_FAILFAST_TRANSPORT       = 1 << __B_FLAG_FAILFAST_TRANSPORT,
59         B_FLAG_FAILFAST_DRIVER          = 1 << __B_FLAG_FAILFAST_DRIVER,
60 };
61
62 static inline void binject_buc_set_magic(struct b_user_cmd *buc)
63 {
64         buc->magic = (BINJECT_MAGIC << BINJECT_MAGIC_SHIFT) | BINJECT_VER;
65 }
66
67 #endif