aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/bpf-event.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/bpf-event.c')
-rw-r--r--tools/perf/util/bpf-event.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c
index 5a5dcc6d8f85..2d6d500c9af7 100644
--- a/tools/perf/util/bpf-event.c
+++ b/tools/perf/util/bpf-event.c
@@ -14,6 +14,7 @@
14#include "session.h" 14#include "session.h"
15#include "map.h" 15#include "map.h"
16#include "evlist.h" 16#include "evlist.h"
17#include "record.h"
17 18
18#define ptr_to_u64(ptr) ((__u64)(unsigned long)(ptr)) 19#define ptr_to_u64(ptr) ((__u64)(unsigned long)(ptr))
19 20
@@ -34,7 +35,7 @@ static int machine__process_bpf_event_load(struct machine *machine,
34 struct bpf_prog_info_linear *info_linear; 35 struct bpf_prog_info_linear *info_linear;
35 struct bpf_prog_info_node *info_node; 36 struct bpf_prog_info_node *info_node;
36 struct perf_env *env = machine->env; 37 struct perf_env *env = machine->env;
37 int id = event->bpf_event.id; 38 int id = event->bpf.id;
38 unsigned int i; 39 unsigned int i;
39 40
40 /* perf-record, no need to handle bpf-event */ 41 /* perf-record, no need to handle bpf-event */
@@ -63,14 +64,13 @@ static int machine__process_bpf_event_load(struct machine *machine,
63 return 0; 64 return 0;
64} 65}
65 66
66int machine__process_bpf_event(struct machine *machine __maybe_unused, 67int machine__process_bpf(struct machine *machine, union perf_event *event,
67 union perf_event *event, 68 struct perf_sample *sample)
68 struct perf_sample *sample __maybe_unused)
69{ 69{
70 if (dump_trace) 70 if (dump_trace)
71 perf_event__fprintf_bpf_event(event, stdout); 71 perf_event__fprintf_bpf(event, stdout);
72 72
73 switch (event->bpf_event.type) { 73 switch (event->bpf.type) {
74 case PERF_BPF_EVENT_PROG_LOAD: 74 case PERF_BPF_EVENT_PROG_LOAD:
75 return machine__process_bpf_event_load(machine, event, sample); 75 return machine__process_bpf_event_load(machine, event, sample);
76 76
@@ -82,8 +82,7 @@ int machine__process_bpf_event(struct machine *machine __maybe_unused,
82 */ 82 */
83 break; 83 break;
84 default: 84 default:
85 pr_debug("unexpected bpf_event type of %d\n", 85 pr_debug("unexpected bpf event type of %d\n", event->bpf.type);
86 event->bpf_event.type);
87 break; 86 break;
88 } 87 }
89 return 0; 88 return 0;
@@ -160,8 +159,8 @@ static int perf_event__synthesize_one_bpf_prog(struct perf_session *session,
160 union perf_event *event, 159 union perf_event *event,
161 struct record_opts *opts) 160 struct record_opts *opts)
162{ 161{
163 struct ksymbol_event *ksymbol_event = &event->ksymbol_event; 162 struct perf_record_ksymbol *ksymbol_event = &event->ksymbol;
164 struct bpf_event *bpf_event = &event->bpf_event; 163 struct perf_record_bpf_event *bpf_event = &event->bpf;
165 struct bpf_prog_info_linear *info_linear; 164 struct bpf_prog_info_linear *info_linear;
166 struct perf_tool *tool = session->tool; 165 struct perf_tool *tool = session->tool;
167 struct bpf_prog_info_node *info_node; 166 struct bpf_prog_info_node *info_node;
@@ -229,10 +228,10 @@ static int perf_event__synthesize_one_bpf_prog(struct perf_session *session,
229 __u64 *prog_addrs = (__u64 *)(uintptr_t)(info->jited_ksyms); 228 __u64 *prog_addrs = (__u64 *)(uintptr_t)(info->jited_ksyms);
230 int name_len; 229 int name_len;
231 230
232 *ksymbol_event = (struct ksymbol_event){ 231 *ksymbol_event = (struct perf_record_ksymbol) {
233 .header = { 232 .header = {
234 .type = PERF_RECORD_KSYMBOL, 233 .type = PERF_RECORD_KSYMBOL,
235 .size = offsetof(struct ksymbol_event, name), 234 .size = offsetof(struct perf_record_ksymbol, name),
236 }, 235 },
237 .addr = prog_addrs[i], 236 .addr = prog_addrs[i],
238 .len = prog_lens[i], 237 .len = prog_lens[i],
@@ -253,10 +252,10 @@ static int perf_event__synthesize_one_bpf_prog(struct perf_session *session,
253 252
254 if (!opts->no_bpf_event) { 253 if (!opts->no_bpf_event) {
255 /* Synthesize PERF_RECORD_BPF_EVENT */ 254 /* Synthesize PERF_RECORD_BPF_EVENT */
256 *bpf_event = (struct bpf_event){ 255 *bpf_event = (struct perf_record_bpf_event) {
257 .header = { 256 .header = {
258 .type = PERF_RECORD_BPF_EVENT, 257 .type = PERF_RECORD_BPF_EVENT,
259 .size = sizeof(struct bpf_event), 258 .size = sizeof(struct perf_record_bpf_event),
260 }, 259 },
261 .type = PERF_BPF_EVENT_PROG_LOAD, 260 .type = PERF_BPF_EVENT_PROG_LOAD,
262 .flags = 0, 261 .flags = 0,
@@ -301,7 +300,7 @@ int perf_event__synthesize_bpf_events(struct perf_session *session,
301 int err; 300 int err;
302 int fd; 301 int fd;
303 302
304 event = malloc(sizeof(event->bpf_event) + KSYM_NAME_LEN + machine->id_hdr_size); 303 event = malloc(sizeof(event->bpf) + KSYM_NAME_LEN + machine->id_hdr_size);
305 if (!event) 304 if (!event)
306 return -1; 305 return -1;
307 while (true) { 306 while (true) {
@@ -398,9 +397,9 @@ static int bpf_event__sb_cb(union perf_event *event, void *data)
398 if (event->header.type != PERF_RECORD_BPF_EVENT) 397 if (event->header.type != PERF_RECORD_BPF_EVENT)
399 return -1; 398 return -1;
400 399
401 switch (event->bpf_event.type) { 400 switch (event->bpf.type) {
402 case PERF_BPF_EVENT_PROG_LOAD: 401 case PERF_BPF_EVENT_PROG_LOAD:
403 perf_env__add_bpf_info(env, event->bpf_event.id); 402 perf_env__add_bpf_info(env, event->bpf.id);
404 403
405 case PERF_BPF_EVENT_PROG_UNLOAD: 404 case PERF_BPF_EVENT_PROG_UNLOAD:
406 /* 405 /*
@@ -410,8 +409,7 @@ static int bpf_event__sb_cb(union perf_event *event, void *data)
410 */ 409 */
411 break; 410 break;
412 default: 411 default:
413 pr_debug("unexpected bpf_event type of %d\n", 412 pr_debug("unexpected bpf event type of %d\n", event->bpf.type);
414 event->bpf_event.type);
415 break; 413 break;
416 } 414 }
417 415