aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/parse-options.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/parse-options.c')
-rw-r--r--tools/perf/util/parse-options.c18
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