Currently we support upto a level 2 directory, and level 2 would be in the
form vendor/platform.

Add support for a further level, to hold specific categories of events for
when we want to segregate them for matching purposes.

Signed-off-by: John Garry <[email protected]>
---
 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 fa86c5f997cc..c7868d0a7a6b 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -981,15 +981,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--;
                }
@@ -1002,13 +1007,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.16.4

Reply via email to