Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d445dd2a authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo
Browse files

perf scripting: Add 'flush' callback to scripting API



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: default avatarAdrian 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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent d44bc558
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -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");
@@ -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);

+6 −0
Original line number Diff line number Diff line
@@ -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
 */
@@ -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,
+6 −0
Original line number Diff line number Diff line
@@ -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
 */
@@ -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,
+7 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -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,
+1 −0
Original line number Diff line number Diff line
@@ -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,