diff options
author | Jiri Olsa <jolsa@kernel.org> | 2018-02-06 13:18:01 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2018-02-16 08:09:23 -0500 |
commit | d9c5f32240f503481291a6d4e7246ee0a128d76d (patch) | |
tree | 93ac941861ec018e1511ba129df3d33d705fc90b /tools/lib | |
parent | 6baddfc6900eca7f6b360c91ff737890ab4f1d55 (diff) |
tools lib api fs: Add sysfs__read_xll function
Adding sysfs__read_xll function to be able to read sysfs files with hex
numbers in, which do not have 0x prefix.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20180206181813.10943-6-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib')
-rw-r--r-- | tools/lib/api/fs/fs.c | 15 | ||||
-rw-r--r-- | tools/lib/api/fs/fs.h | 1 |
2 files changed, 14 insertions, 2 deletions
diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c index 8b0e4a4315bd..6a12bbf39f7b 100644 --- a/tools/lib/api/fs/fs.c +++ b/tools/lib/api/fs/fs.c | |||
@@ -432,7 +432,8 @@ int procfs__read_str(const char *entry, char **buf, size_t *sizep) | |||
432 | return filename__read_str(path, buf, sizep); | 432 | return filename__read_str(path, buf, sizep); |
433 | } | 433 | } |
434 | 434 | ||
435 | int sysfs__read_ull(const char *entry, unsigned long long *value) | 435 | static int sysfs__read_ull_base(const char *entry, |
436 | unsigned long long *value, int base) | ||
436 | { | 437 | { |
437 | char path[PATH_MAX]; | 438 | char path[PATH_MAX]; |
438 | const char *sysfs = sysfs__mountpoint(); | 439 | const char *sysfs = sysfs__mountpoint(); |
@@ -442,7 +443,17 @@ int sysfs__read_ull(const char *entry, unsigned long long *value) | |||
442 | 443 | ||
443 | snprintf(path, sizeof(path), "%s/%s", sysfs, entry); | 444 | snprintf(path, sizeof(path), "%s/%s", sysfs, entry); |
444 | 445 | ||
445 | return filename__read_ull(path, value); | 446 | return filename__read_ull_base(path, value, base); |
447 | } | ||
448 | |||
449 | int sysfs__read_xll(const char *entry, unsigned long long *value) | ||
450 | { | ||
451 | return sysfs__read_ull_base(entry, value, 16); | ||
452 | } | ||
453 | |||
454 | int sysfs__read_ull(const char *entry, unsigned long long *value) | ||
455 | { | ||
456 | return sysfs__read_ull_base(entry, value, 0); | ||
446 | } | 457 | } |
447 | 458 | ||
448 | int sysfs__read_int(const char *entry, int *value) | 459 | int sysfs__read_int(const char *entry, int *value) |
diff --git a/tools/lib/api/fs/fs.h b/tools/lib/api/fs/fs.h index 8ebee35a6395..92d03b8396b1 100644 --- a/tools/lib/api/fs/fs.h +++ b/tools/lib/api/fs/fs.h | |||
@@ -40,6 +40,7 @@ int procfs__read_str(const char *entry, char **buf, size_t *sizep); | |||
40 | int sysctl__read_int(const char *sysctl, int *value); | 40 | int sysctl__read_int(const char *sysctl, int *value); |
41 | int sysfs__read_int(const char *entry, int *value); | 41 | int sysfs__read_int(const char *entry, int *value); |
42 | int sysfs__read_ull(const char *entry, unsigned long long *value); | 42 | int sysfs__read_ull(const char *entry, unsigned long long *value); |
43 | int sysfs__read_xll(const char *entry, unsigned long long *value); | ||
43 | int sysfs__read_str(const char *entry, char **buf, size_t *sizep); | 44 | int sysfs__read_str(const char *entry, char **buf, size_t *sizep); |
44 | int sysfs__read_bool(const char *entry, bool *value); | 45 | int sysfs__read_bool(const char *entry, bool *value); |
45 | 46 | ||