diff options
author | Tony Lindgren <tony@atomide.com> | 2015-11-25 10:56:40 -0800 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2015-11-25 10:56:40 -0800 |
commit | 970259bff472579204108c6f27036ec4d1206ae1 (patch) | |
tree | 869bdcda9aac4c67712d93e6141056fdf3f41bd8 /tools/perf/util/util.c | |
parent | 9b1b61cd8e31d9beba871333d7a798b3adb89288 (diff) | |
parent | 29f5b34ca1a191c2cf4f6c8c12f4dec56e8d3bc1 (diff) | |
download | linux-970259bff472579204108c6f27036ec4d1206ae1.tar.bz2 |
Merge branch '81xx' into omap-for-v4.4/fixes
Diffstat (limited to 'tools/perf/util/util.c')
-rw-r--r-- | tools/perf/util/util.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c index cd12c25e4ea4..47b1e36c7ea0 100644 --- a/tools/perf/util/util.c +++ b/tools/perf/util/util.c @@ -3,6 +3,7 @@ #include "debug.h" #include <api/fs/fs.h> #include <sys/mman.h> +#include <sys/utsname.h> #ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #endif @@ -665,3 +666,32 @@ bool find_process(const char *name) closedir(dir); return ret ? false : true; } + +int +fetch_kernel_version(unsigned int *puint, char *str, + size_t str_size) +{ + struct utsname utsname; + int version, patchlevel, sublevel, err; + + if (uname(&utsname)) + return -1; + + if (str && str_size) { + strncpy(str, utsname.release, str_size); + str[str_size - 1] = '\0'; + } + + err = sscanf(utsname.release, "%d.%d.%d", + &version, &patchlevel, &sublevel); + + if (err != 3) { + pr_debug("Unablt to get kernel version from uname '%s'\n", + utsname.release); + return -1; + } + + if (puint) + *puint = (version << 16) + (patchlevel << 8) + sublevel; + return 0; +} |