perf evlist: Rename for_each() macros to for_each_entry()
To match the semantics for list.h in the kernel, that are used to implement those macros. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Milian Wolff <milian.wolff@kdab.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Taeung Song <treeze.taeung@gmail.com> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-qbcjlgj0ffxquxscahbpddi3@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
3bd03c9583
Коммит
e5cadb93d0
|
@ -37,7 +37,7 @@ struct auxtrace_record *auxtrace_record__init_intel(struct perf_evlist *evlist,
|
|||
intel_bts_pmu = perf_pmu__find(INTEL_BTS_PMU_NAME);
|
||||
|
||||
if (evlist) {
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (intel_pt_pmu &&
|
||||
evsel->attr.type == intel_pt_pmu->type)
|
||||
found_pt = true;
|
||||
|
|
|
@ -124,7 +124,7 @@ static int intel_bts_recording_options(struct auxtrace_record *itr,
|
|||
btsr->evlist = evlist;
|
||||
btsr->snapshot_mode = opts->auxtrace_snapshot_mode;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type == intel_bts_pmu->type) {
|
||||
if (intel_bts_evsel) {
|
||||
pr_err("There may be only one " INTEL_BTS_PMU_NAME " event\n");
|
||||
|
@ -327,7 +327,7 @@ static int intel_bts_snapshot_start(struct auxtrace_record *itr)
|
|||
container_of(itr, struct intel_bts_recording, itr);
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(btsr->evlist, evsel) {
|
||||
evlist__for_each_entry(btsr->evlist, evsel) {
|
||||
if (evsel->attr.type == btsr->intel_bts_pmu->type)
|
||||
return perf_evsel__disable(evsel);
|
||||
}
|
||||
|
@ -340,7 +340,7 @@ static int intel_bts_snapshot_finish(struct auxtrace_record *itr)
|
|||
container_of(itr, struct intel_bts_recording, itr);
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(btsr->evlist, evsel) {
|
||||
evlist__for_each_entry(btsr->evlist, evsel) {
|
||||
if (evsel->attr.type == btsr->intel_bts_pmu->type)
|
||||
return perf_evsel__enable(evsel);
|
||||
}
|
||||
|
@ -422,7 +422,7 @@ static int intel_bts_read_finish(struct auxtrace_record *itr, int idx)
|
|||
container_of(itr, struct intel_bts_recording, itr);
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(btsr->evlist, evsel) {
|
||||
evlist__for_each_entry(btsr->evlist, evsel) {
|
||||
if (evsel->attr.type == btsr->intel_bts_pmu->type)
|
||||
return perf_evlist__enable_event_idx(btsr->evlist,
|
||||
evsel, idx);
|
||||
|
|
|
@ -131,7 +131,7 @@ static int intel_pt_read_config(struct perf_pmu *intel_pt_pmu, const char *str,
|
|||
if (!mask)
|
||||
return -EINVAL;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type == intel_pt_pmu->type) {
|
||||
*res = intel_pt_masked_bits(mask, evsel->attr.config);
|
||||
return 0;
|
||||
|
@ -511,7 +511,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr,
|
|||
ptr->evlist = evlist;
|
||||
ptr->snapshot_mode = opts->auxtrace_snapshot_mode;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type == intel_pt_pmu->type) {
|
||||
if (intel_pt_evsel) {
|
||||
pr_err("There may be only one " INTEL_PT_PMU_NAME " event\n");
|
||||
|
@ -725,7 +725,7 @@ static int intel_pt_snapshot_start(struct auxtrace_record *itr)
|
|||
container_of(itr, struct intel_pt_recording, itr);
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(ptr->evlist, evsel) {
|
||||
evlist__for_each_entry(ptr->evlist, evsel) {
|
||||
if (evsel->attr.type == ptr->intel_pt_pmu->type)
|
||||
return perf_evsel__disable(evsel);
|
||||
}
|
||||
|
@ -738,7 +738,7 @@ static int intel_pt_snapshot_finish(struct auxtrace_record *itr)
|
|||
container_of(itr, struct intel_pt_recording, itr);
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(ptr->evlist, evsel) {
|
||||
evlist__for_each_entry(ptr->evlist, evsel) {
|
||||
if (evsel->attr.type == ptr->intel_pt_pmu->type)
|
||||
return perf_evsel__enable(evsel);
|
||||
}
|
||||
|
@ -1011,7 +1011,7 @@ static int intel_pt_read_finish(struct auxtrace_record *itr, int idx)
|
|||
container_of(itr, struct intel_pt_recording, itr);
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(ptr->evlist, evsel) {
|
||||
evlist__for_each_entry(ptr->evlist, evsel) {
|
||||
if (evsel->attr.type == ptr->intel_pt_pmu->type)
|
||||
return perf_evlist__enable_event_idx(ptr->evlist, evsel,
|
||||
idx);
|
||||
|
|
|
@ -236,7 +236,7 @@ static int __cmd_annotate(struct perf_annotate *ann)
|
|||
perf_session__fprintf_dsos(session, stdout);
|
||||
|
||||
total_nr_samples = 0;
|
||||
evlist__for_each(session->evlist, pos) {
|
||||
evlist__for_each_entry(session->evlist, pos) {
|
||||
struct hists *hists = evsel__hists(pos);
|
||||
u32 nr_samples = hists->stats.nr_events[PERF_RECORD_SAMPLE];
|
||||
|
||||
|
|
|
@ -363,7 +363,7 @@ static struct perf_evsel *evsel_match(struct perf_evsel *evsel,
|
|||
{
|
||||
struct perf_evsel *e;
|
||||
|
||||
evlist__for_each(evlist, e) {
|
||||
evlist__for_each_entry(evlist, e) {
|
||||
if (perf_evsel__match2(evsel, e))
|
||||
return e;
|
||||
}
|
||||
|
@ -375,7 +375,7 @@ static void perf_evlist__collapse_resort(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
struct hists *hists = evsel__hists(evsel);
|
||||
|
||||
hists__collapse_resort(hists, NULL);
|
||||
|
@ -681,7 +681,7 @@ static void data_process(void)
|
|||
struct perf_evsel *evsel_base;
|
||||
bool first = true;
|
||||
|
||||
evlist__for_each(evlist_base, evsel_base) {
|
||||
evlist__for_each_entry(evlist_base, evsel_base) {
|
||||
struct hists *hists_base = evsel__hists(evsel_base);
|
||||
struct data__file *d;
|
||||
int i;
|
||||
|
|
|
@ -32,7 +32,7 @@ static int __cmd_evlist(const char *file_name, struct perf_attr_details *details
|
|||
if (session == NULL)
|
||||
return -1;
|
||||
|
||||
evlist__for_each(session->evlist, pos) {
|
||||
evlist__for_each_entry(session->evlist, pos) {
|
||||
perf_evsel__fprintf(pos, details, stdout);
|
||||
|
||||
if (pos->attr.type == PERF_TYPE_TRACEPOINT)
|
||||
|
|
|
@ -562,7 +562,7 @@ static void strip_init(struct perf_inject *inject)
|
|||
|
||||
inject->tool.context_switch = perf_event__drop;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
evsel->handler = drop_sample;
|
||||
}
|
||||
|
||||
|
@ -590,7 +590,7 @@ static bool ok_to_remove(struct perf_evlist *evlist,
|
|||
if (!has_tracking(evsel_to_remove))
|
||||
return true;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->handler != drop_sample) {
|
||||
cnt += 1;
|
||||
if ((evsel->attr.sample_type & COMPAT_MASK) ==
|
||||
|
@ -608,7 +608,7 @@ static void strip_fini(struct perf_inject *inject)
|
|||
struct perf_evsel *evsel, *tmp;
|
||||
|
||||
/* Remove non-synthesized evsels if possible */
|
||||
evlist__for_each_safe(evlist, tmp, evsel) {
|
||||
evlist__for_each_entry_safe(evlist, tmp, evsel) {
|
||||
if (evsel->handler == drop_sample &&
|
||||
ok_to_remove(evlist, evsel)) {
|
||||
pr_debug("Deleting %s\n", perf_evsel__name(evsel));
|
||||
|
@ -643,7 +643,7 @@ static int __cmd_inject(struct perf_inject *inject)
|
|||
} else if (inject->sched_stat) {
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
const char *name = perf_evsel__name(evsel);
|
||||
|
||||
if (!strcmp(name, "sched:sched_switch")) {
|
||||
|
|
|
@ -1354,7 +1354,7 @@ static int __cmd_kmem(struct perf_session *session)
|
|||
goto out;
|
||||
}
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (!strcmp(perf_evsel__name(evsel), "kmem:mm_page_alloc") &&
|
||||
perf_evsel__field(evsel, "pfn")) {
|
||||
use_pfn = true;
|
||||
|
|
|
@ -988,7 +988,7 @@ static int kvm_live_open_events(struct perf_kvm_stat *kvm)
|
|||
* Note: exclude_{guest,host} do not apply here.
|
||||
* This command processes KVM tracepoints from host only
|
||||
*/
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
struct perf_event_attr *attr = &pos->attr;
|
||||
|
||||
/* make sure these *are* set */
|
||||
|
|
|
@ -353,7 +353,7 @@ static int record__open(struct record *rec)
|
|||
|
||||
perf_evlist__config(evlist, opts, &callchain_param);
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
try_again:
|
||||
if (perf_evsel__open(pos, pos->cpus, pos->threads) < 0) {
|
||||
if (perf_evsel__fallback(pos, errno, msg, sizeof(msg))) {
|
||||
|
|
|
@ -361,7 +361,7 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,
|
|||
struct perf_evsel *pos;
|
||||
|
||||
fprintf(stdout, "#\n# Total Lost Samples: %" PRIu64 "\n#\n", evlist->stats.total_lost_samples);
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
struct hists *hists = evsel__hists(pos);
|
||||
const char *evname = perf_evsel__name(pos);
|
||||
|
||||
|
@ -478,7 +478,7 @@ static int report__collapse_hists(struct report *rep)
|
|||
|
||||
ui_progress__init(&prog, rep->nr_entries, "Merging related events...");
|
||||
|
||||
evlist__for_each(rep->session->evlist, pos) {
|
||||
evlist__for_each_entry(rep->session->evlist, pos) {
|
||||
struct hists *hists = evsel__hists(pos);
|
||||
|
||||
if (pos->idx == 0)
|
||||
|
@ -511,7 +511,7 @@ static void report__output_resort(struct report *rep)
|
|||
|
||||
ui_progress__init(&prog, rep->nr_entries, "Sorting events for output...");
|
||||
|
||||
evlist__for_each(rep->session->evlist, pos)
|
||||
evlist__for_each_entry(rep->session->evlist, pos)
|
||||
perf_evsel__output_resort(pos, &prog);
|
||||
|
||||
ui_progress__finish();
|
||||
|
@ -552,7 +552,7 @@ static int __cmd_report(struct report *rep)
|
|||
|
||||
report__warn_kptr_restrict(rep);
|
||||
|
||||
evlist__for_each(session->evlist, pos)
|
||||
evlist__for_each_entry(session->evlist, pos)
|
||||
rep->nr_entries += evsel__hists(pos)->nr_entries;
|
||||
|
||||
if (use_browser == 0) {
|
||||
|
@ -583,7 +583,7 @@ static int __cmd_report(struct report *rep)
|
|||
* might be changed during the collapse phase.
|
||||
*/
|
||||
rep->nr_entries = 0;
|
||||
evlist__for_each(session->evlist, pos)
|
||||
evlist__for_each_entry(session->evlist, pos)
|
||||
rep->nr_entries += evsel__hists(pos)->nr_entries;
|
||||
|
||||
if (rep->nr_entries == 0) {
|
||||
|
|
|
@ -369,7 +369,7 @@ static int perf_session__check_output_opt(struct perf_session *session)
|
|||
if (!no_callchain) {
|
||||
bool use_callchain = false;
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (evsel->attr.sample_type & PERF_SAMPLE_CALLCHAIN) {
|
||||
use_callchain = true;
|
||||
break;
|
||||
|
@ -389,7 +389,7 @@ static int perf_session__check_output_opt(struct perf_session *session)
|
|||
|
||||
j = PERF_TYPE_TRACEPOINT;
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (evsel->attr.type != j)
|
||||
continue;
|
||||
|
||||
|
@ -720,7 +720,7 @@ static int perf_evlist__max_name_len(struct perf_evlist *evlist)
|
|||
struct perf_evsel *evsel;
|
||||
int max = 0;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
int len = strlen(perf_evsel__name(evsel));
|
||||
|
||||
max = MAX(len, max);
|
||||
|
@ -945,7 +945,7 @@ static int process_attr(struct perf_tool *tool, union perf_event *event,
|
|||
if (evsel->attr.type >= PERF_TYPE_MAX)
|
||||
return 0;
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
if (pos->attr.type == evsel->attr.type && pos != evsel)
|
||||
return 0;
|
||||
}
|
||||
|
@ -1671,7 +1671,7 @@ static int check_ev_match(char *dir_name, char *scriptname,
|
|||
snprintf(evname, len + 1, "%s", p);
|
||||
|
||||
match = 0;
|
||||
evlist__for_each(session->evlist, pos) {
|
||||
evlist__for_each_entry(session->evlist, pos) {
|
||||
if (!strcmp(perf_evsel__name(pos), evname)) {
|
||||
match = 1;
|
||||
break;
|
||||
|
@ -1873,7 +1873,7 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
|
|||
struct stat_round_event *round = &event->stat_round;
|
||||
struct perf_evsel *counter;
|
||||
|
||||
evlist__for_each(session->evlist, counter) {
|
||||
evlist__for_each_entry(session->evlist, counter) {
|
||||
perf_stat_process_counter(&stat_config, counter);
|
||||
process_stat(counter, round->time);
|
||||
}
|
||||
|
|
|
@ -331,7 +331,7 @@ static void read_counters(bool close_counters)
|
|||
{
|
||||
struct perf_evsel *counter;
|
||||
|
||||
evlist__for_each(evsel_list, counter) {
|
||||
evlist__for_each_entry(evsel_list, counter) {
|
||||
if (read_counter(counter))
|
||||
pr_debug("failed to read counter %s\n", counter->name);
|
||||
|
||||
|
@ -417,7 +417,7 @@ static int perf_stat_synthesize_config(bool is_pipe)
|
|||
* Synthesize other events stuff not carried within
|
||||
* attr event - unit, scale, name
|
||||
*/
|
||||
evlist__for_each(evsel_list, counter) {
|
||||
evlist__for_each_entry(evsel_list, counter) {
|
||||
if (!counter->supported)
|
||||
continue;
|
||||
|
||||
|
@ -550,7 +550,7 @@ static int __run_perf_stat(int argc, const char **argv)
|
|||
if (group)
|
||||
perf_evlist__set_leader(evsel_list);
|
||||
|
||||
evlist__for_each(evsel_list, counter) {
|
||||
evlist__for_each_entry(evsel_list, counter) {
|
||||
try_again:
|
||||
if (create_perf_stat_counter(counter) < 0) {
|
||||
/*
|
||||
|
@ -1134,7 +1134,7 @@ static void aggr_update_shadow(void)
|
|||
|
||||
for (s = 0; s < aggr_map->nr; s++) {
|
||||
id = aggr_map->map[s];
|
||||
evlist__for_each(evsel_list, counter) {
|
||||
evlist__for_each_entry(evsel_list, counter) {
|
||||
val = 0;
|
||||
for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) {
|
||||
s2 = aggr_get_id(evsel_list->cpus, cpu);
|
||||
|
@ -1173,7 +1173,7 @@ static void print_aggr(char *prefix)
|
|||
|
||||
id = aggr_map->map[s];
|
||||
first = true;
|
||||
evlist__for_each(evsel_list, counter) {
|
||||
evlist__for_each_entry(evsel_list, counter) {
|
||||
val = ena = run = 0;
|
||||
nr = 0;
|
||||
for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) {
|
||||
|
@ -1292,7 +1292,7 @@ static void print_no_aggr_metric(char *prefix)
|
|||
|
||||
if (prefix)
|
||||
fputs(prefix, stat_config.output);
|
||||
evlist__for_each(evsel_list, counter) {
|
||||
evlist__for_each_entry(evsel_list, counter) {
|
||||
if (first) {
|
||||
aggr_printout(counter, cpu, 0);
|
||||
first = false;
|
||||
|
@ -1346,7 +1346,7 @@ static void print_metric_headers(const char *prefix, bool no_indent)
|
|||
}
|
||||
|
||||
/* Print metrics headers only */
|
||||
evlist__for_each(evsel_list, counter) {
|
||||
evlist__for_each_entry(evsel_list, counter) {
|
||||
os.evsel = counter;
|
||||
out.ctx = &os;
|
||||
out.print_metric = print_metric_header;
|
||||
|
@ -1482,11 +1482,11 @@ static void print_counters(struct timespec *ts, int argc, const char **argv)
|
|||
print_aggr(prefix);
|
||||
break;
|
||||
case AGGR_THREAD:
|
||||
evlist__for_each(evsel_list, counter)
|
||||
evlist__for_each_entry(evsel_list, counter)
|
||||
print_aggr_thread(counter, prefix);
|
||||
break;
|
||||
case AGGR_GLOBAL:
|
||||
evlist__for_each(evsel_list, counter)
|
||||
evlist__for_each_entry(evsel_list, counter)
|
||||
print_counter_aggr(counter, prefix);
|
||||
if (metric_only)
|
||||
fputc('\n', stat_config.output);
|
||||
|
@ -1495,7 +1495,7 @@ static void print_counters(struct timespec *ts, int argc, const char **argv)
|
|||
if (metric_only)
|
||||
print_no_aggr_metric(prefix);
|
||||
else {
|
||||
evlist__for_each(evsel_list, counter)
|
||||
evlist__for_each_entry(evsel_list, counter)
|
||||
print_counter(counter, prefix);
|
||||
}
|
||||
break;
|
||||
|
@ -2149,7 +2149,7 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
|
|||
const char **argv = session->header.env.cmdline_argv;
|
||||
int argc = session->header.env.nr_cmdline;
|
||||
|
||||
evlist__for_each(evsel_list, counter)
|
||||
evlist__for_each_entry(evsel_list, counter)
|
||||
perf_stat_process_counter(&stat_config, counter);
|
||||
|
||||
if (stat_round->type == PERF_STAT_ROUND_TYPE__FINAL)
|
||||
|
|
|
@ -479,7 +479,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
|
|||
|
||||
fprintf(stderr, "\nAvailable events:");
|
||||
|
||||
evlist__for_each(top->evlist, top->sym_evsel)
|
||||
evlist__for_each_entry(top->evlist, top->sym_evsel)
|
||||
fprintf(stderr, "\n\t%d %s", top->sym_evsel->idx, perf_evsel__name(top->sym_evsel));
|
||||
|
||||
prompt_integer(&counter, "Enter details event counter");
|
||||
|
@ -490,7 +490,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
|
|||
sleep(1);
|
||||
break;
|
||||
}
|
||||
evlist__for_each(top->evlist, top->sym_evsel)
|
||||
evlist__for_each_entry(top->evlist, top->sym_evsel)
|
||||
if (top->sym_evsel->idx == counter)
|
||||
break;
|
||||
} else
|
||||
|
@ -583,7 +583,7 @@ static void *display_thread_tui(void *arg)
|
|||
* Zooming in/out UIDs. For now juse use whatever the user passed
|
||||
* via --uid.
|
||||
*/
|
||||
evlist__for_each(top->evlist, pos) {
|
||||
evlist__for_each_entry(top->evlist, pos) {
|
||||
struct hists *hists = evsel__hists(pos);
|
||||
hists->uid_filter_str = top->record_opts.target.uid_str;
|
||||
}
|
||||
|
@ -888,7 +888,7 @@ static int perf_top__start_counters(struct perf_top *top)
|
|||
|
||||
perf_evlist__config(evlist, opts, &callchain_param);
|
||||
|
||||
evlist__for_each(evlist, counter) {
|
||||
evlist__for_each_entry(evlist, counter) {
|
||||
try_again:
|
||||
if (perf_evsel__open(counter, top->evlist->cpus,
|
||||
top->evlist->threads) < 0) {
|
||||
|
|
|
@ -2483,7 +2483,7 @@ static int trace__replay(struct trace *trace)
|
|||
goto out;
|
||||
}
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (evsel->attr.type == PERF_TYPE_SOFTWARE &&
|
||||
(evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ ||
|
||||
evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MIN ||
|
||||
|
@ -2714,7 +2714,7 @@ static void evlist__set_evsel_handler(struct perf_evlist *evlist, void *handler)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
evsel->handler = handler;
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ int test__backward_ring_buffer(int subtest __maybe_unused)
|
|||
perf_evlist__config(evlist, &opts, NULL);
|
||||
|
||||
/* Set backward bit, ring buffer should be writing from end */
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
evsel->attr.write_backward = 1;
|
||||
|
||||
err = perf_evlist__open(evlist);
|
||||
|
|
|
@ -80,7 +80,7 @@ static int __perf_evsel__name_array_test(const char *names[], int nr_names)
|
|||
}
|
||||
|
||||
err = 0;
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (strcmp(perf_evsel__name(evsel), names[evsel->idx])) {
|
||||
--err;
|
||||
pr_debug("%s != %s\n", perf_evsel__name(evsel), names[evsel->idx]);
|
||||
|
|
|
@ -56,7 +56,7 @@ static int add_hist_entries(struct perf_evlist *evlist,
|
|||
* (perf [perf] main) will be collapsed to an existing entry
|
||||
* so total 9 entries will be in the tree.
|
||||
*/
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
for (i = 0; i < ARRAY_SIZE(fake_samples); i++) {
|
||||
struct hist_entry_iter iter = {
|
||||
.evsel = evsel,
|
||||
|
@ -136,7 +136,7 @@ int test__hists_filter(int subtest __maybe_unused)
|
|||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
struct hists *hists = evsel__hists(evsel);
|
||||
|
||||
hists__collapse_resort(hists, NULL);
|
||||
|
|
|
@ -72,7 +72,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
|
|||
* However the second evsel also has a collapsed entry for
|
||||
* "bash [libc] malloc" so total 9 entries will be in the tree.
|
||||
*/
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
struct hists *hists = evsel__hists(evsel);
|
||||
|
||||
for (k = 0; k < ARRAY_SIZE(fake_common_samples); k++) {
|
||||
|
@ -301,7 +301,7 @@ int test__hists_link(int subtest __maybe_unused)
|
|||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
hists = evsel__hists(evsel);
|
||||
hists__collapse_resort(hists, NULL);
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ int test__basic_mmap(int subtest __maybe_unused)
|
|||
}
|
||||
|
||||
err = 0;
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (nr_events[evsel->idx] != expected_nr_events[evsel->idx]) {
|
||||
pr_debug("expected %d %s events, got %d\n",
|
||||
expected_nr_events[evsel->idx],
|
||||
|
|
|
@ -32,7 +32,7 @@ static int test__checkevent_tracepoint_multi(struct perf_evlist *evlist)
|
|||
TEST_ASSERT_VAL("wrong number of entries", evlist->nr_entries > 1);
|
||||
TEST_ASSERT_VAL("wrong number of groups", 0 == evlist->nr_groups);
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
TEST_ASSERT_VAL("wrong type",
|
||||
PERF_TYPE_TRACEPOINT == evsel->attr.type);
|
||||
TEST_ASSERT_VAL("wrong sample_type",
|
||||
|
@ -207,7 +207,7 @@ test__checkevent_tracepoint_multi_modifier(struct perf_evlist *evlist)
|
|||
|
||||
TEST_ASSERT_VAL("wrong number of entries", evlist->nr_entries > 1);
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
TEST_ASSERT_VAL("wrong exclude_user",
|
||||
!evsel->attr.exclude_user);
|
||||
TEST_ASSERT_VAL("wrong exclude_kernel",
|
||||
|
|
|
@ -432,7 +432,7 @@ int test__switch_tracking(int subtest __maybe_unused)
|
|||
}
|
||||
|
||||
/* Check non-tracking events are not tracking */
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel != tracking_evsel) {
|
||||
if (evsel->attr.mmap || evsel->attr.comm) {
|
||||
pr_debug("Non-tracking event is tracking\n");
|
||||
|
|
|
@ -3199,7 +3199,7 @@ static int __perf_evlist__tui_browse_hists(struct perf_evlist *evlist,
|
|||
|
||||
ui_helpline__push("Press ESC to exit");
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
const char *ev_name = perf_evsel__name(pos);
|
||||
size_t line_len = strlen(ev_name) + 7;
|
||||
|
||||
|
@ -3230,7 +3230,7 @@ single_entry:
|
|||
struct perf_evsel *pos;
|
||||
|
||||
nr_entries = 0;
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
if (perf_evsel__is_group_leader(pos))
|
||||
nr_entries++;
|
||||
}
|
||||
|
|
|
@ -627,7 +627,7 @@ int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist,
|
|||
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
struct hists *hists = evsel__hists(pos);
|
||||
const char *evname = perf_evsel__name(pos);
|
||||
GtkWidget *scrolled_window;
|
||||
|
|
|
@ -766,7 +766,7 @@ int perf_hpp__setup_hists_formats(struct perf_hpp_list *list,
|
|||
if (!symbol_conf.report_hierarchy)
|
||||
return 0;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
hists = evsel__hists(evsel);
|
||||
|
||||
perf_hpp_list__for_each_sort_list(list, fmt) {
|
||||
|
|
|
@ -81,7 +81,7 @@ static int add_cgroup(struct perf_evlist *evlist, char *str)
|
|||
/*
|
||||
* check if cgrp is already defined, if so we reuse it
|
||||
*/
|
||||
evlist__for_each(evlist, counter) {
|
||||
evlist__for_each_entry(evlist, counter) {
|
||||
cgrp = counter->cgrp;
|
||||
if (!cgrp)
|
||||
continue;
|
||||
|
@ -110,7 +110,7 @@ static int add_cgroup(struct perf_evlist *evlist, char *str)
|
|||
* if add cgroup N, then need to find event N
|
||||
*/
|
||||
n = 0;
|
||||
evlist__for_each(evlist, counter) {
|
||||
evlist__for_each_entry(evlist, counter) {
|
||||
if (n == nr_cgroups)
|
||||
goto found;
|
||||
n++;
|
||||
|
|
|
@ -997,7 +997,7 @@ static int setup_events(struct ctf_writer *cw, struct perf_session *session)
|
|||
struct perf_evsel *evsel;
|
||||
int ret;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
ret = add_event(cw, evsel);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -1010,7 +1010,7 @@ static void cleanup_events(struct perf_session *session)
|
|||
struct perf_evlist *evlist = session->evlist;
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
struct evsel_priv *priv;
|
||||
|
||||
priv = evsel->priv;
|
||||
|
|
|
@ -100,7 +100,7 @@ static void perf_evlist__update_id_pos(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
perf_evsel__calc_id_pos(evsel);
|
||||
|
||||
perf_evlist__set_id_pos(evlist);
|
||||
|
@ -110,7 +110,7 @@ static void perf_evlist__purge(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *pos, *n;
|
||||
|
||||
evlist__for_each_safe(evlist, n, pos) {
|
||||
evlist__for_each_entry_safe(evlist, n, pos) {
|
||||
list_del_init(&pos->node);
|
||||
pos->evlist = NULL;
|
||||
perf_evsel__delete(pos);
|
||||
|
@ -164,7 +164,7 @@ static void perf_evlist__propagate_maps(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
__perf_evlist__propagate_maps(evlist, evsel);
|
||||
}
|
||||
|
||||
|
@ -193,7 +193,7 @@ void perf_evlist__splice_list_tail(struct perf_evlist *evlist,
|
|||
{
|
||||
struct perf_evsel *evsel, *temp;
|
||||
|
||||
__evlist__for_each_safe(list, temp, evsel) {
|
||||
__evlist__for_each_entry_safe(list, temp, evsel) {
|
||||
list_del_init(&evsel->node);
|
||||
perf_evlist__add(evlist, evsel);
|
||||
}
|
||||
|
@ -208,7 +208,7 @@ void __perf_evlist__set_leader(struct list_head *list)
|
|||
|
||||
leader->nr_members = evsel->idx - leader->idx + 1;
|
||||
|
||||
__evlist__for_each(list, evsel) {
|
||||
__evlist__for_each_entry(list, evsel) {
|
||||
evsel->leader = leader;
|
||||
}
|
||||
}
|
||||
|
@ -299,7 +299,7 @@ static int perf_evlist__add_attrs(struct perf_evlist *evlist,
|
|||
return 0;
|
||||
|
||||
out_delete_partial_list:
|
||||
__evlist__for_each_safe(&head, n, evsel)
|
||||
__evlist__for_each_entry_safe(&head, n, evsel)
|
||||
perf_evsel__delete(evsel);
|
||||
return -1;
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ perf_evlist__find_tracepoint_by_id(struct perf_evlist *evlist, int id)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type == PERF_TYPE_TRACEPOINT &&
|
||||
(int)evsel->attr.config == id)
|
||||
return evsel;
|
||||
|
@ -335,7 +335,7 @@ perf_evlist__find_tracepoint_by_name(struct perf_evlist *evlist,
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if ((evsel->attr.type == PERF_TYPE_TRACEPOINT) &&
|
||||
(strcmp(evsel->name, name) == 0))
|
||||
return evsel;
|
||||
|
@ -370,7 +370,7 @@ void perf_evlist__disable(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *pos;
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
if (!perf_evsel__is_group_leader(pos) || !pos->fd)
|
||||
continue;
|
||||
perf_evsel__disable(pos);
|
||||
|
@ -383,7 +383,7 @@ void perf_evlist__enable(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *pos;
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
if (!perf_evsel__is_group_leader(pos) || !pos->fd)
|
||||
continue;
|
||||
perf_evsel__enable(pos);
|
||||
|
@ -451,7 +451,7 @@ int perf_evlist__alloc_pollfd(struct perf_evlist *evlist)
|
|||
int nfds = 0;
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->system_wide)
|
||||
nfds += nr_cpus;
|
||||
else
|
||||
|
@ -1015,7 +1015,7 @@ static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx,
|
|||
struct perf_evsel *evsel;
|
||||
int revent;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
int fd;
|
||||
|
||||
if (evsel->overwrite != (evlist->overwrite && evlist->backward))
|
||||
|
@ -1262,7 +1262,7 @@ int perf_evlist__mmap_ex(struct perf_evlist *evlist, unsigned int pages,
|
|||
auxtrace_mmap_params__init(&mp.auxtrace_mp, evlist->mmap_len,
|
||||
auxtrace_pages, auxtrace_overwrite);
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if ((evsel->attr.read_format & PERF_FORMAT_ID) &&
|
||||
evsel->sample_id == NULL &&
|
||||
perf_evsel__alloc_id(evsel, cpu_map__nr(cpus), threads->nr) < 0)
|
||||
|
@ -1338,7 +1338,7 @@ void __perf_evlist__set_sample_bit(struct perf_evlist *evlist,
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
__perf_evsel__set_sample_bit(evsel, bit);
|
||||
}
|
||||
|
||||
|
@ -1347,7 +1347,7 @@ void __perf_evlist__reset_sample_bit(struct perf_evlist *evlist,
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
__perf_evsel__reset_sample_bit(evsel, bit);
|
||||
}
|
||||
|
||||
|
@ -1358,7 +1358,7 @@ int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **e
|
|||
const int ncpus = cpu_map__nr(evlist->cpus),
|
||||
nthreads = thread_map__nr(evlist->threads);
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->filter == NULL)
|
||||
continue;
|
||||
|
||||
|
@ -1381,7 +1381,7 @@ int perf_evlist__set_filter(struct perf_evlist *evlist, const char *filter)
|
|||
struct perf_evsel *evsel;
|
||||
int err = 0;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type != PERF_TYPE_TRACEPOINT)
|
||||
continue;
|
||||
|
||||
|
@ -1435,7 +1435,7 @@ bool perf_evlist__valid_sample_type(struct perf_evlist *evlist)
|
|||
if (evlist->id_pos < 0 || evlist->is_pos < 0)
|
||||
return false;
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
if (pos->id_pos != evlist->id_pos ||
|
||||
pos->is_pos != evlist->is_pos)
|
||||
return false;
|
||||
|
@ -1451,7 +1451,7 @@ u64 __perf_evlist__combined_sample_type(struct perf_evlist *evlist)
|
|||
if (evlist->combined_sample_type)
|
||||
return evlist->combined_sample_type;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
evlist->combined_sample_type |= evsel->attr.sample_type;
|
||||
|
||||
return evlist->combined_sample_type;
|
||||
|
@ -1468,7 +1468,7 @@ u64 perf_evlist__combined_branch_type(struct perf_evlist *evlist)
|
|||
struct perf_evsel *evsel;
|
||||
u64 branch_type = 0;
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
branch_type |= evsel->attr.branch_sample_type;
|
||||
return branch_type;
|
||||
}
|
||||
|
@ -1479,7 +1479,7 @@ bool perf_evlist__valid_read_format(struct perf_evlist *evlist)
|
|||
u64 read_format = first->attr.read_format;
|
||||
u64 sample_type = first->attr.sample_type;
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
if (read_format != pos->attr.read_format)
|
||||
return false;
|
||||
}
|
||||
|
@ -1536,7 +1536,7 @@ bool perf_evlist__valid_sample_id_all(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *first = perf_evlist__first(evlist), *pos = first;
|
||||
|
||||
evlist__for_each_continue(evlist, pos) {
|
||||
evlist__for_each_entry_continue(evlist, pos) {
|
||||
if (first->attr.sample_id_all != pos->attr.sample_id_all)
|
||||
return false;
|
||||
}
|
||||
|
@ -1563,7 +1563,7 @@ void perf_evlist__close(struct perf_evlist *evlist)
|
|||
int nthreads = thread_map__nr(evlist->threads);
|
||||
int n;
|
||||
|
||||
evlist__for_each_reverse(evlist, evsel) {
|
||||
evlist__for_each_entry_reverse(evlist, evsel) {
|
||||
n = evsel->cpus ? evsel->cpus->nr : ncpus;
|
||||
perf_evsel__close(evsel, n, nthreads);
|
||||
}
|
||||
|
@ -1617,7 +1617,7 @@ int perf_evlist__open(struct perf_evlist *evlist)
|
|||
|
||||
perf_evlist__update_id_pos(evlist);
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
err = perf_evsel__open(evsel, evsel->cpus, evsel->threads);
|
||||
if (err < 0)
|
||||
goto out_err;
|
||||
|
@ -1778,7 +1778,7 @@ size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp)
|
|||
struct perf_evsel *evsel;
|
||||
size_t printed = 0;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
printed += fprintf(fp, "%s%s", evsel->idx ? ", " : "",
|
||||
perf_evsel__name(evsel));
|
||||
}
|
||||
|
@ -1880,7 +1880,7 @@ void perf_evlist__to_front(struct perf_evlist *evlist,
|
|||
if (move_evsel == perf_evlist__first(evlist))
|
||||
return;
|
||||
|
||||
evlist__for_each_safe(evlist, n, evsel) {
|
||||
evlist__for_each_entry_safe(evlist, n, evsel) {
|
||||
if (evsel->leader == move_evsel->leader)
|
||||
list_move_tail(&evsel->node, &move);
|
||||
}
|
||||
|
@ -1896,7 +1896,7 @@ void perf_evlist__set_tracking_event(struct perf_evlist *evlist,
|
|||
if (tracking_evsel->tracking)
|
||||
return;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel != tracking_evsel)
|
||||
evsel->tracking = false;
|
||||
}
|
||||
|
@ -1910,7 +1910,7 @@ perf_evlist__find_evsel_by_str(struct perf_evlist *evlist,
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (!evsel->name)
|
||||
continue;
|
||||
if (strcmp(str, evsel->name) == 0)
|
||||
|
|
|
@ -251,70 +251,70 @@ void perf_evlist__to_front(struct perf_evlist *evlist,
|
|||
struct perf_evsel *move_evsel);
|
||||
|
||||
/**
|
||||
* __evlist__for_each - iterate thru all the evsels
|
||||
* __evlist__for_each_entry - iterate thru all the evsels
|
||||
* @list: list_head instance to iterate
|
||||
* @evsel: struct evsel iterator
|
||||
*/
|
||||
#define __evlist__for_each(list, evsel) \
|
||||
#define __evlist__for_each_entry(list, evsel) \
|
||||
list_for_each_entry(evsel, list, node)
|
||||
|
||||
/**
|
||||
* evlist__for_each - iterate thru all the evsels
|
||||
* evlist__for_each_entry - iterate thru all the evsels
|
||||
* @evlist: evlist instance to iterate
|
||||
* @evsel: struct evsel iterator
|
||||
*/
|
||||
#define evlist__for_each(evlist, evsel) \
|
||||
__evlist__for_each(&(evlist)->entries, evsel)
|
||||
#define evlist__for_each_entry(evlist, evsel) \
|
||||
__evlist__for_each_entry(&(evlist)->entries, evsel)
|
||||
|
||||
/**
|
||||
* __evlist__for_each_continue - continue iteration thru all the evsels
|
||||
* __evlist__for_each_entry_continue - continue iteration thru all the evsels
|
||||
* @list: list_head instance to iterate
|
||||
* @evsel: struct evsel iterator
|
||||
*/
|
||||
#define __evlist__for_each_continue(list, evsel) \
|
||||
#define __evlist__for_each_entry_continue(list, evsel) \
|
||||
list_for_each_entry_continue(evsel, list, node)
|
||||
|
||||
/**
|
||||
* evlist__for_each_continue - continue iteration thru all the evsels
|
||||
* evlist__for_each_entry_continue - continue iteration thru all the evsels
|
||||
* @evlist: evlist instance to iterate
|
||||
* @evsel: struct evsel iterator
|
||||
*/
|
||||
#define evlist__for_each_continue(evlist, evsel) \
|
||||
__evlist__for_each_continue(&(evlist)->entries, evsel)
|
||||
#define evlist__for_each_entry_continue(evlist, evsel) \
|
||||
__evlist__for_each_entry_continue(&(evlist)->entries, evsel)
|
||||
|
||||
/**
|
||||
* __evlist__for_each_reverse - iterate thru all the evsels in reverse order
|
||||
* __evlist__for_each_entry_reverse - iterate thru all the evsels in reverse order
|
||||
* @list: list_head instance to iterate
|
||||
* @evsel: struct evsel iterator
|
||||
*/
|
||||
#define __evlist__for_each_reverse(list, evsel) \
|
||||
#define __evlist__for_each_entry_reverse(list, evsel) \
|
||||
list_for_each_entry_reverse(evsel, list, node)
|
||||
|
||||
/**
|
||||
* evlist__for_each_reverse - iterate thru all the evsels in reverse order
|
||||
* evlist__for_each_entry_reverse - iterate thru all the evsels in reverse order
|
||||
* @evlist: evlist instance to iterate
|
||||
* @evsel: struct evsel iterator
|
||||
*/
|
||||
#define evlist__for_each_reverse(evlist, evsel) \
|
||||
__evlist__for_each_reverse(&(evlist)->entries, evsel)
|
||||
#define evlist__for_each_entry_reverse(evlist, evsel) \
|
||||
__evlist__for_each_entry_reverse(&(evlist)->entries, evsel)
|
||||
|
||||
/**
|
||||
* __evlist__for_each_safe - safely iterate thru all the evsels
|
||||
* __evlist__for_each_entry_safe - safely iterate thru all the evsels
|
||||
* @list: list_head instance to iterate
|
||||
* @tmp: struct evsel temp iterator
|
||||
* @evsel: struct evsel iterator
|
||||
*/
|
||||
#define __evlist__for_each_safe(list, tmp, evsel) \
|
||||
#define __evlist__for_each_entry_safe(list, tmp, evsel) \
|
||||
list_for_each_entry_safe(evsel, tmp, list, node)
|
||||
|
||||
/**
|
||||
* evlist__for_each_safe - safely iterate thru all the evsels
|
||||
* evlist__for_each_entry_safe - safely iterate thru all the evsels
|
||||
* @evlist: evlist instance to iterate
|
||||
* @evsel: struct evsel iterator
|
||||
* @tmp: struct evsel temp iterator
|
||||
*/
|
||||
#define evlist__for_each_safe(evlist, tmp, evsel) \
|
||||
__evlist__for_each_safe(&(evlist)->entries, tmp, evsel)
|
||||
#define evlist__for_each_entry_safe(evlist, tmp, evsel) \
|
||||
__evlist__for_each_entry_safe(&(evlist)->entries, tmp, evsel)
|
||||
|
||||
void perf_evlist__set_tracking_event(struct perf_evlist *evlist,
|
||||
struct perf_evsel *tracking_evsel);
|
||||
|
|
|
@ -336,7 +336,7 @@ static int write_event_desc(int fd, struct perf_header *h __maybe_unused,
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
ret = do_write(fd, &evsel->attr, sz);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
@ -801,7 +801,7 @@ static int write_group_desc(int fd, struct perf_header *h __maybe_unused,
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (perf_evsel__is_group_leader(evsel) &&
|
||||
evsel->nr_members > 1) {
|
||||
const char *name = evsel->group_name ?: "{anon_group}";
|
||||
|
@ -1425,7 +1425,7 @@ static void print_group_desc(struct perf_header *ph, int fd __maybe_unused,
|
|||
|
||||
session = container_of(ph, struct perf_session, header);
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (perf_evsel__is_group_leader(evsel) &&
|
||||
evsel->nr_members > 1) {
|
||||
fprintf(fp, "# group: %s{%s", evsel->group_name ?: "",
|
||||
|
@ -1703,7 +1703,7 @@ perf_evlist__find_by_index(struct perf_evlist *evlist, int idx)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->idx == idx)
|
||||
return evsel;
|
||||
}
|
||||
|
@ -2075,7 +2075,7 @@ static int process_group_desc(struct perf_file_section *section __maybe_unused,
|
|||
session->evlist->nr_groups = nr_groups;
|
||||
|
||||
i = nr = 0;
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (evsel->idx == (int) desc[i].leader_idx) {
|
||||
evsel->leader = evsel;
|
||||
/* {anon_group} is a dummy name */
|
||||
|
@ -2383,7 +2383,7 @@ int perf_session__write_header(struct perf_session *session,
|
|||
|
||||
lseek(fd, sizeof(f_header), SEEK_SET);
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
evsel->id_offset = lseek(fd, 0, SEEK_CUR);
|
||||
err = do_write(fd, evsel->id, evsel->ids * sizeof(u64));
|
||||
if (err < 0) {
|
||||
|
@ -2394,7 +2394,7 @@ int perf_session__write_header(struct perf_session *session,
|
|||
|
||||
attr_offset = lseek(fd, 0, SEEK_CUR);
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
f_attr = (struct perf_file_attr){
|
||||
.attr = evsel->attr,
|
||||
.ids = {
|
||||
|
@ -2828,7 +2828,7 @@ static int perf_evlist__prepare_tracepoint_events(struct perf_evlist *evlist,
|
|||
{
|
||||
struct perf_evsel *pos;
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
if (pos->attr.type == PERF_TYPE_TRACEPOINT &&
|
||||
perf_evsel__prepare_tracepoint_event(pos, pevent))
|
||||
return -1;
|
||||
|
@ -3127,7 +3127,7 @@ int perf_event__synthesize_attrs(struct perf_tool *tool,
|
|||
struct perf_evsel *evsel;
|
||||
int err = 0;
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
err = perf_event__synthesize_attr(tool, &evsel->attr, evsel->ids,
|
||||
evsel->id, process);
|
||||
if (err) {
|
||||
|
|
|
@ -2199,7 +2199,7 @@ size_t perf_evlist__fprintf_nr_events(struct perf_evlist *evlist, FILE *fp)
|
|||
struct perf_evsel *pos;
|
||||
size_t ret = 0;
|
||||
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
ret += fprintf(fp, "%s stats:\n", perf_evsel__name(pos));
|
||||
ret += events_stats__fprintf(&evsel__hists(pos)->stats, fp);
|
||||
}
|
||||
|
|
|
@ -777,7 +777,7 @@ static int intel_bts_synth_events(struct intel_bts *bts,
|
|||
u64 id;
|
||||
int err;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type == bts->pmu_type && evsel->ids) {
|
||||
found = true;
|
||||
break;
|
||||
|
|
|
@ -557,7 +557,7 @@ static bool intel_pt_exclude_kernel(struct intel_pt *pt)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(pt->session->evlist, evsel) {
|
||||
evlist__for_each_entry(pt->session->evlist, evsel) {
|
||||
if (intel_pt_get_config(pt, &evsel->attr, NULL) &&
|
||||
!evsel->attr.exclude_kernel)
|
||||
return false;
|
||||
|
@ -573,7 +573,7 @@ static bool intel_pt_return_compression(struct intel_pt *pt)
|
|||
if (!pt->noretcomp_bit)
|
||||
return true;
|
||||
|
||||
evlist__for_each(pt->session->evlist, evsel) {
|
||||
evlist__for_each_entry(pt->session->evlist, evsel) {
|
||||
if (intel_pt_get_config(pt, &evsel->attr, &config) &&
|
||||
(config & pt->noretcomp_bit))
|
||||
return false;
|
||||
|
@ -593,7 +593,7 @@ static unsigned int intel_pt_mtc_period(struct intel_pt *pt)
|
|||
for (shift = 0, config = pt->mtc_freq_bits; !(config & 1); shift++)
|
||||
config >>= 1;
|
||||
|
||||
evlist__for_each(pt->session->evlist, evsel) {
|
||||
evlist__for_each_entry(pt->session->evlist, evsel) {
|
||||
if (intel_pt_get_config(pt, &evsel->attr, &config))
|
||||
return (config & pt->mtc_freq_bits) >> shift;
|
||||
}
|
||||
|
@ -609,7 +609,7 @@ static bool intel_pt_timeless_decoding(struct intel_pt *pt)
|
|||
if (!pt->tsc_bit || !pt->cap_user_time_zero)
|
||||
return true;
|
||||
|
||||
evlist__for_each(pt->session->evlist, evsel) {
|
||||
evlist__for_each_entry(pt->session->evlist, evsel) {
|
||||
if (!(evsel->attr.sample_type & PERF_SAMPLE_TIME))
|
||||
return true;
|
||||
if (intel_pt_get_config(pt, &evsel->attr, &config)) {
|
||||
|
@ -626,7 +626,7 @@ static bool intel_pt_tracing_kernel(struct intel_pt *pt)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(pt->session->evlist, evsel) {
|
||||
evlist__for_each_entry(pt->session->evlist, evsel) {
|
||||
if (intel_pt_get_config(pt, &evsel->attr, NULL) &&
|
||||
!evsel->attr.exclude_kernel)
|
||||
return true;
|
||||
|
@ -643,7 +643,7 @@ static bool intel_pt_have_tsc(struct intel_pt *pt)
|
|||
if (!pt->tsc_bit)
|
||||
return false;
|
||||
|
||||
evlist__for_each(pt->session->evlist, evsel) {
|
||||
evlist__for_each_entry(pt->session->evlist, evsel) {
|
||||
if (intel_pt_get_config(pt, &evsel->attr, &config)) {
|
||||
if (config & pt->tsc_bit)
|
||||
have_tsc = true;
|
||||
|
@ -1851,7 +1851,7 @@ static int intel_pt_synth_events(struct intel_pt *pt,
|
|||
u64 id;
|
||||
int err;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type == pt->pmu_type && evsel->ids) {
|
||||
found = true;
|
||||
break;
|
||||
|
@ -1931,7 +1931,7 @@ static int intel_pt_synth_events(struct intel_pt *pt,
|
|||
pt->sample_transactions = true;
|
||||
pt->transactions_id = id;
|
||||
id += 1;
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->id && evsel->id[0] == pt->transactions_id) {
|
||||
if (evsel->name)
|
||||
zfree(&evsel->name);
|
||||
|
@ -1969,7 +1969,7 @@ static struct perf_evsel *intel_pt_find_sched_switch(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each_reverse(evlist, evsel) {
|
||||
evlist__for_each_entry_reverse(evlist, evsel) {
|
||||
const char *name = perf_evsel__name(evsel);
|
||||
|
||||
if (!strcmp(name, "sched:sched_switch"))
|
||||
|
@ -1983,7 +1983,7 @@ static bool intel_pt_find_switch(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.context_switch)
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ jit_validate_events(struct perf_session *session)
|
|||
/*
|
||||
* check that all events use CLOCK_MONOTONIC
|
||||
*/
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (evsel->attr.use_clockid == 0 || evsel->attr.clockid != CLOCK_MONOTONIC)
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -1396,7 +1396,7 @@ int parse_events__modifier_event(struct list_head *list, char *str, bool add)
|
|||
if (!add && get_event_modifier(&mod, str, NULL))
|
||||
return -EINVAL;
|
||||
|
||||
__evlist__for_each(list, evsel) {
|
||||
__evlist__for_each_entry(list, evsel) {
|
||||
if (add && get_event_modifier(&mod, str, evsel))
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -1422,7 +1422,7 @@ int parse_events_name(struct list_head *list, char *name)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
__evlist__for_each(list, evsel) {
|
||||
__evlist__for_each_entry(list, evsel) {
|
||||
if (!evsel->name)
|
||||
evsel->name = strdup(name);
|
||||
}
|
||||
|
|
|
@ -957,7 +957,7 @@ static PyObject *pyrf_evlist__item(PyObject *obj, Py_ssize_t i)
|
|||
if (i >= pevlist->evlist.nr_entries)
|
||||
return NULL;
|
||||
|
||||
evlist__for_each(&pevlist->evlist, pos) {
|
||||
evlist__for_each_entry(&pevlist->evlist, pos) {
|
||||
if (i-- == 0)
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -148,7 +148,7 @@ void perf_evlist__config(struct perf_evlist *evlist, struct record_opts *opts,
|
|||
|
||||
use_comm_exec = perf_can_comm_exec();
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
perf_evsel__config(evsel, opts, callchain);
|
||||
if (evsel->tracking && use_comm_exec)
|
||||
evsel->attr.comm_exec = 1;
|
||||
|
@ -161,18 +161,18 @@ void perf_evlist__config(struct perf_evlist *evlist, struct record_opts *opts,
|
|||
* match the id.
|
||||
*/
|
||||
use_sample_identifier = perf_can_sample_identifier();
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
perf_evsel__set_sample_id(evsel, use_sample_identifier);
|
||||
} else if (evlist->nr_entries > 1) {
|
||||
struct perf_evsel *first = perf_evlist__first(evlist);
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.sample_type == first->attr.sample_type)
|
||||
continue;
|
||||
use_sample_identifier = perf_can_sample_identifier();
|
||||
break;
|
||||
}
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
perf_evsel__set_sample_id(evsel, use_sample_identifier);
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ static bool perf_session__has_comm_exec(struct perf_session *session)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (evsel->attr.comm_exec)
|
||||
return true;
|
||||
}
|
||||
|
@ -1872,7 +1872,7 @@ bool perf_session__has_traces(struct perf_session *session, const char *msg)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(session->evlist, evsel) {
|
||||
evlist__for_each_entry(session->evlist, evsel) {
|
||||
if (evsel->attr.type == PERF_TYPE_TRACEPOINT)
|
||||
return true;
|
||||
}
|
||||
|
@ -1954,7 +1954,7 @@ struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session,
|
|||
{
|
||||
struct perf_evsel *pos;
|
||||
|
||||
evlist__for_each(session->evlist, pos) {
|
||||
evlist__for_each_entry(session->evlist, pos) {
|
||||
if (pos->attr.type == type)
|
||||
return pos;
|
||||
}
|
||||
|
@ -2109,7 +2109,7 @@ int perf_event__synthesize_id_index(struct perf_tool *tool,
|
|||
max_nr = (UINT16_MAX - sizeof(struct id_index_event)) /
|
||||
sizeof(struct id_index_entry);
|
||||
|
||||
evlist__for_each(evlist, evsel)
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
nr += evsel->ids;
|
||||
|
||||
n = nr > max_nr ? max_nr : nr;
|
||||
|
@ -2122,7 +2122,7 @@ int perf_event__synthesize_id_index(struct perf_tool *tool,
|
|||
ev->id_index.header.size = sz;
|
||||
ev->id_index.nr = n;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
u32 j;
|
||||
|
||||
for (j = 0; j < evsel->ids; j++) {
|
||||
|
|
|
@ -2069,7 +2069,7 @@ static struct perf_evsel *find_evsel(struct perf_evlist *evlist, char *event_nam
|
|||
}
|
||||
|
||||
full_name = !!strchr(event_name, ':');
|
||||
evlist__for_each(evlist, pos) {
|
||||
evlist__for_each_entry(evlist, pos) {
|
||||
/* case 2 */
|
||||
if (full_name && !strcmp(pos->name, event_name))
|
||||
return pos;
|
||||
|
@ -2125,7 +2125,7 @@ static int add_all_dynamic_fields(struct perf_evlist *evlist, bool raw_trace,
|
|||
int ret;
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type != PERF_TYPE_TRACEPOINT)
|
||||
continue;
|
||||
|
||||
|
@ -2143,7 +2143,7 @@ static int add_all_matching_fields(struct perf_evlist *evlist,
|
|||
struct perf_evsel *evsel;
|
||||
struct format_field *field;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type != PERF_TYPE_TRACEPOINT)
|
||||
continue;
|
||||
|
||||
|
@ -2456,7 +2456,7 @@ static const char *get_default_sort_order(struct perf_evlist *evlist)
|
|||
if (evlist == NULL)
|
||||
goto out_no_evlist;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel->attr.type != PERF_TYPE_TRACEPOINT) {
|
||||
use_trace = false;
|
||||
break;
|
||||
|
|
|
@ -162,7 +162,7 @@ int perf_evlist__alloc_stats(struct perf_evlist *evlist, bool alloc_raw)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (perf_evsel__alloc_stats(evsel, alloc_raw))
|
||||
goto out_free;
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ void perf_evlist__free_stats(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
perf_evsel__free_stat_priv(evsel);
|
||||
perf_evsel__free_counts(evsel);
|
||||
perf_evsel__free_prev_raw_counts(evsel);
|
||||
|
@ -189,7 +189,7 @@ void perf_evlist__reset_stats(struct perf_evlist *evlist)
|
|||
{
|
||||
struct perf_evsel *evsel;
|
||||
|
||||
evlist__for_each(evlist, evsel) {
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
perf_evsel__reset_stat_priv(evsel);
|
||||
perf_evsel__reset_counts(evsel);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче