Skip to content

Commit

Permalink
parse: dump option type when using --debug=parse
Browse files Browse the repository at this point in the history
Currently we do things like:

parse    8731  __handle_option=dummy, type=10, ptr=1

for the debug parsing, and then you have to look up what that
option type is. Add names to them so we get the below instead:

parse    9170  __handle_option=dummy, type=OPT_STR_SET, ptr=1

Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
axboe committed Dec 15, 2017
1 parent db37d89 commit c26438a
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 8 deletions.
5 changes: 5 additions & 0 deletions compiler/compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,9 @@

#endif

#ifdef FIO_INTERNAL
#define ARRAY_SIZE(x) (sizeof((x)) / (sizeof((x)[0])))
#define FIELD_SIZE(s, f) (sizeof(((typeof(s))0)->f))
#endif

#endif
5 changes: 0 additions & 5 deletions fio.h
Original file line number Diff line number Diff line change
Expand Up @@ -800,11 +800,6 @@ static inline void td_flags_set(struct thread_data *td, unsigned int *flags,
extern const char *fio_get_arch_string(int);
extern const char *fio_get_os_string(int);

#ifdef FIO_INTERNAL
#define ARRAY_SIZE(x) (sizeof((x)) / (sizeof((x)[0])))
#define FIELD_SIZE(s, f) (sizeof(((typeof(s))0)->f))
#endif

enum {
__FIO_OUTPUT_TERSE = 0,
__FIO_OUTPUT_JSON = 1,
Expand Down
32 changes: 30 additions & 2 deletions parse.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <math.h>
#include <float.h>

#include "compiler/compiler.h"
#include "parse.h"
#include "debug.h"
#include "options.h"
Expand All @@ -24,6 +25,22 @@
#include "y.tab.h"
#endif

static const char *opt_type_names[] = {
"OPT_INVALID",
"OPT_STR",
"OPT_STR_MULTI",
"OPT_STR_VAL",
"OPT_STR_VAL_TIME",
"OPT_STR_STORE",
"OPT_RANGE",
"OPT_INT",
"OPT_BOOL",
"OPT_FLOAT_LIST",
"OPT_STR_SET",
"OPT_DEPRECATED",
"OPT_UNSUPPORTED",
};

static struct fio_option *__fio_options;

static int vp_cmp(const void *p1, const void *p2)
Expand Down Expand Up @@ -469,6 +486,17 @@ static int str_match_len(const struct value_pair *vp, const char *str)
*ptr = (val); \
} while (0)

static const char *opt_type_name(struct fio_option *o)
{
compiletime_assert(ARRAY_SIZE(opt_type_names) - 1 == FIO_OPT_UNSUPPORTED,
"opt_type_names[] index");

if (o->type >= 0 && o->type <= FIO_OPT_UNSUPPORTED)
return opt_type_names[o->type];

return "OPT_UNKNOWN?";
}

static int __handle_option(struct fio_option *o, const char *ptr, void *data,
int first, int more, int curr)
{
Expand All @@ -483,8 +511,8 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
struct value_pair posval[PARSE_MAX_VP];
int i, all_skipped = 1;

dprint(FD_PARSE, "__handle_option=%s, type=%d, ptr=%s\n", o->name,
o->type, ptr);
dprint(FD_PARSE, "__handle_option=%s, type=%s, ptr=%s\n", o->name,
opt_type_name(o), ptr);

if (!ptr && o->type != FIO_OPT_STR_SET && o->type != FIO_OPT_STR) {
log_err("Option %s requires an argument\n", o->name);
Expand Down
2 changes: 1 addition & 1 deletion parse.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ enum fio_opt_type {
FIO_OPT_FLOAT_LIST,
FIO_OPT_STR_SET,
FIO_OPT_DEPRECATED,
FIO_OPT_UNSUPPORTED,
FIO_OPT_UNSUPPORTED, /* keep this last */
};

/*
Expand Down

0 comments on commit c26438a

Please sign in to comment.