Skip to content

Commit cd102d7

Browse files
WangNan0acmel
authored andcommitted
perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event()
Following commit will allow BPF script attach to tracepoints. bpf__foreach_tev() will iterate over all events, not only kprobes. Rename it to bpf__foreach_event(). Since only group and event are used by caller, there's no need to pass full 'struct probe_trace_event' to bpf_prog_iter_callback_t. Pass only these two strings. After this patch bpf_prog_iter_callback_t natually support tracepoints. Signed-off-by: Wang Nan <[email protected]> Cc: Alexei Starovoitov <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Zefan Li <[email protected]> Cc: [email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent 8c619d6 commit cd102d7

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

tools/perf/util/bpf-loader.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,9 @@ int bpf__load(struct bpf_object *obj)
693693
return 0;
694694
}
695695

696-
int bpf__foreach_tev(struct bpf_object *obj,
697-
bpf_prog_iter_callback_t func,
698-
void *arg)
696+
int bpf__foreach_event(struct bpf_object *obj,
697+
bpf_prog_iter_callback_t func,
698+
void *arg)
699699
{
700700
struct bpf_program *prog;
701701
int err;
@@ -728,7 +728,7 @@ int bpf__foreach_tev(struct bpf_object *obj,
728728
return fd;
729729
}
730730

731-
err = (*func)(tev, fd, arg);
731+
err = (*func)(tev->group, tev->event, fd, arg);
732732
if (err) {
733733
pr_debug("bpf: call back failed, stop iterate\n");
734734
return err;

tools/perf/util/bpf-loader.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ struct bpf_object;
4646
struct parse_events_term;
4747
#define PERF_BPF_PROBE_GROUP "perf_bpf_probe"
4848

49-
typedef int (*bpf_prog_iter_callback_t)(struct probe_trace_event *tev,
49+
typedef int (*bpf_prog_iter_callback_t)(const char *group, const char *event,
5050
int fd, void *arg);
5151

5252
#ifdef HAVE_LIBBPF_SUPPORT
@@ -67,8 +67,8 @@ int bpf__strerror_probe(struct bpf_object *obj, int err,
6767
int bpf__load(struct bpf_object *obj);
6868
int bpf__strerror_load(struct bpf_object *obj, int err,
6969
char *buf, size_t size);
70-
int bpf__foreach_tev(struct bpf_object *obj,
71-
bpf_prog_iter_callback_t func, void *arg);
70+
int bpf__foreach_event(struct bpf_object *obj,
71+
bpf_prog_iter_callback_t func, void *arg);
7272

7373
int bpf__config_obj(struct bpf_object *obj, struct parse_events_term *term,
7474
struct perf_evlist *evlist, int *error_pos);
@@ -107,9 +107,9 @@ static inline int bpf__unprobe(struct bpf_object *obj __maybe_unused) { return 0
107107
static inline int bpf__load(struct bpf_object *obj __maybe_unused) { return 0; }
108108

109109
static inline int
110-
bpf__foreach_tev(struct bpf_object *obj __maybe_unused,
111-
bpf_prog_iter_callback_t func __maybe_unused,
112-
void *arg __maybe_unused)
110+
bpf__foreach_event(struct bpf_object *obj __maybe_unused,
111+
bpf_prog_iter_callback_t func __maybe_unused,
112+
void *arg __maybe_unused)
113113
{
114114
return 0;
115115
}

tools/perf/util/parse-events.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ struct __add_bpf_event_param {
584584
struct list_head *head_config;
585585
};
586586

587-
static int add_bpf_event(struct probe_trace_event *tev, int fd,
587+
static int add_bpf_event(const char *group, const char *event, int fd,
588588
void *_param)
589589
{
590590
LIST_HEAD(new_evsels);
@@ -595,27 +595,27 @@ static int add_bpf_event(struct probe_trace_event *tev, int fd,
595595
int err;
596596

597597
pr_debug("add bpf event %s:%s and attach bpf program %d\n",
598-
tev->group, tev->event, fd);
598+
group, event, fd);
599599

600-
err = parse_events_add_tracepoint(&new_evsels, &evlist->idx, tev->group,
601-
tev->event, evlist->error,
600+
err = parse_events_add_tracepoint(&new_evsels, &evlist->idx, group,
601+
event, evlist->error,
602602
param->head_config);
603603
if (err) {
604604
struct perf_evsel *evsel, *tmp;
605605

606606
pr_debug("Failed to add BPF event %s:%s\n",
607-
tev->group, tev->event);
607+
group, event);
608608
list_for_each_entry_safe(evsel, tmp, &new_evsels, node) {
609609
list_del(&evsel->node);
610610
perf_evsel__delete(evsel);
611611
}
612612
return err;
613613
}
614-
pr_debug("adding %s:%s\n", tev->group, tev->event);
614+
pr_debug("adding %s:%s\n", group, event);
615615

616616
list_for_each_entry(pos, &new_evsels, node) {
617617
pr_debug("adding %s:%s to %p\n",
618-
tev->group, tev->event, pos);
618+
group, event, pos);
619619
pos->bpf_fd = fd;
620620
}
621621
list_splice(&new_evsels, list);
@@ -661,7 +661,7 @@ int parse_events_load_bpf_obj(struct parse_events_evlist *data,
661661
goto errout;
662662
}
663663

664-
err = bpf__foreach_tev(obj, add_bpf_event, &param);
664+
err = bpf__foreach_event(obj, add_bpf_event, &param);
665665
if (err) {
666666
snprintf(errbuf, sizeof(errbuf),
667667
"Attach events in BPF object failed");

0 commit comments

Comments
 (0)