Skip to content

Commit

Permalink
perf scripting: Add 'flush' callback to scripting API
Browse files Browse the repository at this point in the history
In order to defer some output via the scripting API, there needs to be a
callback after session processing but before the session is deleted.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
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/1408129739-17368-3-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Adrian Hunter authored and Arnaldo Carvalho de Melo committed Aug 22, 2014
1 parent d44bc55 commit d445dd2
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 0 deletions.
13 changes: 13 additions & 0 deletions tools/perf/builtin-script.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,11 @@ static int default_start_script(const char *script __maybe_unused,
return 0;
}

static int default_flush_script(void)
{
return 0;
}

static int default_stop_script(void)
{
return 0;
Expand All @@ -498,6 +503,7 @@ static int default_generate_script(struct pevent *pevent __maybe_unused,

static struct scripting_ops default_scripting_ops = {
.start_script = default_start_script,
.flush_script = default_flush_script,
.stop_script = default_stop_script,
.process_event = process_event,
.generate_script = default_generate_script,
Expand All @@ -513,6 +519,11 @@ static void setup_scripting(void)
scripting_ops = &default_scripting_ops;
}

static int flush_scripting(void)
{
return scripting_ops->flush_script();
}

static int cleanup_scripting(void)
{
pr_debug("\nperf script stopped\n");
Expand Down Expand Up @@ -1813,6 +1824,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)

err = __cmd_script(&script);

flush_scripting();

out_delete:
perf_session__delete(session);

Expand Down
6 changes: 6 additions & 0 deletions tools/perf/util/scripting-engines/trace-event-perl.c
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,11 @@ static int perl_start_script(const char *script, int argc, const char **argv)
return err;
}

static int perl_flush_script(void)
{
return 0;
}

/*
* Stop trace script
*/
Expand Down Expand Up @@ -633,6 +638,7 @@ static int perl_generate_script(struct pevent *pevent, const char *outfile)
struct scripting_ops perl_scripting_ops = {
.name = "Perl",
.start_script = perl_start_script,
.flush_script = perl_flush_script,
.stop_script = perl_stop_script,
.process_event = perl_process_event,
.generate_script = perl_generate_script,
Expand Down
6 changes: 6 additions & 0 deletions tools/perf/util/scripting-engines/trace-event-python.c
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,11 @@ static int python_start_script(const char *script, int argc, const char **argv)
return err;
}

static int python_flush_script(void)
{
return 0;
}

/*
* Stop trace script
*/
Expand Down Expand Up @@ -823,6 +828,7 @@ static int python_generate_script(struct pevent *pevent, const char *outfile)
struct scripting_ops python_scripting_ops = {
.name = "Python",
.start_script = python_start_script,
.flush_script = python_flush_script,
.stop_script = python_stop_script,
.process_event = python_process_event,
.generate_script = python_generate_script,
Expand Down
7 changes: 7 additions & 0 deletions tools/perf/util/trace-event-scripting.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@

struct scripting_context *scripting_context;

static int flush_script_unsupported(void)
{
return 0;
}

static int stop_script_unsupported(void)
{
return 0;
Expand Down Expand Up @@ -74,6 +79,7 @@ static int python_generate_script_unsupported(struct pevent *pevent
struct scripting_ops python_scripting_unsupported_ops = {
.name = "Python",
.start_script = python_start_script_unsupported,
.flush_script = flush_script_unsupported,
.stop_script = stop_script_unsupported,
.process_event = process_event_unsupported,
.generate_script = python_generate_script_unsupported,
Expand Down Expand Up @@ -137,6 +143,7 @@ static int perl_generate_script_unsupported(struct pevent *pevent
struct scripting_ops perl_scripting_unsupported_ops = {
.name = "Perl",
.start_script = perl_start_script_unsupported,
.flush_script = flush_script_unsupported,
.stop_script = stop_script_unsupported,
.process_event = process_event_unsupported,
.generate_script = perl_generate_script_unsupported,
Expand Down
1 change: 1 addition & 0 deletions tools/perf/util/trace-event.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ struct perf_session;
struct scripting_ops {
const char *name;
int (*start_script) (const char *script, int argc, const char **argv);
int (*flush_script) (void);
int (*stop_script) (void);
void (*process_event) (union perf_event *event,
struct perf_sample *sample,
Expand Down

0 comments on commit d445dd2

Please sign in to comment.