On 11/6/20 6:05 PM, John Garry wrote:
> Currently only upto a level 2 directory is supported, in form
> vendor/platform.

Hi John,
    Just want to check in case of sub directories,
Will it be good add on/feasible to be able to include events of particular 
sub-directory for a
platform? Otherwise with this patch in the end all event will be part of
same pmu_event structure. So what is the purpose of sub directories? Let me 
know if I am missing something.

Thanks,
Kajol Jain
> 
> Add support for a further level, to support vendor/platform
> sub-directories in future.
> 
> Signed-off-by: John Garry <john.ga...@huawei.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);
>  
> 

Reply via email to