diff options
author | Arnaldo Carvalho de Melo <[email protected]> | 2015-09-10 12:20:14 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <[email protected]> | 2015-09-14 12:50:26 -0300 |
commit | 09f6acf2eacad3a0f9a4b9f77e0b021f0cb45780 (patch) | |
tree | 20a9c7c055687daac544429dffb932629609dfcb | |
parent | 2d729f6a8ac3edbf68de7239fab96c9736946af5 (diff) |
tools lib api cpu: Introduce cpu.[ch] to obtain cpu related information
E.g.:
$ ./cpu__get_max_freq
3200000
It does that, as Kan's patch does, by looking at these files:
$ cat /sys/devices/system/cpu/online
0-3
$ ./sysfs__read_ull
devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq=3200000
$
I.e. find out the first online CPU, then read its cpufreq info.
But do it in tools/lib/api/, so that other tools/ living code can use
it, not just perf.
Based-on-a-patch-by: Kan Liang <[email protected]>
Cc: Adrian Hunter <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Kan Liang <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Stephane Eranian <[email protected]>
Cc: Wang Nan <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
-rw-r--r-- | tools/lib/api/Build | 1 | ||||
-rw-r--r-- | tools/lib/api/cpu.c | 18 | ||||
-rw-r--r-- | tools/lib/api/cpu.h | 6 |
3 files changed, 25 insertions, 0 deletions
diff --git a/tools/lib/api/Build b/tools/lib/api/Build index 3653965cf481..e8b8a23b9bf4 100644 --- a/tools/lib/api/Build +++ b/tools/lib/api/Build @@ -1,2 +1,3 @@ libapi-y += fd/ libapi-y += fs/ +libapi-y += cpu.o diff --git a/tools/lib/api/cpu.c b/tools/lib/api/cpu.c new file mode 100644 index 000000000000..8c6489356e3a --- /dev/null +++ b/tools/lib/api/cpu.c @@ -0,0 +1,18 @@ +#include <stdio.h> + +#include "cpu.h" +#include "fs/fs.h" + +int cpu__get_max_freq(unsigned long long *freq) +{ + char entry[PATH_MAX]; + int cpu; + + if (sysfs__read_int("devices/system/cpu/online", &cpu) < 0) + return -1; + + snprintf(entry, sizeof(entry), + "devices/system/cpu/cpu%d/cpufreq/cpuinfo_max_freq", cpu); + + return sysfs__read_ull(entry, freq); +} diff --git a/tools/lib/api/cpu.h b/tools/lib/api/cpu.h new file mode 100644 index 000000000000..81e9d3955961 --- /dev/null +++ b/tools/lib/api/cpu.h @@ -0,0 +1,6 @@ +#ifndef __API_CPU__ +#define __API_CPU__ + +int cpu__get_max_freq(unsigned long long *freq); + +#endif /* __API_CPU__ */ |