From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752021AbbJGITC (ORCPT ); Wed, 7 Oct 2015 04:19:02 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40076 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751246AbbJGIS7 (ORCPT ); Wed, 7 Oct 2015 04:18:59 -0400 Date: Wed, 7 Oct 2015 10:18:54 +0200 From: Jiri Olsa To: Matt Mullins Cc: acme@kernel.org, Vinson Lee , Peter Zijlstra , Ingo Molnar , Namhyung Kim , Adrian Hunter , Kan Liang , Andi Kleen , linux-kernel@vger.kernel.org Subject: Re: [PATCH] perf tools: get version from uname(2), not /proc Message-ID: <20151007081854.GA20302@krava.landal.opennet> References: <1444171996-24030-1-git-send-email-mmullins@twopensource.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1444171996-24030-1-git-send-email-mmullins@twopensource.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 06, 2015 at 03:53:14PM -0700, Matt Mullins wrote: > 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. I guess it's easy to google this up, but could you please state in the changelog what's the difference between the current version and the UNAME26 one? Also state (and check) this change wouldn't affect other parts of the code that use this version (if there's any). thanks, jirka > > Signed-off-by: Matt Mullins > Cc: Vinson Lee > --- > 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 > #include > +#include > #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 >