parse.h revision f90eff5a414f6e8c16a51c3a7d9b5e077ab49aac
1e1f365035a952233463d85d659bd960ba78f012eJens Axboe#ifndef FIO_PARSE_H
2e1f365035a952233463d85d659bd960ba78f012eJens Axboe#define FIO_PARSE_H
3e1f365035a952233463d85d659bd960ba78f012eJens Axboe
4e1f365035a952233463d85d659bd960ba78f012eJens Axboe/*
5e1f365035a952233463d85d659bd960ba78f012eJens Axboe * Option types
6e1f365035a952233463d85d659bd960ba78f012eJens Axboe */
7e1f365035a952233463d85d659bd960ba78f012eJens Axboeenum fio_opt_type {
8e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR = 0,
9e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR_VAL,
1075e6f36fae06978f29296fce76a7f00ca0df7b56Jens Axboe	FIO_OPT_STR_VAL_INT,
11e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR_VAL_TIME,
12e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR_STORE,
13e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_RANGE,
14e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_INT,
15e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR_SET,
16e1f365035a952233463d85d659bd960ba78f012eJens Axboe};
17e1f365035a952233463d85d659bd960ba78f012eJens Axboe
18e1f365035a952233463d85d659bd960ba78f012eJens Axboe/*
19e1f365035a952233463d85d659bd960ba78f012eJens Axboe * Option define
20e1f365035a952233463d85d659bd960ba78f012eJens Axboe */
21e1f365035a952233463d85d659bd960ba78f012eJens Axboestruct fio_option {
22e1f365035a952233463d85d659bd960ba78f012eJens Axboe	char *name;
23e1f365035a952233463d85d659bd960ba78f012eJens Axboe	enum fio_opt_type type;
24e1f365035a952233463d85d659bd960ba78f012eJens Axboe	unsigned int off1;
25e1f365035a952233463d85d659bd960ba78f012eJens Axboe	unsigned int off2;
26f90eff5a414f6e8c16a51c3a7d9b5e077ab49aacJens Axboe	unsigned int off3;
27f90eff5a414f6e8c16a51c3a7d9b5e077ab49aacJens Axboe	unsigned int off4;
28e1f365035a952233463d85d659bd960ba78f012eJens Axboe	unsigned int max_val;
29e1f365035a952233463d85d659bd960ba78f012eJens Axboe	void *cb;
30e1f365035a952233463d85d659bd960ba78f012eJens Axboe};
31e1f365035a952233463d85d659bd960ba78f012eJens Axboe
32e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (str_cb_fn)(void *, char *);
33e1f365035a952233463d85d659bd960ba78f012eJens Axboe
34e1f365035a952233463d85d659bd960ba78f012eJens Axboeextern int parse_option(const char *, struct fio_option *, void *);
35b46928282e0a890f49250e79b81af773a2b7108fJens Axboeextern int parse_cmd_option(const char *t, const char *l, struct fio_option *, void *);
36e1f365035a952233463d85d659bd960ba78f012eJens Axboe
37e1f365035a952233463d85d659bd960ba78f012eJens Axboeextern void strip_blank_front(char **);
38e1f365035a952233463d85d659bd960ba78f012eJens Axboeextern void strip_blank_end(char *);
39e1f365035a952233463d85d659bd960ba78f012eJens Axboe
40e1f365035a952233463d85d659bd960ba78f012eJens Axboe/*
41e1f365035a952233463d85d659bd960ba78f012eJens Axboe * Handlers for the options
42e1f365035a952233463d85d659bd960ba78f012eJens Axboe */
43b46928282e0a890f49250e79b81af773a2b7108fJens Axboetypedef int (fio_opt_str_fn)(void *, const char *);
44e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (fio_opt_str_val_fn)(void *, unsigned long long *);
45e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (fio_opt_int_fn)(void *, unsigned int *);
46e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (fio_opt_str_set_fn)(void *);
47e1f365035a952233463d85d659bd960ba78f012eJens Axboe
48e1f365035a952233463d85d659bd960ba78f012eJens Axboe#define td_var(start, offset)	((void *) start + (offset))
49e1f365035a952233463d85d659bd960ba78f012eJens Axboe
50e1f365035a952233463d85d659bd960ba78f012eJens Axboe#endif
51