[PATCH 4/5] perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event()

2016-07-13 Thread Wang Nan
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 
Cc: Arnaldo Carvalho de Melo 
Cc: Alexei Starovoitov 
Cc: Li Zefan 
Cc: Jiri Olsa 
---
 tools/perf/util/bpf-loader.c   |  8 
 tools/perf/util/bpf-loader.h   | 12 ++--
 tools/perf/util/parse-events.c | 16 
 3 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 8445e89..f227014 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -693,9 +693,9 @@ int bpf__load(struct bpf_object *obj)
return 0;
 }
 
-int bpf__foreach_tev(struct bpf_object *obj,
-bpf_prog_iter_callback_t func,
-void *arg)
+int bpf__foreach_event(struct bpf_object *obj,
+  bpf_prog_iter_callback_t func,
+  void *arg)
 {
struct bpf_program *prog;
int err;
@@ -728,7 +728,7 @@ int bpf__foreach_tev(struct bpf_object *obj,
return fd;
}
 
-   err = (*func)(tev, fd, arg);
+   err = (*func)(tev->group, tev->event, fd, arg);
if (err) {
pr_debug("bpf: call back failed, stop 
iterate\n");
return err;
diff --git a/tools/perf/util/bpf-loader.h b/tools/perf/util/bpf-loader.h
index 941e172..f2b737b 100644
--- a/tools/perf/util/bpf-loader.h
+++ b/tools/perf/util/bpf-loader.h
@@ -46,7 +46,7 @@ struct bpf_object;
 struct parse_events_term;
 #define PERF_BPF_PROBE_GROUP "perf_bpf_probe"
 
-typedef int (*bpf_prog_iter_callback_t)(struct probe_trace_event *tev,
+typedef int (*bpf_prog_iter_callback_t)(const char *group, const char *event,
int fd, void *arg);
 
 #ifdef HAVE_LIBBPF_SUPPORT
@@ -67,8 +67,8 @@ int bpf__strerror_probe(struct bpf_object *obj, int err,
 int bpf__load(struct bpf_object *obj);
 int bpf__strerror_load(struct bpf_object *obj, int err,
   char *buf, size_t size);
-int bpf__foreach_tev(struct bpf_object *obj,
-bpf_prog_iter_callback_t func, void *arg);
+int bpf__foreach_event(struct bpf_object *obj,
+  bpf_prog_iter_callback_t func, void *arg);
 
 int bpf__config_obj(struct bpf_object *obj, struct parse_events_term *term,
struct perf_evlist *evlist, int *error_pos);
@@ -107,9 +107,9 @@ static inline int bpf__unprobe(struct bpf_object *obj 
__maybe_unused) { return 0
 static inline int bpf__load(struct bpf_object *obj __maybe_unused) { return 0; 
}
 
 static inline int
-bpf__foreach_tev(struct bpf_object *obj __maybe_unused,
-bpf_prog_iter_callback_t func __maybe_unused,
-void *arg __maybe_unused)
+bpf__foreach_event(struct bpf_object *obj __maybe_unused,
+  bpf_prog_iter_callback_t func __maybe_unused,
+  void *arg __maybe_unused)
 {
return 0;
 }
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index d866824..6b4fff3 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -584,7 +584,7 @@ struct __add_bpf_event_param {
struct list_head *head_config;
 };
 
-static int add_bpf_event(struct probe_trace_event *tev, int fd,
+static int add_bpf_event(const char *group, const char *event, int fd,
 void *_param)
 {
LIST_HEAD(new_evsels);
@@ -595,27 +595,27 @@ static int add_bpf_event(struct probe_trace_event *tev, 
int fd,
int err;
 
pr_debug("add bpf event %s:%s and attach bpf program %d\n",
-tev->group, tev->event, fd);
+group, event, fd);
 
-   err = parse_events_add_tracepoint(_evsels, >idx, tev->group,
- tev->event, evlist->error,
+   err = parse_events_add_tracepoint(_evsels, >idx, group,
+ event, evlist->error,
  param->head_config);
if (err) {
struct perf_evsel *evsel, *tmp;
 
pr_debug("Failed to add BPF event %s:%s\n",
-tev->group, tev->event);
+group, event);
list_for_each_entry_safe(evsel, tmp, _evsels, node) {
list_del(>node);
perf_evsel__delete(evsel);
}
return err;
}
- 

[PATCH 4/5] perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event()

2016-07-13 Thread Wang Nan
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 
Cc: Arnaldo Carvalho de Melo 
Cc: Alexei Starovoitov 
Cc: Li Zefan 
Cc: Jiri Olsa 
---
 tools/perf/util/bpf-loader.c   |  8 
 tools/perf/util/bpf-loader.h   | 12 ++--
 tools/perf/util/parse-events.c | 16 
 3 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 8445e89..f227014 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -693,9 +693,9 @@ int bpf__load(struct bpf_object *obj)
return 0;
 }
 
-int bpf__foreach_tev(struct bpf_object *obj,
-bpf_prog_iter_callback_t func,
-void *arg)
+int bpf__foreach_event(struct bpf_object *obj,
+  bpf_prog_iter_callback_t func,
+  void *arg)
 {
struct bpf_program *prog;
int err;
@@ -728,7 +728,7 @@ int bpf__foreach_tev(struct bpf_object *obj,
return fd;
}
 
-   err = (*func)(tev, fd, arg);
+   err = (*func)(tev->group, tev->event, fd, arg);
if (err) {
pr_debug("bpf: call back failed, stop 
iterate\n");
return err;
diff --git a/tools/perf/util/bpf-loader.h b/tools/perf/util/bpf-loader.h
index 941e172..f2b737b 100644
--- a/tools/perf/util/bpf-loader.h
+++ b/tools/perf/util/bpf-loader.h
@@ -46,7 +46,7 @@ struct bpf_object;
 struct parse_events_term;
 #define PERF_BPF_PROBE_GROUP "perf_bpf_probe"
 
-typedef int (*bpf_prog_iter_callback_t)(struct probe_trace_event *tev,
+typedef int (*bpf_prog_iter_callback_t)(const char *group, const char *event,
int fd, void *arg);
 
 #ifdef HAVE_LIBBPF_SUPPORT
@@ -67,8 +67,8 @@ int bpf__strerror_probe(struct bpf_object *obj, int err,
 int bpf__load(struct bpf_object *obj);
 int bpf__strerror_load(struct bpf_object *obj, int err,
   char *buf, size_t size);
-int bpf__foreach_tev(struct bpf_object *obj,
-bpf_prog_iter_callback_t func, void *arg);
+int bpf__foreach_event(struct bpf_object *obj,
+  bpf_prog_iter_callback_t func, void *arg);
 
 int bpf__config_obj(struct bpf_object *obj, struct parse_events_term *term,
struct perf_evlist *evlist, int *error_pos);
@@ -107,9 +107,9 @@ static inline int bpf__unprobe(struct bpf_object *obj 
__maybe_unused) { return 0
 static inline int bpf__load(struct bpf_object *obj __maybe_unused) { return 0; 
}
 
 static inline int
-bpf__foreach_tev(struct bpf_object *obj __maybe_unused,
-bpf_prog_iter_callback_t func __maybe_unused,
-void *arg __maybe_unused)
+bpf__foreach_event(struct bpf_object *obj __maybe_unused,
+  bpf_prog_iter_callback_t func __maybe_unused,
+  void *arg __maybe_unused)
 {
return 0;
 }
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index d866824..6b4fff3 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -584,7 +584,7 @@ struct __add_bpf_event_param {
struct list_head *head_config;
 };
 
-static int add_bpf_event(struct probe_trace_event *tev, int fd,
+static int add_bpf_event(const char *group, const char *event, int fd,
 void *_param)
 {
LIST_HEAD(new_evsels);
@@ -595,27 +595,27 @@ static int add_bpf_event(struct probe_trace_event *tev, 
int fd,
int err;
 
pr_debug("add bpf event %s:%s and attach bpf program %d\n",
-tev->group, tev->event, fd);
+group, event, fd);
 
-   err = parse_events_add_tracepoint(_evsels, >idx, tev->group,
- tev->event, evlist->error,
+   err = parse_events_add_tracepoint(_evsels, >idx, group,
+ event, evlist->error,
  param->head_config);
if (err) {
struct perf_evsel *evsel, *tmp;
 
pr_debug("Failed to add BPF event %s:%s\n",
-tev->group, tev->event);
+group, event);
list_for_each_entry_safe(evsel, tmp, _evsels, node) {
list_del(>node);
perf_evsel__delete(evsel);
}
return err;
}
-   pr_debug("adding %s:%s\n", tev->group, tev->event);
+   pr_debug("adding %s:%s\n",