Commit 71062e28 authored by Ian Rogers's avatar Ian Rogers Committed by Namhyung Kim
Browse files

perf tool: Add the perf_tool argument to all callbacks



Getting context for what a tool is doing, such as the perf_inject
instance, using container_of the tool is a common pattern in the
code. This isn't possible event_op2, event_op3 and event_op4 callbacks
as the tool isn't passed. Add the argument and then fix function
signatures to match. As tools maybe reading a tool from somewhere
else, change that code to use the passed in tool.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent fa4a527a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -313,7 +313,8 @@ static int process_sample_event(const struct perf_tool *tool,
	return ret;
}

static int process_feature_event(struct perf_session *session,
static int process_feature_event(const struct perf_tool *tool __maybe_unused,
				 struct perf_session *session,
				 union perf_event *event)
{
	if (event->feat.feat_id < HEADER_LAST_FEATURE)
+2 −1
Original line number Diff line number Diff line
@@ -19,7 +19,8 @@
#include "util/tool.h"
#include "util/util.h"

static int process_header_feature(struct perf_session *session __maybe_unused,
static int process_header_feature(const struct perf_tool *tool __maybe_unused,
				  struct perf_session *session __maybe_unused,
				  union perf_event *event __maybe_unused)
{
	session_done = 1;
+20 −16
Original line number Diff line number Diff line
@@ -197,18 +197,20 @@ static int perf_event__drop_oe(const struct perf_tool *tool __maybe_unused,
}
#endif

static int perf_event__repipe_op2_synth(struct perf_session *session,
static int perf_event__repipe_op2_synth(const struct perf_tool *tool,
					struct perf_session *session __maybe_unused,
					union perf_event *event)
{
	return perf_event__repipe_synth(session->tool, event);
	return perf_event__repipe_synth(tool, event);
}

static int perf_event__repipe_op4_synth(struct perf_session *session,
static int perf_event__repipe_op4_synth(const struct perf_tool *tool,
					struct perf_session *session __maybe_unused,
					union perf_event *event,
					u64 data __maybe_unused,
					const char *str __maybe_unused)
{
	return perf_event__repipe_synth(session->tool, event);
	return perf_event__repipe_synth(tool, event);
}

static int perf_event__repipe_attr(const struct perf_tool *tool,
@@ -258,12 +260,11 @@ static int copy_bytes(struct perf_inject *inject, struct perf_data *data, off_t
	return 0;
}

static s64 perf_event__repipe_auxtrace(struct perf_session *session,
static s64 perf_event__repipe_auxtrace(const struct perf_tool *tool,
				       struct perf_session *session,
				       union perf_event *event)
{
	const struct perf_tool *tool = session->tool;
	struct perf_inject *inject = container_of(tool, struct perf_inject,
						  tool);
	struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
	int ret;

	inject->have_auxtrace = true;
@@ -299,7 +300,8 @@ static s64 perf_event__repipe_auxtrace(struct perf_session *session,
#else

static s64
perf_event__repipe_auxtrace(struct perf_session *session __maybe_unused,
perf_event__repipe_auxtrace(const struct perf_tool *tool __maybe_unused,
			    struct perf_session *session __maybe_unused,
			    union perf_event *event __maybe_unused)
{
	pr_err("AUX area tracing not supported\n");
@@ -661,12 +663,13 @@ static int perf_event__repipe_exit(const struct perf_tool *tool,
}

#ifdef HAVE_LIBTRACEEVENT
static int perf_event__repipe_tracing_data(struct perf_session *session,
static int perf_event__repipe_tracing_data(const struct perf_tool *tool,
					   struct perf_session *session,
					   union perf_event *event)
{
	perf_event__repipe_synth(session->tool, event);
	perf_event__repipe_synth(tool, event);

	return perf_event__process_tracing_data(session, event);
	return perf_event__process_tracing_data(tool, session, event);
}
#endif

@@ -1348,7 +1351,7 @@ static int process_build_id(const struct perf_tool *tool,
{
	struct perf_inject *inject = container_of(tool, struct perf_inject, tool);

	return perf_event__process_build_id(inject->session, event);
	return perf_event__process_build_id(tool, inject->session, event);
}

static int synthesize_build_id(struct perf_inject *inject, struct dso *dso, pid_t machine_pid)
@@ -1780,9 +1783,10 @@ static int host__repipe(const struct perf_tool *tool,
	return perf_event__repipe(tool, event, sample, machine);
}

static int host__finished_init(struct perf_session *session, union perf_event *event)
static int host__finished_init(const struct perf_tool *tool, struct perf_session *session,
			       union perf_event *event)
{
	struct perf_inject *inject = container_of(session->tool, struct perf_inject, tool);
	struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
	struct guest_session *gs = &inject->guest_session;
	int ret;

@@ -1829,7 +1833,7 @@ static int host__finished_init(struct perf_session *session, union perf_event *e
	if (ret)
		return ret;

	return perf_event__repipe_op2_synth(session, event);
	return perf_event__repipe_op2_synth(tool, session, event);
}

/*
+3 −2
Original line number Diff line number Diff line
@@ -240,10 +240,11 @@ static void setup_forced_leader(struct report *report,
		evlist__force_leader(evlist);
}

static int process_feature_event(struct perf_session *session,
static int process_feature_event(const struct perf_tool *tool,
				 struct perf_session *session,
				 union perf_event *event)
{
	struct report *rep = container_of(session->tool, struct report, tool);
	struct report *rep = container_of(tool, struct report, tool);

	if (event->feat.feat_id < HEADER_LAST_FEATURE)
		return perf_event__process_feature(session, event);
+18 −13
Original line number Diff line number Diff line
@@ -2729,7 +2729,8 @@ static int process_switch_event(const struct perf_tool *tool,
			   sample->tid);
}

static int process_auxtrace_error(struct perf_session *session,
static int process_auxtrace_error(const struct perf_tool *tool,
				  struct perf_session *session,
				  union perf_event *event)
{
	if (scripting_ops && scripting_ops->process_auxtrace_error) {
@@ -2737,7 +2738,7 @@ static int process_auxtrace_error(struct perf_session *session,
		return 0;
	}

	return perf_event__process_auxtrace_error(session, event);
	return perf_event__process_auxtrace_error(tool, session, event);
}

static int
@@ -2785,7 +2786,8 @@ process_bpf_events(const struct perf_tool *tool __maybe_unused,
}

static int
process_bpf_metadata_event(struct perf_session *session __maybe_unused,
process_bpf_metadata_event(const struct perf_tool *tool __maybe_unused,
			   struct perf_session *session __maybe_unused,
			   union perf_event *event)
{
	perf_event__fprintf(event, NULL, stdout);
@@ -3544,7 +3546,8 @@ static void script__setup_sample_type(struct perf_script *script)
	}
}

static int process_stat_round_event(struct perf_session *session,
static int process_stat_round_event(const struct perf_tool *tool __maybe_unused,
				    struct perf_session *session,
				    union perf_event *event)
{
	struct perf_record_stat_round *round = &event->stat_round;
@@ -3559,7 +3562,8 @@ static int process_stat_round_event(struct perf_session *session,
	return 0;
}

static int process_stat_config_event(struct perf_session *session __maybe_unused,
static int process_stat_config_event(const struct perf_tool *tool __maybe_unused,
				     struct perf_session *session __maybe_unused,
				     union perf_event *event)
{
	perf_event__read_stat_config(&stat_config, &event->stat_config);
@@ -3593,10 +3597,10 @@ static int set_maps(struct perf_script *script)
}

static
int process_thread_map_event(struct perf_session *session,
int process_thread_map_event(const struct perf_tool *tool,
			     struct perf_session *session __maybe_unused,
			     union perf_event *event)
{
	const struct perf_tool *tool = session->tool;
	struct perf_script *script = container_of(tool, struct perf_script, tool);

	if (dump_trace)
@@ -3615,10 +3619,10 @@ int process_thread_map_event(struct perf_session *session,
}

static
int process_cpu_map_event(struct perf_session *session,
int process_cpu_map_event(const struct perf_tool *tool,
			  struct perf_session *session __maybe_unused,
			  union perf_event *event)
{
	const struct perf_tool *tool = session->tool;
	struct perf_script *script = container_of(tool, struct perf_script, tool);

	if (dump_trace)
@@ -3636,7 +3640,8 @@ int process_cpu_map_event(struct perf_session *session,
	return set_maps(script);
}

static int process_feature_event(struct perf_session *session,
static int process_feature_event(const struct perf_tool *tool __maybe_unused,
				 struct perf_session *session,
				 union perf_event *event)
{
	if (event->feat.feat_id < HEADER_LAST_FEATURE)
@@ -3645,13 +3650,13 @@ static int process_feature_event(struct perf_session *session,
}

#ifdef HAVE_AUXTRACE_SUPPORT
static int perf_script__process_auxtrace_info(struct perf_session *session,
static int perf_script__process_auxtrace_info(const struct perf_tool *tool,
					      struct perf_session *session,
					      union perf_event *event)
{
	int ret = perf_event__process_auxtrace_info(session, event);
	int ret = perf_event__process_auxtrace_info(tool, session, event);

	if (ret == 0) {
		const struct perf_tool *tool = session->tool;
		struct perf_script *script = container_of(tool, struct perf_script, tool);

		ret = perf_script__setup_per_event_dump(script);
Loading