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
@@ -642,9 +642,9 @@ static int do_test_code_reading(bool try_kcore)
|
||||
|
||||
evsel = perf_evlist__first(evlist);
|
||||
|
||||
evsel->attr.comm = 1;
|
||||
evsel->attr.disabled = 1;
|
||||
evsel->attr.enable_on_exec = 0;
|
||||
evsel->core.attr.comm = 1;
|
||||
evsel->core.attr.disabled = 1;
|
||||
evsel->core.attr.enable_on_exec = 0;
|
||||
|
||||
ret = evlist__open(evlist);
|
||||
if (ret < 0) {
|
||||
|
@@ -36,7 +36,7 @@ static int attach__enable_on_exec(struct evlist *evlist)
|
||||
return err;
|
||||
}
|
||||
|
||||
evsel->attr.enable_on_exec = 1;
|
||||
evsel->core.attr.enable_on_exec = 1;
|
||||
|
||||
err = evlist__open(evlist);
|
||||
if (err < 0) {
|
||||
@@ -68,7 +68,7 @@ static int attach__current_disabled(struct evlist *evlist)
|
||||
return -1;
|
||||
}
|
||||
|
||||
evsel->attr.disabled = 1;
|
||||
evsel->core.attr.disabled = 1;
|
||||
|
||||
err = perf_evsel__open_per_thread(evsel, threads);
|
||||
if (err) {
|
||||
@@ -121,7 +121,7 @@ static int attach__cpu_disabled(struct evlist *evlist)
|
||||
return -1;
|
||||
}
|
||||
|
||||
evsel->attr.disabled = 1;
|
||||
evsel->core.attr.disabled = 1;
|
||||
|
||||
err = perf_evsel__open_per_cpu(evsel, cpus);
|
||||
if (err) {
|
||||
@@ -179,7 +179,7 @@ static int test_times(int (attach)(struct evlist *),
|
||||
}
|
||||
|
||||
evsel = perf_evlist__last(evlist);
|
||||
evsel->attr.read_format |=
|
||||
evsel->core.attr.read_format |=
|
||||
PERF_FORMAT_TOTAL_TIME_ENABLED |
|
||||
PERF_FORMAT_TOTAL_TIME_RUNNING;
|
||||
|
||||
|
@@ -90,9 +90,9 @@ int test__keep_tracking(struct test *test __maybe_unused, int subtest __maybe_un
|
||||
|
||||
evsel = perf_evlist__first(evlist);
|
||||
|
||||
evsel->attr.comm = 1;
|
||||
evsel->attr.disabled = 1;
|
||||
evsel->attr.enable_on_exec = 0;
|
||||
evsel->core.attr.comm = 1;
|
||||
evsel->core.attr.disabled = 1;
|
||||
evsel->core.attr.enable_on_exec = 0;
|
||||
|
||||
if (evlist__open(evlist) < 0) {
|
||||
pr_debug("Unable to open dummy and cycles event\n");
|
||||
|
@@ -79,7 +79,7 @@ int test__basic_mmap(struct test *test __maybe_unused, int subtest __maybe_unuse
|
||||
goto out_delete_evlist;
|
||||
}
|
||||
|
||||
evsels[i]->attr.wakeup_events = 1;
|
||||
evsels[i]->core.attr.wakeup_events = 1;
|
||||
perf_evsel__set_sample_id(evsels[i], false);
|
||||
|
||||
evlist__add(evlist, evsels[i]);
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -155,9 +155,11 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
|
||||
{
|
||||
struct evsel evsel = {
|
||||
.needs_swap = false,
|
||||
.attr = {
|
||||
.sample_type = sample_type,
|
||||
.read_format = read_format,
|
||||
.core = {
|
||||
. attr = {
|
||||
.sample_type = sample_type,
|
||||
.read_format = read_format,
|
||||
},
|
||||
},
|
||||
};
|
||||
union perf_event *event;
|
||||
@@ -221,10 +223,10 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
|
||||
int err, ret = -1;
|
||||
|
||||
if (sample_type & PERF_SAMPLE_REGS_USER)
|
||||
evsel.attr.sample_regs_user = sample_regs;
|
||||
evsel.core.attr.sample_regs_user = sample_regs;
|
||||
|
||||
if (sample_type & PERF_SAMPLE_REGS_INTR)
|
||||
evsel.attr.sample_regs_intr = sample_regs;
|
||||
evsel.core.attr.sample_regs_intr = sample_regs;
|
||||
|
||||
for (i = 0; i < sizeof(regs); i++)
|
||||
*(i + (u8 *)regs) = i & 0xfe;
|
||||
|
@@ -420,8 +420,8 @@ int test__switch_tracking(struct test *test __maybe_unused, int subtest __maybe_
|
||||
|
||||
perf_evlist__set_tracking_event(evlist, tracking_evsel);
|
||||
|
||||
tracking_evsel->attr.freq = 0;
|
||||
tracking_evsel->attr.sample_period = 1;
|
||||
tracking_evsel->core.attr.freq = 0;
|
||||
tracking_evsel->core.attr.sample_period = 1;
|
||||
|
||||
perf_evsel__set_sample_bit(tracking_evsel, TIME);
|
||||
|
||||
@@ -435,7 +435,7 @@ int test__switch_tracking(struct test *test __maybe_unused, int subtest __maybe_
|
||||
}
|
||||
|
||||
/* Check tracking event is tracking */
|
||||
if (!tracking_evsel->attr.mmap || !tracking_evsel->attr.comm) {
|
||||
if (!tracking_evsel->core.attr.mmap || !tracking_evsel->core.attr.comm) {
|
||||
pr_debug("Tracking event not tracking\n");
|
||||
goto out_err;
|
||||
}
|
||||
@@ -443,7 +443,7 @@ int test__switch_tracking(struct test *test __maybe_unused, int subtest __maybe_
|
||||
/* Check non-tracking events are not tracking */
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
if (evsel != tracking_evsel) {
|
||||
if (evsel->attr.mmap || evsel->attr.comm) {
|
||||
if (evsel->core.attr.mmap || evsel->core.attr.comm) {
|
||||
pr_debug("Non-tracking event is tracking\n");
|
||||
goto out_err;
|
||||
}
|
||||
|
@@ -84,16 +84,16 @@ int test__task_exit(struct test *test __maybe_unused, int subtest __maybe_unused
|
||||
}
|
||||
|
||||
evsel = perf_evlist__first(evlist);
|
||||
evsel->attr.task = 1;
|
||||
evsel->core.attr.task = 1;
|
||||
#ifdef __s390x__
|
||||
evsel->attr.sample_freq = 1000000;
|
||||
evsel->core.attr.sample_freq = 1000000;
|
||||
#else
|
||||
evsel->attr.sample_freq = 1;
|
||||
evsel->core.attr.sample_freq = 1;
|
||||
#endif
|
||||
evsel->attr.inherit = 0;
|
||||
evsel->attr.watermark = 0;
|
||||
evsel->attr.wakeup_events = 1;
|
||||
evsel->attr.exclude_kernel = 1;
|
||||
evsel->core.attr.inherit = 0;
|
||||
evsel->core.attr.watermark = 0;
|
||||
evsel->core.attr.wakeup_events = 1;
|
||||
evsel->core.attr.exclude_kernel = 1;
|
||||
|
||||
err = evlist__open(evlist);
|
||||
if (err < 0) {
|
||||
|
Reference in New Issue
Block a user