X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=parse.h;h=d68484eaf0c65572352222297162ebd0d20cf7e7;hp=4de5e77d96dd5a5e27b624d950957c0bc42b9cd2;hb=79f488cbd95ca6989031a7ace5ec382313d31b3c;hpb=c47537ee91cd4f73e575c371c28ca2ac6babd2c1 diff --git a/parse.h b/parse.h index 4de5e77d..d68484ea 100644 --- a/parse.h +++ b/parse.h @@ -10,15 +10,18 @@ enum fio_opt_type { FIO_OPT_INVALID = 0, FIO_OPT_STR, + FIO_OPT_STR_ULL, FIO_OPT_STR_MULTI, FIO_OPT_STR_VAL, FIO_OPT_STR_VAL_TIME, FIO_OPT_STR_STORE, FIO_OPT_RANGE, FIO_OPT_INT, + FIO_OPT_ULL, FIO_OPT_BOOL, FIO_OPT_FLOAT_LIST, FIO_OPT_STR_SET, + FIO_OPT_STR_VAL_ZONE, FIO_OPT_DEPRECATED, FIO_OPT_SOFT_DEPRECATED, FIO_OPT_UNSUPPORTED, /* keep this last */ @@ -29,14 +32,14 @@ enum fio_opt_type { */ struct value_pair { const char *ival; /* string option */ - unsigned int oval; /* output value */ + unsigned long long oval;/* output value */ const char *help; /* help text for sub option */ int orval; /* OR value */ void *cb; /* sub-option callback */ }; -#define OPT_LEN_MAX 4096 -#define PARSE_MAX_VP 24 +#define OPT_LEN_MAX 8192 +#define PARSE_MAX_VP 32 /* * Option define @@ -52,7 +55,7 @@ struct fio_option { unsigned int off4; unsigned int off5; unsigned int off6; - unsigned int maxval; /* max and min value */ + unsigned long long maxval; /* max and min value */ int minval; double maxfp; /* max and min floating value */ double minfp; @@ -123,12 +126,23 @@ static inline void *td_var(void *to, const struct fio_option *o, else ret = to; - return ret + offset; + return (void *) ((uintptr_t) ret + offset); } static inline int parse_is_percent(unsigned long long val) { - return val <= -1ULL && val >= (-1ULL - 100ULL); + return val >= -101ULL; +} + +#define ZONE_BASE_VAL ((-1ULL >> 1) + 1) +static inline int parse_is_percent_uncapped(unsigned long long val) +{ + return ZONE_BASE_VAL + -1U < val; +} + +static inline int parse_is_zone(unsigned long long val) +{ + return (val - ZONE_BASE_VAL) <= -1U; } struct print_option {