perf evlist: Add a method to return the list of evsels as a string
Add a 'scnprintf' method to obtain the list of evsels in a evlist as a string, excluding the "dummy" event used for things like receiving metadata events (PERF_RECORD_FORK, MMAP, etc) when synthesizing preexisting threads. Will be used to improve the error message for workload failure in 'perf record. Acked-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lore.kernel.org/lkml/20210414131628.2064862-2-acme@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
5676dba708
commit
9865ea8ab3
|
@ -2138,3 +2138,22 @@ struct evsel *evlist__find_evsel(struct evlist *evlist, int idx)
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int evlist__scnprintf_evsels(struct evlist *evlist, size_t size, char *bf)
|
||||
{
|
||||
struct evsel *evsel;
|
||||
int printed = 0;
|
||||
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel__is_dummy_event(evsel))
|
||||
continue;
|
||||
if (size > (strlen(evsel__name(evsel)) + (printed ? 2 : 1))) {
|
||||
printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "," : "", evsel__name(evsel));
|
||||
} else {
|
||||
printed += scnprintf(bf + printed, size - printed, "%s...", printed ? "," : "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return printed;
|
||||
}
|
||||
|
|
|
@ -365,4 +365,6 @@ int evlist__ctlfd_ack(struct evlist *evlist);
|
|||
#define EVLIST_DISABLED_MSG "Events disabled\n"
|
||||
|
||||
struct evsel *evlist__find_evsel(struct evlist *evlist, int idx);
|
||||
|
||||
int evlist__scnprintf_evsels(struct evlist *evlist, size_t size, char *bf);
|
||||
#endif /* __PERF_EVLIST_H */
|
||||
|
|
Loading…
Reference in New Issue