perf tools: Fix missing tool parameter
authorAdrian Hunter <adrian.hunter@intel.com>
Thu, 4 Jul 2013 13:20:21 +0000 (16:20 +0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 12 Jul 2013 16:52:49 +0000 (13:52 -0300)
The 'inject' command expects to get a reference to 'struct perf_inject'
from its 'tool' member.  For that to work, 'tool' needs to be a
parameter of all tool callbacks.  Make it so.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1372944040-32690-3-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-inject.c
tools/perf/util/header.c
tools/perf/util/header.h
tools/perf/util/session.c
tools/perf/util/tool.h

index f299ddf..c943513 100644 (file)
@@ -73,22 +73,17 @@ static int perf_event__repipe_event_type_synth(struct perf_tool *tool,
        return perf_event__repipe_synth(tool, event);
 }
 
-static int perf_event__repipe_tracing_data_synth(union perf_event *event,
-                                                struct perf_session *session
-                                                __maybe_unused)
-{
-       return perf_event__repipe_synth(NULL, event);
-}
-
-static int perf_event__repipe_attr(union perf_event *event,
-                                  struct perf_evlist **pevlist __maybe_unused)
+static int perf_event__repipe_attr(struct perf_tool *tool,
+                                  union perf_event *event,
+                                  struct perf_evlist **pevlist)
 {
        int ret;
-       ret = perf_event__process_attr(event, pevlist);
+
+       ret = perf_event__process_attr(tool, event, pevlist);
        if (ret)
                return ret;
 
-       return perf_event__repipe_synth(NULL, event);
+       return perf_event__repipe_synth(tool, event);
 }
 
 static int perf_event__repipe(struct perf_tool *tool,
@@ -147,13 +142,14 @@ static int perf_event__repipe_fork(struct perf_tool *tool,
        return err;
 }
 
-static int perf_event__repipe_tracing_data(union perf_event *event,
+static int perf_event__repipe_tracing_data(struct perf_tool *tool,
+                                          union perf_event *event,
                                           struct perf_session *session)
 {
        int err;
 
-       perf_event__repipe_synth(NULL, event);
-       err = perf_event__process_tracing_data(event, session);
+       perf_event__repipe_synth(tool, event);
+       err = perf_event__process_tracing_data(tool, event, session);
 
        return err;
 }
@@ -407,7 +403,7 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
                        .unthrottle     = perf_event__repipe,
                        .attr           = perf_event__repipe_attr,
                        .event_type     = perf_event__repipe_event_type_synth,
-                       .tracing_data   = perf_event__repipe_tracing_data_synth,
+                       .tracing_data   = perf_event__repipe_op2_synth,
                        .build_id       = perf_event__repipe_op2_synth,
                },
                .input_name  = "-",
index a4dafbe..d12d79c 100644 (file)
@@ -2922,7 +2922,8 @@ int perf_event__synthesize_attrs(struct perf_tool *tool,
        return err;
 }
 
-int perf_event__process_attr(union perf_event *event,
+int perf_event__process_attr(struct perf_tool *tool __maybe_unused,
+                            union perf_event *event,
                             struct perf_evlist **pevlist)
 {
        u32 i, ids, n_ids;
@@ -3065,7 +3066,8 @@ int perf_event__synthesize_tracing_data(struct perf_tool *tool, int fd,
        return aligned_size;
 }
 
-int perf_event__process_tracing_data(union perf_event *event,
+int perf_event__process_tracing_data(struct perf_tool *tool __maybe_unused,
+                                    union perf_event *event,
                                     struct perf_session *session)
 {
        ssize_t size_read, padding, size = event->tracing_data.size;
index 16a3e83..2d1ca7d 100644 (file)
@@ -130,7 +130,8 @@ int perf_event__synthesize_attr(struct perf_tool *tool,
 int perf_event__synthesize_attrs(struct perf_tool *tool,
                                 struct perf_session *session,
                                 perf_event__handler_t process);
-int perf_event__process_attr(union perf_event *event, struct perf_evlist **pevlist);
+int perf_event__process_attr(struct perf_tool *tool, union perf_event *event,
+                            struct perf_evlist **pevlist);
 
 int perf_event__synthesize_event_type(struct perf_tool *tool,
                                      u64 event_id, char *name,
@@ -145,7 +146,8 @@ int perf_event__process_event_type(struct perf_tool *tool,
 int perf_event__synthesize_tracing_data(struct perf_tool *tool,
                                        int fd, struct perf_evlist *evlist,
                                        perf_event__handler_t process);
-int perf_event__process_tracing_data(union perf_event *event,
+int perf_event__process_tracing_data(struct perf_tool *tool,
+                                    union perf_event *event,
                                     struct perf_session *session);
 
 int perf_event__synthesize_build_id(struct perf_tool *tool,
index ad47fb9..6b71b88 100644 (file)
@@ -193,7 +193,9 @@ void perf_session__delete(struct perf_session *self)
        vdso__exit();
 }
 
-static int process_event_synth_tracing_data_stub(union perf_event *event
+static int process_event_synth_tracing_data_stub(struct perf_tool *tool
+                                                __maybe_unused,
+                                                union perf_event *event
                                                 __maybe_unused,
                                                 struct perf_session *session
                                                __maybe_unused)
@@ -202,7 +204,8 @@ static int process_event_synth_tracing_data_stub(union perf_event *event
        return 0;
 }
 
-static int process_event_synth_attr_stub(union perf_event *event __maybe_unused,
+static int process_event_synth_attr_stub(struct perf_tool *tool __maybe_unused,
+                                        union perf_event *event __maybe_unused,
                                         struct perf_evlist **pevlist
                                         __maybe_unused)
 {
@@ -921,7 +924,7 @@ static int perf_session__process_user_event(struct perf_session *session, union
        /* These events are processed right away */
        switch (event->header.type) {
        case PERF_RECORD_HEADER_ATTR:
-               err = tool->attr(event, &session->evlist);
+               err = tool->attr(tool, event, &session->evlist);
                if (err == 0)
                        perf_session__set_id_hdr_size(session);
                return err;
@@ -930,7 +933,7 @@ static int perf_session__process_user_event(struct perf_session *session, union
        case PERF_RECORD_HEADER_TRACING_DATA:
                /* setup for reading amidst mmap */
                lseek(session->fd, file_offset, SEEK_SET);
-               return tool->tracing_data(event, session);
+               return tool->tracing_data(tool, event, session);
        case PERF_RECORD_HEADER_BUILD_ID:
                return tool->build_id(tool, event, session);
        case PERF_RECORD_FINISHED_ROUND:
index b0e1aad..88f8cbd 100644 (file)
@@ -18,12 +18,11 @@ typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event,
 typedef int (*event_op)(struct perf_tool *tool, union perf_event *event,
                        struct perf_sample *sample, struct machine *machine);
 
-typedef int (*event_attr_op)(union perf_event *event,
+typedef int (*event_attr_op)(struct perf_tool *tool,
+                            union perf_event *event,
                             struct perf_evlist **pevlist);
-typedef int (*event_simple_op)(struct perf_tool *tool, union perf_event *event);
 
-typedef int (*event_synth_op)(union perf_event *event,
-                             struct perf_session *session);
+typedef int (*event_simple_op)(struct perf_tool *tool, union perf_event *event);
 
 typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
                         struct perf_session *session);
@@ -39,7 +38,7 @@ struct perf_tool {
                        throttle,
                        unthrottle;
        event_attr_op   attr;
-       event_synth_op  tracing_data;
+       event_op2       tracing_data;
        event_simple_op event_type;
        event_op2       finished_round,
                        build_id;