Project

General

Profile

Statistics
| Revision:

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 */