libperf: Move perf_event_attr field from perf's evsel to libperf's perf_evsel
Move the perf_event_attr struct fron 'struct evsel' to 'struct perf_evsel'. Committer notes: Fixed up these: tools/perf/arch/arm/util/auxtrace.c tools/perf/arch/arm/util/cs-etm.c tools/perf/arch/arm64/util/arm-spe.c tools/perf/arch/s390/util/auxtrace.c tools/perf/util/cs-etm.c Also cc1: warnings being treated as errors tests/sample-parsing.c: In function 'do_test': tests/sample-parsing.c:162: error: missing initializer tests/sample-parsing.c:162: error: (near initialization for 'evsel.core.cpus') struct evsel evsel = { .needs_swap = false, - .core.attr = { - .sample_type = sample_type, - .read_format = read_format, + .core = { + . attr = { + .sample_type = sample_type, + .read_format = read_format, + }, [perfbuilder@a70e4eeb5549 /]$ gcc --version |& head -1 gcc (GCC) 4.4.7 Also we don't need to include perf_event.h in tools/perf/lib/include/perf/evsel.h, forward declaring 'struct perf_event_attr' is enough. And this even fixes the build in some systems where things are used somewhere down the include path from perf_event.h without defining __always_inline. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexey Budankov <alexey.budankov@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20190721112506.12306-43-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
6484d2f9dc
commit
1fc632cef4
@@ -2046,8 +2046,8 @@ static int trace__resolve_callchain(struct trace *trace, struct evsel *evsel,
|
||||
struct callchain_cursor *cursor)
|
||||
{
|
||||
struct addr_location al;
|
||||
int max_stack = evsel->attr.sample_max_stack ?
|
||||
evsel->attr.sample_max_stack :
|
||||
int max_stack = evsel->core.attr.sample_max_stack ?
|
||||
evsel->core.attr.sample_max_stack :
|
||||
trace->max_stack;
|
||||
int err;
|
||||
|
||||
@@ -2462,7 +2462,7 @@ static int trace__pgfault(struct trace *trace,
|
||||
if (ttrace == NULL)
|
||||
goto out_put;
|
||||
|
||||
if (evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ)
|
||||
if (evsel->core.attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ)
|
||||
ttrace->pfmaj++;
|
||||
else
|
||||
ttrace->pfmin++;
|
||||
@@ -2475,7 +2475,7 @@ static int trace__pgfault(struct trace *trace,
|
||||
trace__fprintf_entry_head(trace, thread, 0, true, sample->time, trace->output);
|
||||
|
||||
fprintf(trace->output, "%sfault [",
|
||||
evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ ?
|
||||
evsel->core.attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ ?
|
||||
"maj" : "min");
|
||||
|
||||
print_location(trace->output, sample, &al, false, true);
|
||||
@@ -2523,7 +2523,7 @@ static void trace__set_base_time(struct trace *trace,
|
||||
* appears in our event stream (vfs_getname comes to mind).
|
||||
*/
|
||||
if (trace->base_time == 0 && !trace->full_time &&
|
||||
(evsel->attr.sample_type & PERF_SAMPLE_TIME))
|
||||
(evsel->core.attr.sample_type & PERF_SAMPLE_TIME))
|
||||
trace->base_time = sample->time;
|
||||
}
|
||||
|
||||
@@ -2682,7 +2682,7 @@ static void trace__handle_event(struct trace *trace, union perf_event *event, st
|
||||
|
||||
trace__set_base_time(trace, evsel, sample);
|
||||
|
||||
if (evsel->attr.type == PERF_TYPE_TRACEPOINT &&
|
||||
if (evsel->core.attr.type == PERF_TYPE_TRACEPOINT &&
|
||||
sample->raw_data == NULL) {
|
||||
fprintf(trace->output, "%s sample with no payload for tid: %d, cpu %d, raw_size=%d, skipping...\n",
|
||||
perf_evsel__name(evsel), sample->tid,
|
||||
@@ -2728,7 +2728,7 @@ static int trace__add_syscall_newtp(struct trace *trace)
|
||||
* leading to the syscall, allow overriding that for
|
||||
* debugging reasons using --kernel_syscall_callchains
|
||||
*/
|
||||
sys_exit->attr.exclude_callchain_kernel = 1;
|
||||
sys_exit->core.attr.exclude_callchain_kernel = 1;
|
||||
}
|
||||
|
||||
trace->syscalls.events.sys_enter = sys_enter;
|
||||
@@ -3414,18 +3414,18 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
|
||||
|
||||
trace->multiple_threads = thread_map__pid(evlist->threads, 0) == -1 ||
|
||||
evlist->threads->nr > 1 ||
|
||||
perf_evlist__first(evlist)->attr.inherit;
|
||||
perf_evlist__first(evlist)->core.attr.inherit;
|
||||
|
||||
/*
|
||||
* Now that we already used evsel->attr to ask the kernel to setup the
|
||||
* events, lets reuse evsel->attr.sample_max_stack as the limit in
|
||||
* Now that we already used evsel->core.attr to ask the kernel to setup the
|
||||
* events, lets reuse evsel->core.attr.sample_max_stack as the limit in
|
||||
* trace__resolve_callchain(), allowing per-event max-stack settings
|
||||
* to override an explicitly set --max-stack global setting.
|
||||
*/
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel__has_callchain(evsel) &&
|
||||
evsel->attr.sample_max_stack == 0)
|
||||
evsel->attr.sample_max_stack = trace->max_stack;
|
||||
evsel->core.attr.sample_max_stack == 0)
|
||||
evsel->core.attr.sample_max_stack = trace->max_stack;
|
||||
}
|
||||
again:
|
||||
before = trace->nr_events;
|
||||
@@ -3618,10 +3618,10 @@ static int trace__replay(struct trace *trace)
|
||||
}
|
||||
|
||||
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 ||
|
||||
evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS))
|
||||
if (evsel->core.attr.type == PERF_TYPE_SOFTWARE &&
|
||||
(evsel->core.attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ ||
|
||||
evsel->core.attr.config == PERF_COUNT_SW_PAGE_FAULTS_MIN ||
|
||||
evsel->core.attr.config == PERF_COUNT_SW_PAGE_FAULTS))
|
||||
evsel->handler = trace__pgfault;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user