X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=options.c;h=da9d0be464274fdf02fc6a6467857978ac5f1a31;hp=6cfd80d14fac4c8abeff89bd49eab731fdfd1b8f;hb=07b3232de97ac32a873f0b5d17c8f49c18ed3ae7;hpb=9f81736c7531e002038621577d5ffea571649bd7 diff --git a/options.c b/options.c index 6cfd80d1..da9d0be4 100644 --- a/options.c +++ b/options.c @@ -16,8 +16,6 @@ #include "lib/fls.h" #include "options.h" -static FLIST_HEAD(ext_opt_list); - /* * Check if mmap/mmaphuge has a :/foo/bar/file at the end. If so, return that. */ @@ -736,7 +734,7 @@ static int kb_base_verify(struct fio_option *o, void *data) /* * Map of job/command line options */ -static struct fio_option options[] = { +static struct fio_option options[FIO_MAX_OPTS] = { { .name = "description", .type = FIO_OPT_STR_STORE, @@ -1774,8 +1772,6 @@ static void add_to_lopt(struct option *lopt, struct fio_option *o) void fio_options_dup_and_init(struct option *long_options) { struct fio_option *o; - struct ext_option *eo; - struct flist_head *n; unsigned int i; options_init(options); @@ -1792,13 +1788,6 @@ void fio_options_dup_and_init(struct option *long_options) o++; assert(i < FIO_NR_OPTIONS); } - - flist_for_each(n, &ext_opt_list) { - eo = flist_entry(n, struct ext_option, list); - add_to_lopt(&long_options[i], &eo->o); - i++; - assert(i < FIO_NR_OPTIONS); - } } struct fio_keyword { @@ -1955,7 +1944,7 @@ int fio_options_parse(struct thread_data *td, char **opts, int num_opts) for (ret = 0, i = 0; i < num_opts; i++) { opts[i] = fio_keyword_replace(opts[i]); - ret |= parse_option(opts[i], options, &ext_opt_list, td); + ret |= parse_option(opts[i], options, td); } return ret; @@ -1963,7 +1952,7 @@ int fio_options_parse(struct thread_data *td, char **opts, int num_opts) int fio_cmd_option_parse(struct thread_data *td, const char *opt, char *val) { - return parse_cmd_option(opt, val, options, &ext_opt_list, td); + return parse_cmd_option(opt, val, options, td); } void fio_fill_default_options(struct thread_data *td) @@ -1973,7 +1962,7 @@ void fio_fill_default_options(struct thread_data *td) int fio_show_option_help(const char *opt) { - return show_cmd_help(options, &ext_opt_list, opt); + return show_cmd_help(options, opt); } static void __options_mem(struct thread_data *td, int alloc) @@ -2027,23 +2016,31 @@ unsigned int fio_get_kb_base(void *data) return kb_base; } -void register_ext_option(struct ext_option *eopt) +int add_option(struct fio_option *o) { - dprint(FD_PARSE, "register option '%s'\n", eopt->o.name); - option_init(&eopt->o); - flist_add_tail(&eopt->list, &ext_opt_list); + struct fio_option *__o; + int opt_index = 0; + + __o = options; + while (__o->name) { + opt_index++; + __o++; + } + + memcpy(&options[opt_index], o, sizeof(*o)); + return 0; } -void prune_profile_options(const char *prof_name) +void invalidate_profile_options(const char *prof_name) { - struct ext_option *eo; - struct flist_head *n, *tmp; + struct fio_option *o; - flist_for_each_safe(n, tmp, &ext_opt_list) { - eo = flist_entry(n, struct ext_option, list); - if (strcmp(eo->prof_name, prof_name)) - continue; - flist_del(&eo->list); - free(eo); + o = options; + while (o->name) { + if (o->prof_name && !strcmp(o->prof_name, prof_name)) { + o->type = FIO_OPT_INVALID; + o->prof_name = NULL; + } + o++; } }