summaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2017-12-15 08:41:03 -0700
committerJens Axboe <axboe@kernel.dk>2017-12-15 08:41:03 -0700
commitc26438ad4a14ece7784c6952694d8984ce32bc1c (patch)
tree6856ebe5d67efabb03f5ebbf67eaaf896b709e59 /parse.c
parentdb37d89074ed204c9c2bd010e72f63dcf4725715 (diff)
downloadfio-c26438ad4a14ece7784c6952694d8984ce32bc1c.tar.gz
fio-c26438ad4a14ece7784c6952694d8984ce32bc1c.tar.bz2
parse: dump option type when using --debug=parse
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 <axboe@kernel.dk>
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/parse.c b/parse.c
index 68229d05..a9486de9 100644
--- a/parse.c
+++ b/parse.c
@@ -12,6 +12,7 @@
#include <math.h>
#include <float.h>
+#include "compiler/compiler.h"
#include "parse.h"
#include "debug.h"
#include "options.h"
@@ -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)
@@ -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)
{
@@ -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);