diff options
Diffstat (limited to 'tools/perf/util/parse-options.c')
-rw-r--r-- | tools/perf/util/parse-options.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c index ed887642460c..b05d51df2ce7 100644 --- a/tools/perf/util/parse-options.c +++ b/tools/perf/util/parse-options.c | |||
@@ -60,6 +60,7 @@ static int get_value(struct parse_opt_ctx_t *p, | |||
60 | case OPTION_STRING: | 60 | case OPTION_STRING: |
61 | case OPTION_INTEGER: | 61 | case OPTION_INTEGER: |
62 | case OPTION_LONG: | 62 | case OPTION_LONG: |
63 | case OPTION_U64: | ||
63 | default: | 64 | default: |
64 | break; | 65 | break; |
65 | } | 66 | } |
@@ -141,6 +142,22 @@ static int get_value(struct parse_opt_ctx_t *p, | |||
141 | return opterror(opt, "expects a numerical value", flags); | 142 | return opterror(opt, "expects a numerical value", flags); |
142 | return 0; | 143 | return 0; |
143 | 144 | ||
145 | case OPTION_U64: | ||
146 | if (unset) { | ||
147 | *(u64 *)opt->value = 0; | ||
148 | return 0; | ||
149 | } | ||
150 | if (opt->flags & PARSE_OPT_OPTARG && !p->opt) { | ||
151 | *(u64 *)opt->value = opt->defval; | ||
152 | return 0; | ||
153 | } | ||
154 | if (get_arg(p, opt, flags, &arg)) | ||
155 | return -1; | ||
156 | *(u64 *)opt->value = strtoull(arg, (char **)&s, 10); | ||
157 | if (*s) | ||
158 | return opterror(opt, "expects a numerical value", flags); | ||
159 | return 0; | ||
160 | |||
144 | case OPTION_END: | 161 | case OPTION_END: |
145 | case OPTION_ARGUMENT: | 162 | case OPTION_ARGUMENT: |
146 | case OPTION_GROUP: | 163 | case OPTION_GROUP: |
@@ -487,6 +504,7 @@ int usage_with_options_internal(const char * const *usagestr, | |||
487 | case OPTION_SET_INT: | 504 | case OPTION_SET_INT: |
488 | case OPTION_SET_PTR: | 505 | case OPTION_SET_PTR: |
489 | case OPTION_LONG: | 506 | case OPTION_LONG: |
507 | case OPTION_U64: | ||
490 | break; | 508 | break; |
491 | } | 509 | } |
492 | 510 | ||