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

perf tools: Add aux-output config term



Expose the aux_output attribute flag to the user to configure, by adding a
config term 'aux-output'. For events that support it, selection of
'aux-output' causes the generation of AUX records instead of event records.
This requires that an AUX area event is also provided.

Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20190806084606.4021-7-alexander.shishkin@linux.intel.com


Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 9e64cefe
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -60,6 +60,8 @@ OPTIONS
	  - 'name' : User defined event name. Single quotes (') may be used to
		    escape symbols in the name from parsing by shell and tool
		    like this: name=\'CPU_CLK_UNHALTED.THREAD:cmask=0x1\'.
	  - 'aux-output': Generate AUX records instead of events. This requires
			  that an AUX area event is also provided.

          See the linkperf:perf-list[1] man page for more parameters.

+3 −0
Original line number Diff line number Diff line
@@ -833,6 +833,9 @@ static void apply_config_terms(struct evsel *evsel,
			break;
		case PERF_EVSEL__CONFIG_TERM_PERCORE:
			break;
		case PERF_EVSEL__CONFIG_TERM_AUX_OUTPUT:
			attr->aux_output = term->val.aux_output ? 1 : 0;
			break;
		default:
			break;
		}
+2 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ enum term_type {
	PERF_EVSEL__CONFIG_TERM_DRV_CFG,
	PERF_EVSEL__CONFIG_TERM_BRANCH,
	PERF_EVSEL__CONFIG_TERM_PERCORE,
	PERF_EVSEL__CONFIG_TERM_AUX_OUTPUT,
};

struct perf_evsel_config_term {
@@ -70,6 +71,7 @@ struct perf_evsel_config_term {
		char	*branch;
		unsigned long max_events;
		bool	percore;
		bool	aux_output;
	} val;
	bool weak;
};
+8 −0
Original line number Diff line number Diff line
@@ -963,6 +963,7 @@ static const char *config_term_names[__PARSE_EVENTS__TERM_TYPE_NR] = {
	[PARSE_EVENTS__TERM_TYPE_NOOVERWRITE]		= "no-overwrite",
	[PARSE_EVENTS__TERM_TYPE_DRV_CFG]		= "driver-config",
	[PARSE_EVENTS__TERM_TYPE_PERCORE]		= "percore",
	[PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT]		= "aux-output",
};

static bool config_term_shrinked;
@@ -1083,6 +1084,9 @@ do { \
			return -EINVAL;
		}
		break;
	case PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT:
		CHECK_TYPE_VAL(NUM);
		break;
	default:
		err->str = strdup("unknown term");
		err->idx = term->err_term;
@@ -1133,6 +1137,7 @@ static int config_term_tracepoint(struct perf_event_attr *attr,
	case PARSE_EVENTS__TERM_TYPE_MAX_EVENTS:
	case PARSE_EVENTS__TERM_TYPE_OVERWRITE:
	case PARSE_EVENTS__TERM_TYPE_NOOVERWRITE:
	case PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT:
		return config_term_common(attr, term, err);
	default:
		if (err) {
@@ -1225,6 +1230,9 @@ do { \
			ADD_CONFIG_TERM(PERCORE, percore,
					term->val.num ? true : false);
			break;
		case PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT:
			ADD_CONFIG_TERM(AUX_OUTPUT, aux_output, term->val.num ? 1 : 0);
			break;
		default:
			break;
		}
+1 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ enum {
	PARSE_EVENTS__TERM_TYPE_OVERWRITE,
	PARSE_EVENTS__TERM_TYPE_DRV_CFG,
	PARSE_EVENTS__TERM_TYPE_PERCORE,
	PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT,
	__PARSE_EVENTS__TERM_TYPE_NR,
};

Loading