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