root / lab4 / .minix-src / include / sys / ioc_fbd.h @ 14
History | View | Annotate | Download (1.82 KB)
1 |
/* sys/ioc_fbd.h - Faulty Block Device ioctl() command codes.
|
---|---|
2 |
*
|
3 |
*/
|
4 |
|
5 |
#ifndef _S_I_FBD_H
|
6 |
#define _S_I_FBD_H
|
7 |
|
8 |
/* FBD rule structure. */
|
9 |
|
10 |
typedef int fbd_rulenum_t; |
11 |
|
12 |
struct fbd_rule {
|
13 |
fbd_rulenum_t num; /* rule number (1-based) */
|
14 |
u64_t start; /* start position of area to match */
|
15 |
u64_t end; /* end position (exclusive) (0 = up to EOF) */
|
16 |
int flags; /* match read and/or write requests */ |
17 |
unsigned int skip; /* # matches to skip before activating */ |
18 |
unsigned int count; /* # times left to trigger (0 = no limit) */ |
19 |
int action; /* action type to perform when triggered */ |
20 |
|
21 |
union { /* action parameters */ |
22 |
struct {
|
23 |
int type; /* corruption type */ |
24 |
} corrupt; |
25 |
|
26 |
struct {
|
27 |
int code; /* error code to return (OK, EIO..) */ |
28 |
} error; |
29 |
|
30 |
struct {
|
31 |
u64_t start; /* start position of target area */
|
32 |
u64_t end; /* end position of area (excl) */
|
33 |
u32_t align; /* alignment to use in target area */
|
34 |
} misdir; |
35 |
|
36 |
struct {
|
37 |
u32_t lead; /* # bytes to process normally */
|
38 |
} losttorn; |
39 |
} params; |
40 |
}; |
41 |
|
42 |
/* Match flags. */
|
43 |
#define FBD_FLAG_READ 0x1 /* match read requests */ |
44 |
#define FBD_FLAG_WRITE 0x2 /* match write requests */ |
45 |
|
46 |
/* Action types. */
|
47 |
enum {
|
48 |
FBD_ACTION_CORRUPT, /* write or return corrupt data */
|
49 |
FBD_ACTION_ERROR, /* return an I/O error */
|
50 |
FBD_ACTION_MISDIR, /* perform a misdirected write */
|
51 |
FBD_ACTION_LOSTTORN /* perform a lost or torn write */
|
52 |
}; |
53 |
|
54 |
/* Corruption types. */
|
55 |
enum {
|
56 |
FBD_CORRUPT_ZERO, /* write or return ..zeroed data */
|
57 |
FBD_CORRUPT_PERSIST, /* ..consequently the same bad data */
|
58 |
FBD_CORRUPT_RANDOM /* ..new random data every time */
|
59 |
}; |
60 |
|
61 |
/* The I/O control requests. */
|
62 |
#define FBDCADDRULE _IOW('B', 1, struct fbd_rule) /* add a rule */ |
63 |
#define FBDCDELRULE _IOW('B', 2, fbd_rulenum_t) /* delete a rule */ |
64 |
#define FBDCGETRULE _IOWR('B', 3, struct fbd_rule) /* retrieve a rule */ |
65 |
|
66 |
#endif /* _S_I_FBD_H */ |