Commit | Line | Data |
---|---|---|
9f988e2e JA |
1 | #ifndef FIO_OPTION_H |
2 | #define FIO_OPTION_H | |
3 | ||
07b3232d JA |
4 | #define FIO_MAX_OPTS 512 |
5 | ||
f5b6bb85 | 6 | #include <string.h> |
9f988e2e JA |
7 | #include "parse.h" |
8 | #include "flist.h" | |
9 | ||
10 | #define td_var_offset(var) ((size_t) &((struct thread_options *)0)->var) | |
11 | ||
07b3232d JA |
12 | int add_option(struct fio_option *); |
13 | void invalidate_profile_options(const char *); | |
14 | extern char *exec_profile; | |
9f988e2e | 15 | |
f5b6bb85 JA |
16 | void add_opt_posval(const char *, const char *, const char *); |
17 | void del_opt_posval(const char *, const char *); | |
7e356b2d JA |
18 | struct thread_data; |
19 | void fio_options_free(struct thread_data *); | |
f5b6bb85 | 20 | |
9af4a244 JA |
21 | extern struct fio_option fio_options[FIO_MAX_OPTS]; |
22 | ||
f5b6bb85 JA |
23 | static inline int o_match(struct fio_option *o, const char *opt) |
24 | { | |
25 | if (!strcmp(o->name, opt)) | |
26 | return 1; | |
27 | else if (o->alias && !strcmp(o->alias, opt)) | |
28 | return 1; | |
29 | ||
30 | return 0; | |
31 | } | |
32 | ||
33 | static inline struct fio_option *find_option(struct fio_option *options, | |
34 | const char *opt) | |
35 | { | |
36 | struct fio_option *o; | |
37 | ||
38 | for (o = &options[0]; o->name; o++) | |
39 | if (o_match(o, opt)) | |
40 | return o; | |
41 | ||
42 | return NULL; | |
43 | } | |
44 | ||
9af4a244 JA |
45 | struct opt_group { |
46 | const char *name; | |
47 | unsigned int mask; | |
48 | }; | |
49 | ||
50 | enum opt_category { | |
51 | __FIO_OPT_G_DESC = 0, | |
52 | __FIO_OPT_G_FILE = 1, | |
53 | __FIO_OPT_G_MISC = 2, | |
54 | __FIO_OPT_G_IO = 3, | |
55 | __FIO_OPT_G_IO_DDIR = 4, | |
56 | __FIO_OPT_G_IO_BUF = 5, | |
57 | __FIO_OPT_G_RAND = 6, | |
58 | __FIO_OPT_G_OS = 7, | |
59 | __FIO_OPT_G_MEM = 8, | |
60 | __FIO_OPT_G_VERIFY = 9, | |
61 | __FIO_OPT_G_CPU = 10, | |
62 | __FIO_OPT_G_LOG = 11, | |
63 | __FIO_OPT_G_ZONE = 12, | |
64 | __FIO_OPT_G_CACHE = 13, | |
65 | __FIO_OPT_G_STAT = 14, | |
66 | __FIO_OPT_G_ERR = 15, | |
67 | __FIO_OPT_G_JOB = 16, | |
68 | __FIO_OPT_G_NR = 17, | |
69 | ||
70 | FIO_OPT_G_DESC = (1U << __FIO_OPT_G_DESC), | |
71 | FIO_OPT_G_FILE = (1U << __FIO_OPT_G_FILE), | |
72 | FIO_OPT_G_MISC = (1U << __FIO_OPT_G_MISC), | |
73 | FIO_OPT_G_IO = (1U << __FIO_OPT_G_IO), | |
74 | FIO_OPT_G_IO_DDIR = (1U << __FIO_OPT_G_IO_DDIR), | |
75 | FIO_OPT_G_IO_BUF = (1U << __FIO_OPT_G_IO_BUF), | |
76 | FIO_OPT_G_RAND = (1U << __FIO_OPT_G_RAND), | |
77 | FIO_OPT_G_OS = (1U << __FIO_OPT_G_OS), | |
78 | FIO_OPT_G_MEM = (1U << __FIO_OPT_G_MEM), | |
79 | FIO_OPT_G_VERIFY = (1U << __FIO_OPT_G_VERIFY), | |
80 | FIO_OPT_G_CPU = (1U << __FIO_OPT_G_CPU), | |
81 | FIO_OPT_G_LOG = (1U << __FIO_OPT_G_LOG), | |
82 | FIO_OPT_G_ZONE = (1U << __FIO_OPT_G_ZONE), | |
83 | FIO_OPT_G_CACHE = (1U << __FIO_OPT_G_CACHE), | |
84 | FIO_OPT_G_STAT = (1U << __FIO_OPT_G_STAT), | |
85 | FIO_OPT_G_ERR = (1U << __FIO_OPT_G_ERR), | |
86 | FIO_OPT_G_JOB = (1U << __FIO_OPT_G_JOB), | |
87 | FIO_OPT_G_INVALID = (1U << __FIO_OPT_G_NR), | |
88 | }; | |
89 | ||
90 | extern struct opt_group *opt_group_from_mask(unsigned int *mask); | |
91 | ||
9f988e2e | 92 | #endif |