perf tools: Add perf_config_u64 function
Adding perf_config_u64 function to be able to parse 'llong' values out of config file. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Acked-by: David Ahern <dsahern@gmail.com> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jean Pihet <jean.pihet@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/n/tip-ni6gqdlvw7khp74r9htvklkb@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
adc56ed1e0
Коммит
94c0655fc1
|
@ -22,6 +22,7 @@ typedef int (*config_fn_t)(const char *, const char *, void *);
|
|||
extern int perf_default_config(const char *, const char *, void *);
|
||||
extern int perf_config(config_fn_t fn, void *);
|
||||
extern int perf_config_int(const char *, const char *);
|
||||
extern u64 perf_config_u64(const char *, const char *);
|
||||
extern int perf_config_bool(const char *, const char *);
|
||||
extern int config_error_nonbool(const char *);
|
||||
extern const char *perf_config_dirname(const char *, const char *);
|
||||
|
|
|
@ -286,6 +286,21 @@ static int parse_unit_factor(const char *end, unsigned long *val)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int perf_parse_llong(const char *value, long long *ret)
|
||||
{
|
||||
if (value && *value) {
|
||||
char *end;
|
||||
long long val = strtoll(value, &end, 0);
|
||||
unsigned long factor = 1;
|
||||
|
||||
if (!parse_unit_factor(end, &factor))
|
||||
return 0;
|
||||
*ret = val * factor;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int perf_parse_long(const char *value, long *ret)
|
||||
{
|
||||
if (value && *value) {
|
||||
|
@ -307,6 +322,15 @@ static void die_bad_config(const char *name)
|
|||
die("bad config value for '%s'", name);
|
||||
}
|
||||
|
||||
u64 perf_config_u64(const char *name, const char *value)
|
||||
{
|
||||
long long ret = 0;
|
||||
|
||||
if (!perf_parse_llong(value, &ret))
|
||||
die_bad_config(name);
|
||||
return (u64) ret;
|
||||
}
|
||||
|
||||
int perf_config_int(const char *name, const char *value)
|
||||
{
|
||||
long ret = 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче