perf machine: Rename perf_event__preprocess_sample to machine__resolve
Since we only deal with fields in the passed struct perf_sample move this method to struct machine, that is where the perf_sample fields will be resolved to a struct addr_location, i.e. thread, map, symbol, etc. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Hemant Kumar <hemant@linux.vnet.ibm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-a1ww2lbm2vbuqsv4p7ilubu9@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
473398a21d
commit
bb3eb56622
|
@ -94,7 +94,7 @@ static int process_sample_event(struct perf_tool *tool,
|
||||||
struct addr_location al;
|
struct addr_location al;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
|
if (machine__resolve(machine, &al, sample) < 0) {
|
||||||
pr_warning("problem processing %d event, skipping it.\n",
|
pr_warning("problem processing %d event, skipping it.\n",
|
||||||
event->header.type);
|
event->header.type);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -330,7 +330,7 @@ static int diff__process_sample_event(struct perf_tool *tool __maybe_unused,
|
||||||
struct hists *hists = evsel__hists(evsel);
|
struct hists *hists = evsel__hists(evsel);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
|
if (machine__resolve(machine, &al, sample) < 0) {
|
||||||
pr_warning("problem processing %d event, skipping it.\n",
|
pr_warning("problem processing %d event, skipping it.\n",
|
||||||
event->header.type);
|
event->header.type);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -131,7 +131,7 @@ dump_raw_samples(struct perf_tool *tool,
|
||||||
struct addr_location al;
|
struct addr_location al;
|
||||||
const char *fmt;
|
const char *fmt;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
|
if (machine__resolve(machine, &al, sample) < 0) {
|
||||||
fprintf(stderr, "problem processing %d event, skipping it.\n",
|
fprintf(stderr, "problem processing %d event, skipping it.\n",
|
||||||
event->header.type);
|
event->header.type);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -154,7 +154,7 @@ static int process_sample_event(struct perf_tool *tool,
|
||||||
};
|
};
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
|
if (machine__resolve(machine, &al, sample) < 0) {
|
||||||
pr_debug("problem processing %d event, skipping it.\n",
|
pr_debug("problem processing %d event, skipping it.\n",
|
||||||
event->header.type);
|
event->header.type);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -904,7 +904,7 @@ static int process_sample_event(struct perf_tool *tool,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
|
if (machine__resolve(machine, &al, sample) < 0) {
|
||||||
pr_err("problem processing %d event, skipping it.\n",
|
pr_err("problem processing %d event, skipping it.\n",
|
||||||
event->header.type);
|
event->header.type);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -489,7 +489,7 @@ static const char *cat_backtrace(union perf_event *event,
|
||||||
if (!chain)
|
if (!chain)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
|
if (machine__resolve(machine, &al, sample) < 0) {
|
||||||
fprintf(stderr, "problem processing %d event, skipping it.\n",
|
fprintf(stderr, "problem processing %d event, skipping it.\n",
|
||||||
event->header.type);
|
event->header.type);
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
|
@ -728,7 +728,7 @@ static void perf_event__process_sample(struct perf_tool *tool,
|
||||||
if (event->header.misc & PERF_RECORD_MISC_EXACT_IP)
|
if (event->header.misc & PERF_RECORD_MISC_EXACT_IP)
|
||||||
top->exact_samples++;
|
top->exact_samples++;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(event, machine, &al, sample) < 0)
|
if (machine__resolve(machine, &al, sample) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!top->kptr_restrict_warned &&
|
if (!top->kptr_restrict_warned &&
|
||||||
|
|
|
@ -81,11 +81,6 @@ static int add_hist_entries(struct hists *hists, struct machine *machine)
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(fake_samples); i++) {
|
for (i = 0; i < ARRAY_SIZE(fake_samples); i++) {
|
||||||
const union perf_event event = {
|
|
||||||
.header = {
|
|
||||||
.misc = PERF_RECORD_MISC_USER,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
struct hist_entry_iter iter = {
|
struct hist_entry_iter iter = {
|
||||||
.evsel = evsel,
|
.evsel = evsel,
|
||||||
.sample = &sample,
|
.sample = &sample,
|
||||||
|
@ -103,8 +98,7 @@ static int add_hist_entries(struct hists *hists, struct machine *machine)
|
||||||
sample.ip = fake_samples[i].ip;
|
sample.ip = fake_samples[i].ip;
|
||||||
sample.callchain = (struct ip_callchain *)fake_callchains[i];
|
sample.callchain = (struct ip_callchain *)fake_callchains[i];
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(&event, machine, &al,
|
if (machine__resolve(machine, &al, &sample) < 0)
|
||||||
&sample) < 0)
|
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH,
|
if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH,
|
||||||
|
|
|
@ -58,11 +58,6 @@ static int add_hist_entries(struct perf_evlist *evlist,
|
||||||
*/
|
*/
|
||||||
evlist__for_each(evlist, evsel) {
|
evlist__for_each(evlist, evsel) {
|
||||||
for (i = 0; i < ARRAY_SIZE(fake_samples); i++) {
|
for (i = 0; i < ARRAY_SIZE(fake_samples); i++) {
|
||||||
const union perf_event event = {
|
|
||||||
.header = {
|
|
||||||
.misc = PERF_RECORD_MISC_USER,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
struct hist_entry_iter iter = {
|
struct hist_entry_iter iter = {
|
||||||
.evsel = evsel,
|
.evsel = evsel,
|
||||||
.sample = &sample,
|
.sample = &sample,
|
||||||
|
@ -81,8 +76,7 @@ static int add_hist_entries(struct perf_evlist *evlist,
|
||||||
sample.tid = fake_samples[i].pid;
|
sample.tid = fake_samples[i].pid;
|
||||||
sample.ip = fake_samples[i].ip;
|
sample.ip = fake_samples[i].ip;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(&event, machine, &al,
|
if (machine__resolve(machine, &al, &sample) < 0)
|
||||||
&sample) < 0)
|
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
al.socket = fake_samples[i].socket;
|
al.socket = fake_samples[i].socket;
|
||||||
|
|
|
@ -76,18 +76,12 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
|
||||||
struct hists *hists = evsel__hists(evsel);
|
struct hists *hists = evsel__hists(evsel);
|
||||||
|
|
||||||
for (k = 0; k < ARRAY_SIZE(fake_common_samples); k++) {
|
for (k = 0; k < ARRAY_SIZE(fake_common_samples); k++) {
|
||||||
const union perf_event event = {
|
|
||||||
.header = {
|
|
||||||
.misc = PERF_RECORD_MISC_USER,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
sample.cpumode = PERF_RECORD_MISC_USER;
|
sample.cpumode = PERF_RECORD_MISC_USER;
|
||||||
sample.pid = fake_common_samples[k].pid;
|
sample.pid = fake_common_samples[k].pid;
|
||||||
sample.tid = fake_common_samples[k].pid;
|
sample.tid = fake_common_samples[k].pid;
|
||||||
sample.ip = fake_common_samples[k].ip;
|
sample.ip = fake_common_samples[k].ip;
|
||||||
if (perf_event__preprocess_sample(&event, machine, &al,
|
|
||||||
&sample) < 0)
|
if (machine__resolve(machine, &al, &sample) < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
he = __hists__add_entry(hists, &al, NULL,
|
he = __hists__add_entry(hists, &al, NULL,
|
||||||
|
@ -103,17 +97,10 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (k = 0; k < ARRAY_SIZE(fake_samples[i]); k++) {
|
for (k = 0; k < ARRAY_SIZE(fake_samples[i]); k++) {
|
||||||
const union perf_event event = {
|
|
||||||
.header = {
|
|
||||||
.misc = PERF_RECORD_MISC_USER,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
sample.pid = fake_samples[i][k].pid;
|
sample.pid = fake_samples[i][k].pid;
|
||||||
sample.tid = fake_samples[i][k].pid;
|
sample.tid = fake_samples[i][k].pid;
|
||||||
sample.ip = fake_samples[i][k].ip;
|
sample.ip = fake_samples[i][k].ip;
|
||||||
if (perf_event__preprocess_sample(&event, machine, &al,
|
if (machine__resolve(machine, &al, &sample) < 0)
|
||||||
&sample) < 0)
|
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
he = __hists__add_entry(hists, &al, NULL,
|
he = __hists__add_entry(hists, &al, NULL,
|
||||||
|
|
|
@ -51,11 +51,6 @@ static int add_hist_entries(struct hists *hists, struct machine *machine)
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(fake_samples); i++) {
|
for (i = 0; i < ARRAY_SIZE(fake_samples); i++) {
|
||||||
const union perf_event event = {
|
|
||||||
.header = {
|
|
||||||
.misc = PERF_RECORD_MISC_USER,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
struct hist_entry_iter iter = {
|
struct hist_entry_iter iter = {
|
||||||
.evsel = evsel,
|
.evsel = evsel,
|
||||||
.sample = &sample,
|
.sample = &sample,
|
||||||
|
@ -69,8 +64,7 @@ static int add_hist_entries(struct hists *hists, struct machine *machine)
|
||||||
sample.tid = fake_samples[i].pid;
|
sample.tid = fake_samples[i].pid;
|
||||||
sample.ip = fake_samples[i].ip;
|
sample.ip = fake_samples[i].ip;
|
||||||
|
|
||||||
if (perf_event__preprocess_sample(&event, machine, &al,
|
if (machine__resolve(machine, &al, &sample) < 0)
|
||||||
&sample) < 0)
|
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH,
|
if (hist_entry_iter__add(&iter, &al, PERF_MAX_STACK_DEPTH,
|
||||||
|
|
|
@ -1295,10 +1295,8 @@ void thread__find_addr_location(struct thread *thread,
|
||||||
* Callers need to drop the reference to al->thread, obtained in
|
* Callers need to drop the reference to al->thread, obtained in
|
||||||
* machine__findnew_thread()
|
* machine__findnew_thread()
|
||||||
*/
|
*/
|
||||||
int perf_event__preprocess_sample(const union perf_event *event __maybe_unused,
|
int machine__resolve(struct machine *machine, struct addr_location *al,
|
||||||
struct machine *machine,
|
struct perf_sample *sample)
|
||||||
struct addr_location *al,
|
|
||||||
struct perf_sample *sample)
|
|
||||||
{
|
{
|
||||||
struct thread *thread = machine__findnew_thread(machine, sample->pid,
|
struct thread *thread = machine__findnew_thread(machine, sample->pid,
|
||||||
sample->tid);
|
sample->tid);
|
||||||
|
|
|
@ -598,10 +598,8 @@ int perf_event__process(struct perf_tool *tool,
|
||||||
|
|
||||||
struct addr_location;
|
struct addr_location;
|
||||||
|
|
||||||
int perf_event__preprocess_sample(const union perf_event *event,
|
int machine__resolve(struct machine *machine, struct addr_location *al,
|
||||||
struct machine *machine,
|
struct perf_sample *sample);
|
||||||
struct addr_location *al,
|
|
||||||
struct perf_sample *sample);
|
|
||||||
|
|
||||||
void addr_location__put(struct addr_location *al);
|
void addr_location__put(struct addr_location *al);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue