lkml.org 
[lkml]   [2020]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFC PATCH v2 07/13] perf pmu: Add pmu_id()
    From
    Date
      Wi
    On 22/04/2020 12:41, Jiri Olsa wrote:
    > On Fri, Apr 17, 2020 at 06:41:18PM +0800, John Garry wrote:
    >> Add a function to read the PMU id sysfs entry. We only do it for uncore
    >> PMUs where this would be relevant.
    >>
    >> Signed-off-by: John Garry <john.garry@huawei.com>
    >> ---
    >> tools/perf/util/pmu.c | 36 ++++++++++++++++++++++++++++++++++++
    >> tools/perf/util/pmu.h | 1 +
    >> 2 files changed, 37 insertions(+)
    >>
    >> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
    >> index ef6a63f3d386..6a67c6a28d08 100644
    >> --- a/tools/perf/util/pmu.c
    >> +++ b/tools/perf/util/pmu.c
    >> @@ -594,6 +594,7 @@ static struct perf_cpu_map *__pmu_cpumask(const char *path)
    >> * Uncore PMUs have a "cpumask" file under sysfs. CPU PMUs (e.g. on arm/arm64)
    >> * may have a "cpus" file.
    >> */
    >> +#define CPUS_TEMPLATE_ID "%s/bus/event_source/devices/%s/identifier"
    >> #define CPUS_TEMPLATE_UNCORE "%s/bus/event_source/devices/%s/cpumask"
    >> #define CPUS_TEMPLATE_CPU "%s/bus/event_source/devices/%s/cpus"
    >>
    >> @@ -632,6 +633,39 @@ static bool pmu_is_uncore(const char *name)
    >> return file_available(path);
    >> }
    >>
    >> +static char *pmu_id(const char *name)
    >> +{
    >> + char path[PATH_MAX], *id;
    >> + const char *sysfs;
    >> + FILE *file;
    >> + int n;
    >> +
    >> + sysfs = sysfs__mountpoint();
    >> + snprintf(path, PATH_MAX, CPUS_TEMPLATE_ID, sysfs, name);
    >> +
    >> + id = malloc(PATH_MAX);
    >> + if (!id)
    >> + return NULL;
    >> +
    >> + file = fopen(path, "r");
    >> + if (!file) {
    >> + free(id);
    >> + return NULL;
    >> + }
    >> +
    >> + n = fscanf(file, "%s", id);
    >> +
    >> + fclose(file);
    >> +
    >> + if (!n) {
    >> + free(id);
    >> + return NULL;
    >> + }
    >> +
    >> + return id;
    >> +}
    >
    > I still need to go through this patchset in more detail,

    ok, great.

    But, could you check patch #1 also, as this *may* be fixing something
    broken in mainline? Not sure. Without it, we get a spew of warnings for
    metrics.

    > but just quick note, that we have sysfs__read_str that you
    > could use in here
    >

    ok, there may be more functions in current pmu.c then which can use
    this. I can check.

    Cheers,
    John

    \
     
     \ /
      Last update: 2020-04-22 13:56    [W:4.123 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site