perf trace: Add pointer to BPF object containing __augmented_syscalls__

So that we can use it when looking for other components of that object
file, such as other programs to add to the BPF_MAP_TYPE_PROG_ARRAY and
use with bpf_tail_call().

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-1ibmz7ouv6llqxajy7m8igtd@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent af4a0991
...@@ -96,6 +96,7 @@ struct trace { ...@@ -96,6 +96,7 @@ struct trace {
struct perf_evlist *evlist; struct perf_evlist *evlist;
struct machine *host; struct machine *host;
struct thread *current; struct thread *current;
struct bpf_object *bpf_obj;
struct cgroup *cgroup; struct cgroup *cgroup;
u64 base_time; u64 base_time;
FILE *output; FILE *output;
...@@ -3895,6 +3896,20 @@ int cmd_trace(int argc, const char **argv) ...@@ -3895,6 +3896,20 @@ int cmd_trace(int argc, const char **argv)
if (evsel) { if (evsel) {
trace.syscalls.events.augmented = evsel; trace.syscalls.events.augmented = evsel;
evsel = perf_evlist__find_tracepoint_by_name(trace.evlist, "raw_syscalls:sys_enter");
if (evsel == NULL) {
pr_err("ERROR: raw_syscalls:sys_enter not found in the augmented BPF object\n");
goto out;
}
if (evsel->bpf_obj == NULL) {
pr_err("ERROR: raw_syscalls:sys_enter not associated to a BPF object\n");
goto out;
}
trace.bpf_obj = evsel->bpf_obj;
trace__set_bpf_map_filtered_pids(&trace); trace__set_bpf_map_filtered_pids(&trace);
trace__set_bpf_map_syscalls(&trace); trace__set_bpf_map_syscalls(&trace);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment