[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1607080216-36968-2-git-send-email-john.garry@huawei.com>
Date: Fri, 4 Dec 2020 19:10:07 +0800
From: John Garry <john.garry@...wei.com>
To: <acme@...nel.org>, <peterz@...radead.org>, <mingo@...hat.com>,
<mark.rutland@....com>, <alexander.shishkin@...ux.intel.com>,
<jolsa@...hat.com>, <namhyung@...nel.org>, <will@...nel.org>,
<mathieu.poirier@...aro.org>, <leo.yan@...aro.org>,
<irogers@...gle.com>
CC: <qiangqing.zhang@....com>, <kjain@...ux.ibm.com>,
<linux-kernel@...r.kernel.org>, <zhangshaokun@...ilicon.com>,
<linux-arm-kernel@...ts.infradead.org>, <linuxarm@...wei.com>,
<kan.liang@...ux.intel.com>, <kim.phillips@....com>,
<ak@...ux.intel.com>, John Garry <john.garry@...wei.com>
Subject: [PATCH v6 01/10] perf jevents: Add support for an extra directory level
Currently only upto a level 2 directory is supported, in form
vendor/platform.
Add support for a further level, to support vendor/platform
sub-directories in future, which will be vendor/platform/cpu
and vendor/platform/sys.
Signed-off-by: John Garry <john.garry@...wei.com>
Acked-by: Kajol Jain <kjain@...ux.ibm.com>
---
tools/perf/pmu-events/jevents.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index 72cfa3b5046d..9022216b1253 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -978,15 +978,20 @@ static int process_one_file(const char *fpath, const struct stat *sb,
int level = ftwbuf->level;
int err = 0;
- if (level == 2 && is_dir) {
+ if (level >= 2 && is_dir) {
+ int count = 0;
/*
* For level 2 directory, bname will include parent name,
* like vendor/platform. So search back from platform dir
* to find this.
+ * Something similar for level 3 directory, but we're a PMU
+ * category folder, like vendor/platform/cpu.
*/
bname = (char *) fpath + ftwbuf->base - 2;
for (;;) {
if (*bname == '/')
+ count++;
+ if (count == level - 1)
break;
bname--;
}
@@ -999,13 +1004,13 @@ static int process_one_file(const char *fpath, const struct stat *sb,
level, sb->st_size, bname, fpath);
/* base dir or too deep */
- if (level == 0 || level > 3)
+ if (level == 0 || level > 4)
return 0;
/* model directory, reset topic */
if ((level == 1 && is_dir && is_leaf_dir(fpath)) ||
- (level == 2 && is_dir)) {
+ (level >= 2 && is_dir && is_leaf_dir(fpath))) {
if (close_table)
print_events_table_suffix(eventsfp);
--
2.26.2
Powered by blists - more mailing lists