File: options.h

package info (click to toggle)
fio 2.1.11-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,712 kB
  • ctags: 5,643
  • sloc: ansic: 44,396; sh: 1,489; python: 400; makefile: 342
file content (141 lines) | stat: -rw-r--r-- 3,985 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#ifndef FIO_OPTION_H
#define FIO_OPTION_H

#define FIO_MAX_OPTS		512

#include <string.h>
#include "parse.h"
#include "flist.h"

#define td_var_offset(var)	((size_t) &((struct thread_options *)0)->var)

int add_option(struct fio_option *);
void invalidate_profile_options(const char *);
extern char *exec_profile;

void add_opt_posval(const char *, const char *, const char *);
void del_opt_posval(const char *, const char *);
struct thread_data;
void fio_options_free(struct thread_data *);
char *get_name_idx(char *, int);
int set_name_idx(char *, char *, int);

extern struct fio_option fio_options[FIO_MAX_OPTS];

static inline int o_match(struct fio_option *o, const char *opt)
{
	if (!strcmp(o->name, opt))
		return 1;
	else if (o->alias && !strcmp(o->alias, opt))
		return 1;

	return 0;
}

static inline struct fio_option *find_option(struct fio_option *options,
					     const char *opt)
{
	struct fio_option *o;

	for (o = &options[0]; o->name; o++)
		if (o_match(o, opt))
			return o;

	return NULL;
}

struct opt_group {
	const char *name;
	unsigned int mask;
};

enum opt_category {
	__FIO_OPT_C_GENERAL	= 0,
	__FIO_OPT_C_IO,
	__FIO_OPT_C_FILE,
	__FIO_OPT_C_STAT,
	__FIO_OPT_C_LOG,
	__FIO_OPT_C_PROFILE,
	__FIO_OPT_C_ENGINE,
	__FIO_OPT_C_NR,

	FIO_OPT_C_GENERAL	= (1U << __FIO_OPT_C_GENERAL),
	FIO_OPT_C_IO		= (1U << __FIO_OPT_C_IO),
	FIO_OPT_C_FILE		= (1U << __FIO_OPT_C_FILE),
	FIO_OPT_C_STAT		= (1U << __FIO_OPT_C_STAT),
	FIO_OPT_C_LOG		= (1U << __FIO_OPT_C_LOG),
	FIO_OPT_C_PROFILE	= (1U << __FIO_OPT_C_PROFILE),
	FIO_OPT_C_ENGINE	= (1U << __FIO_OPT_C_ENGINE),
	FIO_OPT_C_INVALID	= (1U << __FIO_OPT_C_NR),
};

enum opt_category_group {
	__FIO_OPT_G_RATE	= 0,
	__FIO_OPT_G_ZONE,
	__FIO_OPT_G_RWMIX,
	__FIO_OPT_G_VERIFY,
	__FIO_OPT_G_TRIM,
	__FIO_OPT_G_IOLOG,
	__FIO_OPT_G_IO_DEPTH,
	__FIO_OPT_G_IO_FLOW,
	__FIO_OPT_G_DESC,
	__FIO_OPT_G_FILENAME,
	__FIO_OPT_G_IO_BASIC,
	__FIO_OPT_G_CGROUP,
	__FIO_OPT_G_RUNTIME,
	__FIO_OPT_G_PROCESS,
	__FIO_OPT_G_CRED,
	__FIO_OPT_G_CLOCK,
	__FIO_OPT_G_IO_TYPE,
	__FIO_OPT_G_THINKTIME,
	__FIO_OPT_G_RANDOM,
	__FIO_OPT_G_IO_BUF,
	__FIO_OPT_G_TIOBENCH,
	__FIO_OPT_G_ERR,
	__FIO_OPT_G_E4DEFRAG,
	__FIO_OPT_G_NETIO,
	__FIO_OPT_G_LIBAIO,
	__FIO_OPT_G_ACT,
	__FIO_OPT_G_LATPROF,
        __FIO_OPT_G_RBD,
        __FIO_OPT_G_GFAPI,
	__FIO_OPT_G_NR,

	FIO_OPT_G_RATE		= (1U << __FIO_OPT_G_RATE),
	FIO_OPT_G_ZONE		= (1U << __FIO_OPT_G_ZONE),
	FIO_OPT_G_RWMIX		= (1U << __FIO_OPT_G_RWMIX),
	FIO_OPT_G_VERIFY	= (1U << __FIO_OPT_G_VERIFY),
	FIO_OPT_G_TRIM		= (1U << __FIO_OPT_G_TRIM),
	FIO_OPT_G_IOLOG		= (1U << __FIO_OPT_G_IOLOG),
	FIO_OPT_G_IO_DEPTH	= (1U << __FIO_OPT_G_IO_DEPTH),
	FIO_OPT_G_IO_FLOW	= (1U << __FIO_OPT_G_IO_FLOW),
	FIO_OPT_G_DESC		= (1U << __FIO_OPT_G_DESC),
	FIO_OPT_G_FILENAME	= (1U << __FIO_OPT_G_FILENAME),
	FIO_OPT_G_IO_BASIC	= (1U << __FIO_OPT_G_IO_BASIC),
	FIO_OPT_G_CGROUP	= (1U << __FIO_OPT_G_CGROUP),
	FIO_OPT_G_RUNTIME	= (1U << __FIO_OPT_G_RUNTIME),
	FIO_OPT_G_PROCESS	= (1U << __FIO_OPT_G_PROCESS),
	FIO_OPT_G_CRED		= (1U << __FIO_OPT_G_CRED),
	FIO_OPT_G_CLOCK		= (1U << __FIO_OPT_G_CLOCK),
	FIO_OPT_G_IO_TYPE	= (1U << __FIO_OPT_G_IO_TYPE),
	FIO_OPT_G_THINKTIME	= (1U << __FIO_OPT_G_THINKTIME),
	FIO_OPT_G_RANDOM	= (1U << __FIO_OPT_G_RANDOM),
	FIO_OPT_G_IO_BUF	= (1U << __FIO_OPT_G_IO_BUF),
	FIO_OPT_G_TIOBENCH	= (1U << __FIO_OPT_G_TIOBENCH),
	FIO_OPT_G_ERR		= (1U << __FIO_OPT_G_ERR),
	FIO_OPT_G_E4DEFRAG	= (1U << __FIO_OPT_G_E4DEFRAG),
	FIO_OPT_G_NETIO		= (1U << __FIO_OPT_G_NETIO),
	FIO_OPT_G_LIBAIO	= (1U << __FIO_OPT_G_LIBAIO),
	FIO_OPT_G_ACT		= (1U << __FIO_OPT_G_ACT),
	FIO_OPT_G_LATPROF	= (1U << __FIO_OPT_G_LATPROF),
	FIO_OPT_G_RBD		= (1U << __FIO_OPT_G_RBD),
	FIO_OPT_G_GFAPI		= (1U << __FIO_OPT_G_GFAPI),
	FIO_OPT_G_INVALID	= (1U << __FIO_OPT_G_NR),
};

extern struct opt_group *opt_group_from_mask(unsigned int *mask);
extern struct opt_group *opt_group_cat_from_mask(unsigned int *mask);
extern struct fio_option *fio_option_find(const char *name);
extern unsigned int fio_get_kb_base(void *);

#endif