perf list: Support long jevents descriptions
Previously we were dropping the useful longer descriptions that some events have in the event list completely. This patch makes them appear with perf list. Old perf list: baclears: baclears.all [Counts the number of baclears] vs new: perf list -v: ... baclears: baclears.all [The BACLEARS event counts the number of times the front end is resteered, mainly when the Branch Prediction Unit cannot provide a correct prediction and this is corrected by the Branch Address Calculator at the front end. The BACLEARS.ANY event counts the number of baclears for any type of branch] Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Acked-by: Ingo Molnar <mingo@kernel.org> Acked-by: Jiri Olsa <jolsa@redhat.com> Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/1473978296-20712-13-git-send-email-sukadev@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
794ba54a83
commit
c8d6828a65
@@ -223,7 +223,7 @@ static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias,
|
||||
}
|
||||
|
||||
static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
|
||||
char *desc, char *val)
|
||||
char *desc, char *val, char *long_desc)
|
||||
{
|
||||
struct perf_pmu_alias *alias;
|
||||
int ret;
|
||||
@@ -257,6 +257,8 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
|
||||
}
|
||||
|
||||
alias->desc = desc ? strdup(desc) : NULL;
|
||||
alias->long_desc = long_desc ? strdup(long_desc) :
|
||||
desc ? strdup(desc) : NULL;
|
||||
|
||||
list_add_tail(&alias->list, list);
|
||||
|
||||
@@ -274,7 +276,7 @@ static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FI
|
||||
|
||||
buf[ret] = 0;
|
||||
|
||||
return __perf_pmu__new_alias(list, dir, name, NULL, buf);
|
||||
return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL);
|
||||
}
|
||||
|
||||
static inline bool pmu_alias_info_file(char *name)
|
||||
@@ -532,7 +534,8 @@ static void pmu_add_cpu_aliases(struct list_head *head)
|
||||
|
||||
/* need type casts to override 'const' */
|
||||
__perf_pmu__new_alias(head, NULL, (char *)pe->name,
|
||||
(char *)pe->desc, (char *)pe->event);
|
||||
(char *)pe->desc, (char *)pe->event,
|
||||
(char *)pe->long_desc);
|
||||
}
|
||||
|
||||
out:
|
||||
@@ -1090,7 +1093,8 @@ static void wordwrap(char *s, int start, int max, int corr)
|
||||
}
|
||||
}
|
||||
|
||||
void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag)
|
||||
void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
|
||||
bool long_desc)
|
||||
{
|
||||
struct perf_pmu *pmu;
|
||||
struct perf_pmu_alias *alias;
|
||||
@@ -1138,7 +1142,8 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag)
|
||||
if (!aliases[j].name)
|
||||
goto out_enomem;
|
||||
|
||||
aliases[j].desc = alias->desc;
|
||||
aliases[j].desc = long_desc ? alias->long_desc :
|
||||
alias->desc;
|
||||
j++;
|
||||
}
|
||||
if (pmu->selectable &&
|
||||
|
Reference in New Issue
Block a user