parse.h revision e1f365035a952233463d85d659bd960ba78f012e
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,
10e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR_VAL_TIME,
11e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR_STORE,
12e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_RANGE,
13e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_INT,
14e1f365035a952233463d85d659bd960ba78f012eJens Axboe	FIO_OPT_STR_SET,
15e1f365035a952233463d85d659bd960ba78f012eJens Axboe};
16e1f365035a952233463d85d659bd960ba78f012eJens Axboe
17e1f365035a952233463d85d659bd960ba78f012eJens Axboe/*
18e1f365035a952233463d85d659bd960ba78f012eJens Axboe * Option define
19e1f365035a952233463d85d659bd960ba78f012eJens Axboe */
20e1f365035a952233463d85d659bd960ba78f012eJens Axboestruct fio_option {
21e1f365035a952233463d85d659bd960ba78f012eJens Axboe	char *name;
22e1f365035a952233463d85d659bd960ba78f012eJens Axboe	enum fio_opt_type type;
23e1f365035a952233463d85d659bd960ba78f012eJens Axboe	unsigned int off1;
24e1f365035a952233463d85d659bd960ba78f012eJens Axboe	unsigned int off2;
25e1f365035a952233463d85d659bd960ba78f012eJens Axboe	unsigned int max_val;
26e1f365035a952233463d85d659bd960ba78f012eJens Axboe	void *cb;
27e1f365035a952233463d85d659bd960ba78f012eJens Axboe};
28e1f365035a952233463d85d659bd960ba78f012eJens Axboe
29e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (str_cb_fn)(void *, char *);
30e1f365035a952233463d85d659bd960ba78f012eJens Axboe
31e1f365035a952233463d85d659bd960ba78f012eJens Axboeextern int parse_option(const char *, struct fio_option *, void *);
32e1f365035a952233463d85d659bd960ba78f012eJens Axboe
33e1f365035a952233463d85d659bd960ba78f012eJens Axboeextern void strip_blank_front(char **);
34e1f365035a952233463d85d659bd960ba78f012eJens Axboeextern void strip_blank_end(char *);
35e1f365035a952233463d85d659bd960ba78f012eJens Axboe
36e1f365035a952233463d85d659bd960ba78f012eJens Axboe/*
37e1f365035a952233463d85d659bd960ba78f012eJens Axboe * Handlers for the options
38e1f365035a952233463d85d659bd960ba78f012eJens Axboe */
39e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (fio_opt_str_fn)(void *, char *);
40e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (fio_opt_str_val_fn)(void *, unsigned long long *);
41e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (fio_opt_int_fn)(void *, unsigned int *);
42e1f365035a952233463d85d659bd960ba78f012eJens Axboetypedef int (fio_opt_str_set_fn)(void *);
43e1f365035a952233463d85d659bd960ba78f012eJens Axboe
44e1f365035a952233463d85d659bd960ba78f012eJens Axboe#define td_var(start, offset)	((void *) start + (offset))
45e1f365035a952233463d85d659bd960ba78f012eJens Axboe
46e1f365035a952233463d85d659bd960ba78f012eJens Axboe#endif
47