All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	David Ahern <dsahern@gmail.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Andi Kleen <andi@firstfloor.org>
Subject: [PATCH 18/43] perf stat: Pass stat_config argument to local print functions
Date: Thu, 30 Aug 2018 08:32:27 +0200	[thread overview]
Message-ID: <20180830063252.23729-19-jolsa@kernel.org> (raw)
In-Reply-To: <20180830063252.23729-1-jolsa@kernel.org>

Adding stat_config argument local print functions, so those
functions could be moved out of stat command to generic object
in following patches.

Link: http://lkml.kernel.org/n/tip-p1yrm9p91j87rx77eqzf5cfk@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/builtin-stat.c | 149 ++++++++++++++++++++------------------
 1 file changed, 80 insertions(+), 69 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index f340641fe63a..f56da22abccc 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -660,30 +660,33 @@ static int run_perf_stat(int argc, const char **argv, int run_idx)
 	return ret;
 }
 
-static void print_running(u64 run, u64 ena)
+static void print_running(struct perf_stat_config *config,
+			  u64 run, u64 ena)
 {
 	if (csv_output) {
-		fprintf(stat_config.output, "%s%" PRIu64 "%s%.2f",
+		fprintf(config->output, "%s%" PRIu64 "%s%.2f",
 					csv_sep,
 					run,
 					csv_sep,
 					ena ? 100.0 * run / ena : 100.0);
 	} else if (run != ena) {
-		fprintf(stat_config.output, "  (%.2f%%)", 100.0 * run / ena);
+		fprintf(config->output, "  (%.2f%%)", 100.0 * run / ena);
 	}
 }
 
-static void print_noise_pct(double total, double avg)
+static void print_noise_pct(struct perf_stat_config *config,
+			    double total, double avg)
 {
 	double pct = rel_stddev_stats(total, avg);
 
 	if (csv_output)
-		fprintf(stat_config.output, "%s%.2f%%", csv_sep, pct);
+		fprintf(config->output, "%s%.2f%%", csv_sep, pct);
 	else if (pct)
-		fprintf(stat_config.output, "  ( +-%6.2f%% )", pct);
+		fprintf(config->output, "  ( +-%6.2f%% )", pct);
 }
 
-static void print_noise(struct perf_evsel *evsel, double avg)
+static void print_noise(struct perf_stat_config *config,
+			struct perf_evsel *evsel, double avg)
 {
 	struct perf_stat_evsel *ps;
 
@@ -691,7 +694,7 @@ static void print_noise(struct perf_evsel *evsel, double avg)
 		return;
 
 	ps = evsel->stats;
-	print_noise_pct(stddev_stats(&ps->res_stats[0]), avg);
+	print_noise_pct(config, stddev_stats(&ps->res_stats[0]), avg);
 }
 
 static void aggr_printout(struct perf_evsel *evsel, int id, int nr)
@@ -987,13 +990,14 @@ static bool is_mixed_hw_group(struct perf_evsel *counter)
 	return false;
 }
 
-static void printout(int id, int nr, struct perf_evsel *counter, double uval,
+static void printout(struct perf_stat_config *config, int id, int nr,
+		     struct perf_evsel *counter, double uval,
 		     char *prefix, u64 run, u64 ena, double noise,
 		     struct runtime_stat *st)
 {
 	struct perf_stat_output_ctx out;
 	struct outstate os = {
-		.fh = stat_config.output,
+		.fh = config->output,
 		.prefix = prefix ? prefix : "",
 		.id = id,
 		.nr = nr,
@@ -1023,7 +1027,7 @@ static void printout(int id, int nr, struct perf_evsel *counter, double uval,
 		pm = print_metric_csv;
 		nl = new_line_csv;
 		os.nfields = 3;
-		os.nfields += aggr_fields[stat_config.aggr_mode];
+		os.nfields += aggr_fields[config->aggr_mode];
 		if (counter->cgrp)
 			os.nfields++;
 	}
@@ -1034,7 +1038,7 @@ static void printout(int id, int nr, struct perf_evsel *counter, double uval,
 		}
 		aggr_printout(counter, id, nr);
 
-		fprintf(stat_config.output, "%*s%s",
+		fprintf(config->output, "%*s%s",
 			csv_output ? 0 : 18,
 			counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED,
 			csv_sep);
@@ -1045,22 +1049,22 @@ static void printout(int id, int nr, struct perf_evsel *counter, double uval,
 				print_mixed_hw_group_error = 1;
 		}
 
-		fprintf(stat_config.output, "%-*s%s",
+		fprintf(config->output, "%-*s%s",
 			csv_output ? 0 : unit_width,
 			counter->unit, csv_sep);
 
-		fprintf(stat_config.output, "%*s",
+		fprintf(config->output, "%*s",
 			csv_output ? 0 : -25,
 			perf_evsel__name(counter));
 
 		if (counter->cgrp)
-			fprintf(stat_config.output, "%s%s",
+			fprintf(config->output, "%s%s",
 				csv_sep, counter->cgrp->name);
 
 		if (!csv_output)
 			pm(&os, NULL, NULL, "", 0);
-		print_noise(counter, noise);
-		print_running(run, ena);
+		print_noise(config, counter, noise);
+		print_running(config, run, ena);
 		if (csv_output)
 			pm(&os, NULL, NULL, "", 0);
 		return;
@@ -1075,16 +1079,16 @@ static void printout(int id, int nr, struct perf_evsel *counter, double uval,
 	out.force_header = false;
 
 	if (csv_output && !metric_only) {
-		print_noise(counter, noise);
-		print_running(run, ena);
+		print_noise(config, counter, noise);
+		print_running(config, run, ena);
 	}
 
 	perf_stat__print_shadow_stats(counter, uval,
 				first_shadow_cpu(counter, id),
 				&out, &metric_events, st);
 	if (!csv_output && !metric_only) {
-		print_noise(counter, noise);
-		print_running(run, ena);
+		print_noise(config, counter, noise);
+		print_running(config, run, ena);
 	}
 }
 
@@ -1211,9 +1215,10 @@ static void aggr_cb(struct perf_evsel *counter, void *data, bool first)
 	}
 }
 
-static void print_aggr(char *prefix)
+static void print_aggr(struct perf_stat_config *config,
+		       char *prefix)
 {
-	FILE *output = stat_config.output;
+	FILE *output = config->output;
 	struct perf_evsel *counter;
 	int s, id, nr;
 	double uval;
@@ -1256,8 +1261,8 @@ static void print_aggr(char *prefix)
 				fprintf(output, "%s", prefix);
 
 			uval = val * counter->scale;
-			printout(id, nr, counter, uval, prefix, run, ena, 1.0,
-				 &rt_stat);
+			printout(config, id, nr, counter, uval, prefix,
+				 run, ena, 1.0, &rt_stat);
 			if (!metric_only)
 				fputc('\n', output);
 		}
@@ -1320,9 +1325,10 @@ static struct perf_aggr_thread_value *sort_aggr_thread(
 	return buf;
 }
 
-static void print_aggr_thread(struct perf_evsel *counter, char *prefix)
+static void print_aggr_thread(struct perf_stat_config *config,
+			      struct perf_evsel *counter, char *prefix)
 {
-	FILE *output = stat_config.output;
+	FILE *output = config->output;
 	int nthreads = thread_map__nr(counter->threads);
 	int ncpus = cpu_map__nr(counter->cpus);
 	int thread, sorted_threads, id;
@@ -1339,12 +1345,12 @@ static void print_aggr_thread(struct perf_evsel *counter, char *prefix)
 			fprintf(output, "%s", prefix);
 
 		id = buf[thread].id;
-		if (stat_config.stats)
-			printout(id, 0, buf[thread].counter, buf[thread].uval,
+		if (config->stats)
+			printout(config, id, 0, buf[thread].counter, buf[thread].uval,
 				 prefix, buf[thread].run, buf[thread].ena, 1.0,
-				 &stat_config.stats[id]);
+				 &config->stats[id]);
 		else
-			printout(id, 0, buf[thread].counter, buf[thread].uval,
+			printout(config, id, 0, buf[thread].counter, buf[thread].uval,
 				 prefix, buf[thread].run, buf[thread].ena, 1.0,
 				 &rt_stat);
 		fputc('\n', output);
@@ -1372,9 +1378,10 @@ static void counter_aggr_cb(struct perf_evsel *counter, void *data,
  * Print out the results of a single counter:
  * aggregated counts in system-wide mode
  */
-static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
+static void print_counter_aggr(struct perf_stat_config *config,
+			       struct perf_evsel *counter, char *prefix)
 {
-	FILE *output = stat_config.output;
+	FILE *output = config->output;
 	double uval;
 	struct caggr_data cd = { .avg = 0.0 };
 
@@ -1385,7 +1392,7 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
 		fprintf(output, "%s", prefix);
 
 	uval = cd.avg * counter->scale;
-	printout(-1, 0, counter, uval, prefix, cd.avg_running, cd.avg_enabled,
+	printout(config, -1, 0, counter, uval, prefix, cd.avg_running, cd.avg_enabled,
 		 cd.avg, &rt_stat);
 	if (!metric_only)
 		fprintf(output, "\n");
@@ -1405,9 +1412,10 @@ static void counter_cb(struct perf_evsel *counter, void *data,
  * Print out the results of a single counter:
  * does not use aggregated count in system-wide
  */
-static void print_counter(struct perf_evsel *counter, char *prefix)
+static void print_counter(struct perf_stat_config *config,
+			  struct perf_evsel *counter, char *prefix)
 {
-	FILE *output = stat_config.output;
+	FILE *output = config->output;
 	u64 ena, run, val;
 	double uval;
 	int cpu;
@@ -1425,14 +1433,15 @@ static void print_counter(struct perf_evsel *counter, char *prefix)
 			fprintf(output, "%s", prefix);
 
 		uval = val * counter->scale;
-		printout(cpu, 0, counter, uval, prefix, run, ena, 1.0,
+		printout(config, cpu, 0, counter, uval, prefix, run, ena, 1.0,
 			 &rt_stat);
 
 		fputc('\n', output);
 	}
 }
 
-static void print_no_aggr_metric(char *prefix)
+static void print_no_aggr_metric(struct perf_stat_config *config,
+				 char *prefix)
 {
 	int cpu;
 	int nrcpus = 0;
@@ -1445,7 +1454,7 @@ static void print_no_aggr_metric(char *prefix)
 		bool first = true;
 
 		if (prefix)
-			fputs(prefix, stat_config.output);
+			fputs(prefix, config->output);
 		evlist__for_each_entry(evsel_list, counter) {
 			if (is_duration_time(counter))
 				continue;
@@ -1458,10 +1467,10 @@ static void print_no_aggr_metric(char *prefix)
 			run = perf_counts(counter->counts, cpu, 0)->run;
 
 			uval = val * counter->scale;
-			printout(cpu, 0, counter, uval, prefix, run, ena, 1.0,
+			printout(config, cpu, 0, counter, uval, prefix, run, ena, 1.0,
 				 &rt_stat);
 		}
-		fputc('\n', stat_config.output);
+		fputc('\n', config->output);
 	}
 }
 
@@ -1481,25 +1490,25 @@ static const char *aggr_header_csv[] = {
 	[AGGR_GLOBAL] 	=	""
 };
 
-static void print_metric_headers(const char *prefix, bool no_indent)
+static void print_metric_headers(struct perf_stat_config *config,
+				 const char *prefix, bool no_indent)
 {
 	struct perf_stat_output_ctx out;
 	struct perf_evsel *counter;
 	struct outstate os = {
-		.fh = stat_config.output
+		.fh = config->output
 	};
 
 	if (prefix)
-		fprintf(stat_config.output, "%s", prefix);
+		fprintf(config->output, "%s", prefix);
 
 	if (!csv_output && !no_indent)
-		fprintf(stat_config.output, "%*s",
-			aggr_header_lens[stat_config.aggr_mode], "");
+		fprintf(config->output, "%*s",
+			aggr_header_lens[config->aggr_mode], "");
 	if (csv_output) {
-		if (stat_config.interval)
-			fputs("time,", stat_config.output);
-		fputs(aggr_header_csv[stat_config.aggr_mode],
-			stat_config.output);
+		if (config->interval)
+			fputs("time,", config->output);
+		fputs(aggr_header_csv[config->aggr_mode], config->output);
 	}
 
 	/* Print metrics headers only */
@@ -1518,12 +1527,13 @@ static void print_metric_headers(const char *prefix, bool no_indent)
 					      &metric_events,
 					      &rt_stat);
 	}
-	fputc('\n', stat_config.output);
+	fputc('\n', config->output);
 }
 
-static void print_interval(char *prefix, struct timespec *ts)
+static void print_interval(struct perf_stat_config *config,
+			   char *prefix, struct timespec *ts)
 {
-	FILE *output = stat_config.output;
+	FILE *output = config->output;
 	static int num_print_interval;
 
 	if (interval_clear)
@@ -1532,7 +1542,7 @@ static void print_interval(char *prefix, struct timespec *ts)
 	sprintf(prefix, "%6lu.%09lu%s", ts->tv_sec, ts->tv_nsec, csv_sep);
 
 	if ((num_print_interval == 0 && !csv_output) || interval_clear) {
-		switch (stat_config.aggr_mode) {
+		switch (config->aggr_mode) {
 		case AGGR_SOCKET:
 			fprintf(output, "#           time socket cpus");
 			if (!metric_only)
@@ -1564,14 +1574,15 @@ static void print_interval(char *prefix, struct timespec *ts)
 	}
 
 	if ((num_print_interval == 0 || interval_clear) && metric_only)
-		print_metric_headers(" ", true);
+		print_metric_headers(config, " ", true);
 	if (++num_print_interval == 25)
 		num_print_interval = 0;
 }
 
-static void print_header(int argc, const char **argv)
+static void print_header(struct perf_stat_config *config,
+			 int argc, const char **argv)
 {
-	FILE *output = stat_config.output;
+	FILE *output = config->output;
 	int i;
 
 	fflush(stdout);
@@ -1639,10 +1650,10 @@ static double timeval2double(struct timeval *t)
 	return t->tv_sec + (double) t->tv_usec/USEC_PER_SEC;
 }
 
-static void print_footer(void)
+static void print_footer(struct perf_stat_config *config)
 {
 	double avg = avg_stats(&walltime_nsecs_stats) / NSEC_PER_SEC;
-	FILE *output = stat_config.output;
+	FILE *output = config->output;
 	int n;
 
 	if (!null_run)
@@ -1673,7 +1684,7 @@ static void print_footer(void)
 		fprintf(output, " %17.*f +- %.*f seconds time elapsed",
 			precision, avg, precision, sd);
 
-		print_noise_pct(sd, avg);
+		print_noise_pct(config, sd, avg);
 	}
 	fprintf(output, "\n\n");
 
@@ -1703,15 +1714,15 @@ perf_evlist__print_counters(struct perf_evlist *evlist,
 	char buf[64], *prefix = NULL;
 
 	if (interval)
-		print_interval(prefix = buf, ts);
+		print_interval(config, prefix = buf, ts);
 	else
-		print_header(argc, argv);
+		print_header(config, argc, argv);
 
 	if (metric_only) {
 		static int num_print_iv;
 
 		if (num_print_iv == 0 && !interval)
-			print_metric_headers(prefix, false);
+			print_metric_headers(config, prefix, false);
 		if (num_print_iv++ == 25)
 			num_print_iv = 0;
 		if (config->aggr_mode == AGGR_GLOBAL && prefix)
@@ -1721,32 +1732,32 @@ perf_evlist__print_counters(struct perf_evlist *evlist,
 	switch (config->aggr_mode) {
 	case AGGR_CORE:
 	case AGGR_SOCKET:
-		print_aggr(prefix);
+		print_aggr(config, prefix);
 		break;
 	case AGGR_THREAD:
 		evlist__for_each_entry(evlist, counter) {
 			if (is_duration_time(counter))
 				continue;
-			print_aggr_thread(counter, prefix);
+			print_aggr_thread(config, counter, prefix);
 		}
 		break;
 	case AGGR_GLOBAL:
 		evlist__for_each_entry(evlist, counter) {
 			if (is_duration_time(counter))
 				continue;
-			print_counter_aggr(counter, prefix);
+			print_counter_aggr(config, counter, prefix);
 		}
 		if (metric_only)
 			fputc('\n', config->output);
 		break;
 	case AGGR_NONE:
 		if (metric_only)
-			print_no_aggr_metric(prefix);
+			print_no_aggr_metric(config, prefix);
 		else {
 			evlist__for_each_entry(evlist, counter) {
 				if (is_duration_time(counter))
 					continue;
-				print_counter(counter, prefix);
+				print_counter(config, counter, prefix);
 			}
 		}
 		break;
@@ -1756,7 +1767,7 @@ perf_evlist__print_counters(struct perf_evlist *evlist,
 	}
 
 	if (!interval && !csv_output)
-		print_footer();
+		print_footer(config);
 
 	fflush(config->output);
 }
-- 
2.17.1


  parent reply	other threads:[~2018-08-30  6:33 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-30  6:32 [PATCH 00/43] perf stat: Make some of the stat code generic Jiri Olsa
2018-08-30  6:32 ` [PATCH 01/43] perf stat: Use evsel->threads in create_perf_stat_counter Jiri Olsa
2018-09-06 13:21   ` [tip:perf/core] perf stat: Use evsel->threads in create_perf_stat_counter() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 02/43] perf stat: Move initial_delay into struct perf_stat_config Jiri Olsa
2018-09-06 13:21   ` [tip:perf/core] perf stat: Move 'initial_delay' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 03/43] perf stat: Move no_inherit into struct perf_stat_config Jiri Olsa
2018-09-06 13:22   ` [tip:perf/core] perf stat: Move 'no_inherit' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 04/43] perf stat: Use local config arg for scale in create_perf_stat_counter Jiri Olsa
2018-09-06 13:22   ` [tip:perf/core] perf stat: Use local config arg for scale in create_perf_stat_counter() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 05/43] perf stat: Add identifier flag into struct stat_opts Jiri Olsa
2018-09-06 13:23   ` [tip:perf/core] perf stat: Add 'identifier' flag to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 06/43] perf tools: Switch session argument to evlist in perf_event__synthesize_attrs Jiri Olsa
2018-09-06 13:23   ` [tip:perf/core] perf tools: Switch 'session' argument to 'evlist' in perf_event__synthesize_attrs() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 07/43] perf tools: Add perf_evsel__store_ids function Jiri Olsa
2018-09-06 13:24   ` [tip:perf/core] perf evsel: Introduce perf_evsel__store_ids() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 08/43] perf stat: Move create_perf_stat_counter into stat.c Jiri Olsa
2018-09-06 13:24   ` [tip:perf/core] perf stat: Move create_perf_stat_counter() to stat.c tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 09/43] perf stat: Rename is_pipe argument to attrs perf_stat_synthesize_config Jiri Olsa
2018-09-06 13:25   ` [tip:perf/core] perf stat: Rename 'is_pipe' argument to 'attrs' in perf_stat_synthesize_config() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 10/43] perf stat: Add struct perf_stat_config argument to perf_stat_synthesize_config Jiri Olsa
2018-09-06 13:26   ` [tip:perf/core] perf stat: Add 'struct perf_stat_config' argument to perf_stat_synthesize_config() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 11/43] perf stat: Add struct perf_tool argument to perf_stat_synthesize_config Jiri Olsa
2018-09-06 13:26   ` [tip:perf/core] perf stat: Add 'struct perf_tool' argument to perf_stat_synthesize_config() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 12/43] perf stat: Add struct perf_evlist argument to perf_stat_synthesize_config Jiri Olsa
2018-09-06 13:27   ` [tip:perf/core] perf stat: Add 'struct perf_evlist' argument to perf_stat_synthesize_config() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 13/43] perf stat: Add perf_event__handler_t argument to perf_stat_synthesize_config Jiri Olsa
2018-09-06 13:27   ` [tip:perf/core] perf stat: Add 'perf_event__handler_t' argument to perf_stat_synthesize_config() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 14/43] perf stat: Move perf_stat_synthesize_config into stat.c Jiri Olsa
2018-09-06 13:28   ` [tip:perf/core] perf stat: Move perf_stat_synthesize_config() to stat.c tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 15/43] perf stat: Add perf_evlist__print_counters function Jiri Olsa
2018-09-06 13:28   ` [tip:perf/core] perf stat: Introduce perf_evlist__print_counters() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 16/43] perf stat: Move STAT_RECORD out of perf_evlist__print_counters Jiri Olsa
2018-09-06 13:29   ` [tip:perf/core] perf stat: Move STAT_RECORD out of perf_evlist__print_counters() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 17/43] perf stat: Add stat_config argument to perf_evlist__print_counters Jiri Olsa
2018-09-06 13:29   ` [tip:perf/core] perf stat: Add 'struct perf_stat_config' argument to perf_evlist__print_counters() tip-bot for Jiri Olsa
2018-08-30  6:32 ` Jiri Olsa [this message]
2018-09-06 13:30   ` [tip:perf/core] perf stat: Pass 'struct perf_stat_config' argument to local print functions tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 19/43] perf stat: Pass stat_config argument to global " Jiri Olsa
2018-09-06 13:30   ` [tip:perf/core] perf stat: Pass a 'struct perf_stat_config' " tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 20/43] perf stat: Move csv_* into struct perf_stat_config Jiri Olsa
2018-09-06 13:31   ` [tip:perf/core] perf stat: Move csv_* to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 21/43] perf stat: Move interval_clear into struct perf_stat_config Jiri Olsa
2018-09-06 13:31   ` [tip:perf/core] perf stat: Move 'interval_clear' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 22/43] perf stat: Move metric_only into struct perf_stat_config Jiri Olsa
2018-09-06 13:32   ` [tip:perf/core] perf stat: Move 'metric_only' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 23/43] perf stat: Move unit_width into struct perf_stat_config Jiri Olsa
2018-09-06 13:33   ` [tip:perf/core] perf stat: Move 'unit_width' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 24/43] perf stat: Add target argument to perf_evlist__print_counters Jiri Olsa
2018-09-06 13:33   ` [tip:perf/core] perf stat: Add 'target' argument to perf_evlist__print_counters() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 25/43] perf stat: Pass evlist argument to print functions Jiri Olsa
2018-09-06 13:34   ` [tip:perf/core] perf stat: Pass 'evlist' " tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 26/43] perf stat: Use evsel->evlist instead of evsel_list in collect_all_aliases Jiri Olsa
2018-09-06 13:34   ` [tip:perf/core] perf stat: Use 'evsel->evlist' instead of 'evsel_list' in collect_all_aliases() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 27/43] perf stat: Move run_count into struct perf_stat_config Jiri Olsa
2018-09-06 13:35   ` [tip:perf/core] perf stat: Move 'run_count' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 28/43] perf stat: Move metric_only_len into struct perf_stat_config Jiri Olsa
2018-09-06 13:35   ` [tip:perf/core] perf stat: Move 'metric_only_len' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 29/43] perf stat: Pass stat_config to first_shadow_cpu Jiri Olsa
2018-09-06 13:36   ` [tip:perf/core] perf stat: Pass 'struct perf_stat_config' to first_shadow_cpu() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 30/43] perf stat: Pass evlist to aggr_update_shadow Jiri Olsa
2018-09-06 13:37   ` [tip:perf/core] perf stat: Pass 'evlist' to aggr_update_shadow() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 31/43] perf stat: Add walltime_nsecs_stats pointer into struct perf_stat_config Jiri Olsa
2018-09-06 13:37   ` [tip:perf/core] perf stat: Add 'walltime_nsecs_stats' pointer to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 32/43] perf stat: Move null_run into struct perf_stat_config Jiri Olsa
2018-09-06 13:38   ` [tip:perf/core] perf stat: Move 'null_run' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 33/43] perf stat: Move print_free_counters_hint into struct perf_stat_config Jiri Olsa
2018-09-06 13:38   ` [tip:perf/core] perf stat: Move 'print_free_counters_hint' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 34/43] perf stat: Move print_mixed_hw_group_error into struct perf_stat_config Jiri Olsa
2018-09-06 13:39   ` [tip:perf/core] perf stat: Move 'print_mixed_hw_group_error' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 35/43] perf stat: Move ru_* data into struct perf_stat_config Jiri Olsa
2018-09-06 13:39   ` [tip:perf/core] perf stat: Move ru_* data to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 36/43] perf stat: Move *_aggr_* data into struct perf_stat_config Jiri Olsa
2018-09-06 13:40   ` [tip:perf/core] perf stat: Move *_aggr_* data to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 37/43] perf stat: Do not use glovab evsel_list in print functions Jiri Olsa
2018-09-06 13:40   ` [tip:perf/core] perf stat: Do not use the global 'evsel_list' " tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 38/43] perf stat: Move big_num data into struct perf_stat_config Jiri Olsa
2018-09-06 13:41   ` [tip:perf/core] perf stat: Move 'big_num' data to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 39/43] perf stat: Move no_merge data into struct perf_stat_config Jiri Olsa
2018-09-06 13:42   ` [tip:perf/core] perf stat: Move 'no_merge' data to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 40/43] perf stat: Propagate struct target arg to sort_aggr_thread Jiri Olsa
2018-09-06 13:42   ` [tip:perf/core] perf stat: Propagate 'struct target' arg to sort_aggr_thread() tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 41/43] perf stat: Move walltime_* data into struct perf_stat_config Jiri Olsa
2018-09-06 13:43   ` [tip:perf/core] perf stat: Move 'walltime_*' data to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 42/43] perf stat: Move metric_events into struct perf_stat_config Jiri Olsa
2018-09-06 13:43   ` [tip:perf/core] perf stat: Move 'metric_events' to 'struct perf_stat_config' tip-bot for Jiri Olsa
2018-08-30  6:32 ` [PATCH 43/43] perf stat: Move display functions into stat-display.c Jiri Olsa
2018-09-06 13:44   ` [tip:perf/core] perf stat: Move the display functions to stat-display.c tip-bot for Jiri Olsa
2018-08-30 17:54 ` [PATCH 00/43] perf stat: Make some of the stat code generic Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180830063252.23729-19-jolsa@kernel.org \
    --to=jolsa@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=dsahern@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.