From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>, Thomas Gleixner <tglx@linutronix.de>
Cc: Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Clark Williams <williams@redhat.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Kyle Meyer <meyerk@hpe.com>, Kyle Meyer <kyle.meyer@hpe.com>,
Jiri Olsa <jolsa@redhat.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Russ Anderson <russ.anderson@hpe.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 02/47] perf timechart: Refactor svg_build_topology_map()
Date: Sun, 1 Sep 2019 09:22:41 -0300 [thread overview]
Message-ID: <20190901122326.5793-3-acme@kernel.org> (raw)
In-Reply-To: <20190901122326.5793-1-acme@kernel.org>
From: Kyle Meyer <meyerk@hpe.com>
Exchange the parameters of svg_build_topology_map() with 'struct
perf_env *env' and adjust the function accordingly.
This patch should not change any behavior, it is merely refactoring for
the following patch.
Committer notes:
No need to include env.h from svghelper.h, all it needs is a forward
declaration for 'struct perf_env', so move the include directive to
svghelper.c, where it is really needed.
Signed-off-by: Kyle Meyer <kyle.meyer@hpe.com>
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Russ Anderson <russ.anderson@hpe.com>
Link: http://lore.kernel.org/lkml/20190827214352.94272-2-meyerk@stormcage.eag.rdlabs.hpecorp.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-timechart.c | 5 +----
tools/perf/util/svghelper.c | 20 ++++++++++++--------
tools/perf/util/svghelper.h | 4 +++-
3 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index 7d6a6ecf4e02..1ff81a790931 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -1518,10 +1518,7 @@ static int process_header(struct perf_file_section *section __maybe_unused,
if (!tchart->topology)
break;
- if (svg_build_topology_map(ph->env.sibling_cores,
- ph->env.nr_sibling_cores,
- ph->env.sibling_threads,
- ph->env.nr_sibling_threads))
+ if (svg_build_topology_map(&ph->env))
fprintf(stderr, "problem building topology\n");
break;
diff --git a/tools/perf/util/svghelper.c b/tools/perf/util/svghelper.c
index bbdd87163285..2e9971590590 100644
--- a/tools/perf/util/svghelper.c
+++ b/tools/perf/util/svghelper.c
@@ -19,6 +19,7 @@
#include <linux/zalloc.h>
#include <perf/cpumap.h>
+#include "env.h"
#include "perf.h"
#include "svghelper.h"
#include "cpumap.h"
@@ -752,23 +753,26 @@ static int str_to_bitmap(char *s, cpumask_t *b)
return ret;
}
-int svg_build_topology_map(char *sib_core, int sib_core_nr,
- char *sib_thr, int sib_thr_nr)
+int svg_build_topology_map(struct perf_env *env)
{
int i;
struct topology t;
+ char *sib_core, *sib_thr;
- t.sib_core_nr = sib_core_nr;
- t.sib_thr_nr = sib_thr_nr;
- t.sib_core = calloc(sib_core_nr, sizeof(cpumask_t));
- t.sib_thr = calloc(sib_thr_nr, sizeof(cpumask_t));
+ t.sib_core_nr = env->nr_sibling_cores;
+ t.sib_thr_nr = env->nr_sibling_threads;
+ t.sib_core = calloc(env->nr_sibling_cores, sizeof(cpumask_t));
+ t.sib_thr = calloc(env->nr_sibling_threads, sizeof(cpumask_t));
+
+ sib_core = env->sibling_cores;
+ sib_thr = env->sibling_threads;
if (!t.sib_core || !t.sib_thr) {
fprintf(stderr, "topology: no memory\n");
goto exit;
}
- for (i = 0; i < sib_core_nr; i++) {
+ for (i = 0; i < env->nr_sibling_cores; i++) {
if (str_to_bitmap(sib_core, &t.sib_core[i])) {
fprintf(stderr, "topology: can't parse siblings map\n");
goto exit;
@@ -777,7 +781,7 @@ int svg_build_topology_map(char *sib_core, int sib_core_nr,
sib_core += strlen(sib_core) + 1;
}
- for (i = 0; i < sib_thr_nr; i++) {
+ for (i = 0; i < env->nr_sibling_threads; i++) {
if (str_to_bitmap(sib_thr, &t.sib_thr[i])) {
fprintf(stderr, "topology: can't parse siblings map\n");
goto exit;
diff --git a/tools/perf/util/svghelper.h b/tools/perf/util/svghelper.h
index e55338d5c3bd..81823e8bae3e 100644
--- a/tools/perf/util/svghelper.h
+++ b/tools/perf/util/svghelper.h
@@ -4,6 +4,8 @@
#include <linux/types.h>
+struct perf_env;
+
void open_svg(const char *filename, int cpus, int rows, u64 start, u64 end);
void svg_ubox(int Yslot, u64 start, u64 end, double height, const char *type, int fd, int err, int merges);
void svg_lbox(int Yslot, u64 start, u64 end, double height, const char *type, int fd, int err, int merges);
@@ -28,7 +30,7 @@ void svg_partial_wakeline(u64 start, int row1, char *desc1, int row2, char *desc
void svg_interrupt(u64 start, int row, const char *backtrace);
void svg_text(int Yslot, u64 start, const char *text);
void svg_close(void);
-int svg_build_topology_map(char *sib_core, int sib_core_nr, char *sib_thr, int sib_thr_nr);
+int svg_build_topology_map(struct perf_env *env);
extern int svg_page_width;
extern u64 svg_highlight;
--
2.21.0
next prev parent reply other threads:[~2019-09-01 12:22 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-01 12:22 [GIT PULL] perf/core improvements and fixes Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 01/47] perf c2c: Display proper cpu count in nodes column Arnaldo Carvalho de Melo
2019-09-01 12:22 ` Arnaldo Carvalho de Melo [this message]
2019-09-01 12:22 ` [PATCH 03/47] perf svghelper: Replace MAX_NR_CPUS with perf_env::nr_cpus_online Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 04/47] perf stat: Replace MAX_NR_CPUS with cpu__max_cpu() Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 05/47] perf session: Replace MAX_NR_CPUS with perf_env::nr_cpus_online Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 06/47] perf machine: " Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 07/47] perf header: Replace MAX_NR_CPUS with cpu__max_cpu() Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 08/47] libperf: Warn when exceeding MAX_NR_CPUS in cpumap Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 09/47] perf tools: Remove needless libtraceevent include directives Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 10/47] perf header: Move CPUINFO_PROC to the only file where it is used Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 11/47] perf tools: Move everything related to sys_perf_event_open() to perf-sys.h Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 12/47] perf time-utils: Adopt rdclock() from perf.h Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 13/47] perf tools: Remove needless perf.h include directive from headers Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 14/47] perf tools: Remove perf.h from source files not needing it Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 15/47] perf tools: Remove debug.h from header " Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 16/47] perf debug: Remove needless include directives from debug.h Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 17/47] perf env: Remove env.h from other headers where just a fwd decl is needed Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 18/47] perf event: Remove needless include directives from event.h Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 19/47] libtraceevent, perf tools: Changes in tep_print_event_* APIs Arnaldo Carvalho de Melo
2019-09-01 12:22 ` [PATCH 20/47] libtraceevent: Remove tep_register_trace_clock() Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 21/47] libtraceevent: Change users plugin directory Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 22/47] perf dso: Adopt DSO related macros from symbol.h Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 23/47] perf symbol: Move C++ demangle defines to the only file using it Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 24/47] perf symbols: Add missing linux/refcount.h to symbol.h Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 25/47] perf symbols: Move symsrc prototypes to a separate header Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 26/47] perf dsos: Move the dsos struct and its methods to separate source files Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 27/47] perf hist: Remove needless ui/progress.h from hist.h Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 28/47] perf tools: Move 'struct events_stats' and prototypes to separate header Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 29/47] perf tools: Remove needless sort.h include directives Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 30/47] perf probe: No need for symbol.h, symbol_conf is enough Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 31/47] perf tools: Remove needless map.h include directives Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 32/47] perf tools: Remove needless thread.h " Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 33/47] perf tools: Remove needless thread_map.h " Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 34/47] perf tools: Remove needless evlist.h " Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 35/47] " Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 36/47] perf auxtrace: Uninline functions that touch perf_session Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 37/47] perf symbols: Move mem_info and branch_info out of symbol.h Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 38/47] perf pmu: Change convert_scale from static to global Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 39/47] perf metricgroup: Scale the metric result Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 40/47] perf metricgroup: Support multiple events for metricgroup Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 41/47] objtool: Move x86 insn decoder to a common location Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 42/47] perf: Update .gitignore file Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 43/47] perf intel-pt: Remove inat.c from build dependency list Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 44/47] perf intel-pt: Use shared x86 insn decoder Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 45/47] perf build: Ignore intentional differences for the " Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 46/47] objtool: Update sync-check.sh from perf's check-headers.sh Arnaldo Carvalho de Melo
2019-09-01 12:23 ` [PATCH 47/47] objtool: Ignore intentional differences for the x86 insn decoder Arnaldo Carvalho de Melo
2019-09-02 7:14 ` [GIT PULL] perf/core improvements and fixes Ingo Molnar
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=20190901122326.5793-3-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=jolsa@redhat.com \
--cc=kyle.meyer@hpe.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=meyerk@hpe.com \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=russ.anderson@hpe.com \
--cc=tglx@linutronix.de \
--cc=williams@redhat.com \
/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.