linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] perf tools: get version from uname(2), not /proc
@ 2015-10-06 22:53 Matt Mullins
  2015-10-07  8:18 ` Jiri Olsa
  2015-10-07 15:34 ` Andi Kleen
  0 siblings, 2 replies; 6+ messages in thread
From: Matt Mullins @ 2015-10-06 22:53 UTC (permalink / raw)
  To: acme
  Cc: Matt Mullins, Vinson Lee, Peter Zijlstra, Ingo Molnar, Jiri Olsa,
	Namhyung Kim, Adrian Hunter, Kan Liang, Andi Kleen, linux-kernel

Tools in kmod (e.g. modprobe) compose the module path from the release
from uname(2).  Because we use the UNAME26 personality, we need perf to
find modules located at the same path as the system tools.

Signed-off-by: Matt Mullins <mmullins@twopensource.com>
Cc: Vinson Lee <vlee@twopensource.com>
---
 tools/perf/util/machine.c | 28 ++++++----------------------
 1 file changed, 6 insertions(+), 22 deletions(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 5ef90be2a249..51199bc271e9 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -11,6 +11,7 @@
 #include "vdso.h"
 #include <stdbool.h>
 #include <symbol/kallsyms.h>
+#include <sys/utsname.h>
 #include "unwind.h"
 #include "linux/hash.h"
 
@@ -903,31 +904,14 @@ static void map_groups__fixup_end(struct map_groups *mg)
 		__map_groups__fixup_end(mg, i);
 }
 
-static char *get_kernel_version(const char *root_dir)
+static char *get_kernel_version(void)
 {
-	char version[PATH_MAX];
-	FILE *file;
-	char *name, *tmp;
-	const char *prefix = "Linux version ";
+	struct utsname utsname;
 
-	sprintf(version, "%s/proc/version", root_dir);
-	file = fopen(version, "r");
-	if (!file)
+	if (uname(&utsname))
 		return NULL;
 
-	version[0] = '\0';
-	tmp = fgets(version, sizeof(version), file);
-	fclose(file);
-
-	name = strstr(version, prefix);
-	if (!name)
-		return NULL;
-	name += strlen(prefix);
-	tmp = strchr(name, ' ');
-	if (tmp)
-		*tmp = '\0';
-
-	return strdup(name);
+	return strdup(utsname.release);
 }
 
 static bool is_kmod_dso(struct dso *dso)
@@ -1027,7 +1011,7 @@ static int machine__set_modules_path(struct machine *machine)
 	char *version;
 	char modules_path[PATH_MAX];
 
-	version = get_kernel_version(machine->root_dir);
+	version = get_kernel_version();
 	if (!version)
 		return -1;
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-10-08  6:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-06 22:53 [PATCH] perf tools: get version from uname(2), not /proc Matt Mullins
2015-10-07  8:18 ` Jiri Olsa
2015-10-07  8:19   ` Adrian Hunter
2015-10-07 17:11     ` Matt Mullins
2015-10-08  6:26       ` Adrian Hunter
2015-10-07 15:34 ` Andi Kleen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).