mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 05:04:00 +08:00
perf evlist: Adopt __set_tracepoint_handlers method from perf_session
It all operates on the evsels in the session's evlist, so move it to the evlist layer to make it useful to tools not using perf_session, just evlists, like 'perf trace' in live mode. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lkml.kernel.org/n/tip-9oc53gnfi53vg82fvolkm85g@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
608127f737
commit
c0e53476ab
@ -186,6 +186,30 @@ void perf_evlist__splice_list_tail(struct evlist *evlist,
|
||||
}
|
||||
}
|
||||
|
||||
int __evlist__set_tracepoints_handlers(struct evlist *evlist,
|
||||
const struct evsel_str_handler *assocs, size_t nr_assocs)
|
||||
{
|
||||
struct evsel *evsel;
|
||||
size_t i;
|
||||
int err;
|
||||
|
||||
for (i = 0; i < nr_assocs; i++) {
|
||||
// Adding a handler for an event not in this evlist, just ignore it.
|
||||
evsel = perf_evlist__find_tracepoint_by_name(evlist, assocs[i].name);
|
||||
if (evsel == NULL)
|
||||
continue;
|
||||
|
||||
err = -EEXIST;
|
||||
if (evsel->handler != NULL)
|
||||
goto out;
|
||||
evsel->handler = assocs[i].handler;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
|
||||
void __perf_evlist__set_leader(struct list_head *list)
|
||||
{
|
||||
struct evsel *evsel, *leader;
|
||||
|
@ -118,6 +118,13 @@ void perf_evlist__stop_sb_thread(struct evlist *evlist);
|
||||
int perf_evlist__add_newtp(struct evlist *evlist,
|
||||
const char *sys, const char *name, void *handler);
|
||||
|
||||
int __evlist__set_tracepoints_handlers(struct evlist *evlist,
|
||||
const struct evsel_str_handler *assocs,
|
||||
size_t nr_assocs);
|
||||
|
||||
#define evlist__set_tracepoints_handlers(evlist, array) \
|
||||
__evlist__set_tracepoints_handlers(evlist, array, ARRAY_SIZE(array))
|
||||
|
||||
void __perf_evlist__set_sample_bit(struct evlist *evlist,
|
||||
enum perf_event_sample_format bit);
|
||||
void __perf_evlist__reset_sample_bit(struct evlist *evlist,
|
||||
|
@ -2355,35 +2355,6 @@ void perf_session__fprintf_info(struct perf_session *session, FILE *fp,
|
||||
fprintf(fp, "# ========\n#\n");
|
||||
}
|
||||
|
||||
|
||||
int __perf_session__set_tracepoints_handlers(struct perf_session *session,
|
||||
const struct evsel_str_handler *assocs,
|
||||
size_t nr_assocs)
|
||||
{
|
||||
struct evsel *evsel;
|
||||
size_t i;
|
||||
int err;
|
||||
|
||||
for (i = 0; i < nr_assocs; i++) {
|
||||
/*
|
||||
* Adding a handler for an event not in the session,
|
||||
* just ignore it.
|
||||
*/
|
||||
evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name);
|
||||
if (evsel == NULL)
|
||||
continue;
|
||||
|
||||
err = -EEXIST;
|
||||
if (evsel->handler != NULL)
|
||||
goto out;
|
||||
evsel->handler = assocs[i].handler;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
|
||||
int perf_event__process_id_index(struct perf_session *session,
|
||||
union perf_event *event)
|
||||
{
|
||||
|
@ -120,12 +120,8 @@ void perf_session__fprintf_info(struct perf_session *s, FILE *fp, bool full);
|
||||
|
||||
struct evsel_str_handler;
|
||||
|
||||
int __perf_session__set_tracepoints_handlers(struct perf_session *session,
|
||||
const struct evsel_str_handler *assocs,
|
||||
size_t nr_assocs);
|
||||
|
||||
#define perf_session__set_tracepoints_handlers(session, array) \
|
||||
__perf_session__set_tracepoints_handlers(session, array, ARRAY_SIZE(array))
|
||||
__evlist__set_tracepoints_handlers(session->evlist, array, ARRAY_SIZE(array))
|
||||
|
||||
extern volatile int session_done;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user