Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1255493
| From | Jiri Olsa <jolsa@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 09/52] perf tools: Add cpu_map__new_event function |
| Date | 2015-10-25 16:20 +0100 |
| Message-ID | <qnvfs-4Bx-9@gated-at.bofh.it> (permalink) |
| References | <qnuW5-4fF-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Introducing cpu_map__new_event function to create
struct cpu_map object from cpu_map event.
Link: http://lkml.kernel.org/n/tip-tepv49tbjsqeprmf8k05lc6r@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
tools/perf/tests/cpumap.c | 25 +++++++++++++++++++++----
tools/perf/util/cpumap.c | 42 ++++++++++++++++++++++++++++++++++++++++++
tools/perf/util/cpumap.h | 1 +
3 files changed, 64 insertions(+), 4 deletions(-)
diff --git a/tools/perf/tests/cpumap.c b/tools/perf/tests/cpumap.c
index dc923ec7688f..cf67c7b07be2 100644
--- a/tools/perf/tests/cpumap.c
+++ b/tools/perf/tests/cpumap.c
@@ -6,12 +6,13 @@ static int process_event_mask(struct perf_tool *tool __maybe_unused,
struct perf_sample *sample __maybe_unused,
struct machine *machine __maybe_unused)
{
- struct cpu_map_event *map = &event->cpu_map;
+ struct cpu_map_event *map_event = &event->cpu_map;
struct cpu_map_data_mask *mask;
struct cpu_map_data *data;
+ struct cpu_map *map;
int i;
- data = &map->data;
+ data = &map_event->data;
TEST_ASSERT_VAL("wrong type", data->type == PERF_CPU_MAP__MASK);
@@ -23,6 +24,14 @@ static int process_event_mask(struct perf_tool *tool __maybe_unused,
TEST_ASSERT_VAL("wrong cpu", test_bit(i, mask->mask));
}
+ map = cpu_map__new_data(data);
+ TEST_ASSERT_VAL("wrong nr", map->nr == 20);
+
+ for (i = 0; i < 20; i++) {
+ TEST_ASSERT_VAL("wrong cpu", map->map[i] == i);
+ }
+
+ cpu_map__put(map);
return 0;
}
@@ -31,11 +40,12 @@ static int process_event_cpus(struct perf_tool *tool __maybe_unused,
struct perf_sample *sample __maybe_unused,
struct machine *machine __maybe_unused)
{
- struct cpu_map_event *map = &event->cpu_map;
+ struct cpu_map_event *map_event = &event->cpu_map;
struct cpu_map_data_cpus *cpus;
struct cpu_map_data *data;
+ struct cpu_map *map;
- data = &map->data;
+ data = &map_event->data;
TEST_ASSERT_VAL("wrong type", data->type == PERF_CPU_MAP__CPUS);
@@ -44,6 +54,13 @@ static int process_event_cpus(struct perf_tool *tool __maybe_unused,
TEST_ASSERT_VAL("wrong nr", cpus->nr == 2);
TEST_ASSERT_VAL("wrong cpu", cpus->cpu[0] == 1);
TEST_ASSERT_VAL("wrong cpu", cpus->cpu[1] == 256);
+
+ map = cpu_map__new_data(data);
+ TEST_ASSERT_VAL("wrong nr", map->nr == 2);
+ TEST_ASSERT_VAL("wrong cpu", map->map[0] == 1);
+ TEST_ASSERT_VAL("wrong cpu", map->map[1] == 256);
+ TEST_ASSERT_VAL("wrong refcnt", atomic_read(&map->refcnt) == 1);
+ cpu_map__put(map);
return 0;
}
diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c
index 10af1e7524fb..00eb4e0c438b 100644
--- a/tools/perf/util/cpumap.c
+++ b/tools/perf/util/cpumap.c
@@ -5,6 +5,7 @@
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
+#include <linux/bitmap.h>
#include "asm/bug.h"
static struct cpu_map *cpu_map__default_new(void)
@@ -179,6 +180,47 @@ out:
return cpus;
}
+static struct cpu_map *cpu_map__from_cpus(struct cpu_map_data_cpus *cpus)
+{
+ struct cpu_map *map;
+
+ map = cpu_map__empty_new(cpus->nr);
+ if (map) {
+ unsigned i;
+
+ for (i = 0; i < cpus->nr; i++)
+ map->map[i] = (int) cpus->cpu[i];
+ }
+
+ return map;
+}
+
+static struct cpu_map *cpu_map__from_mask(struct cpu_map_data_mask *mask)
+{
+ struct cpu_map *map;
+ int nr, nbits = mask->nr * mask->long_size * BITS_PER_BYTE;
+
+ nr = bitmap_weight(mask->mask, nbits);
+
+ map = cpu_map__empty_new(nr);
+ if (map) {
+ int cpu, i = 0;
+
+ for_each_set_bit(cpu, mask->mask, nbits)
+ map->map[i++] = cpu;
+ }
+ return map;
+
+}
+
+struct cpu_map *cpu_map__new_data(struct cpu_map_data *data)
+{
+ if (data->type == PERF_CPU_MAP__CPUS)
+ return cpu_map__from_cpus((struct cpu_map_data_cpus *) data->data);
+ else
+ return cpu_map__from_mask((struct cpu_map_data_mask *) data->data);
+}
+
size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp)
{
int i;
diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h
index 85f7772457fa..71c41b9efabb 100644
--- a/tools/perf/util/cpumap.h
+++ b/tools/perf/util/cpumap.h
@@ -17,6 +17,7 @@ struct cpu_map {
struct cpu_map *cpu_map__new(const char *cpu_list);
struct cpu_map *cpu_map__empty_new(int nr);
struct cpu_map *cpu_map__dummy_new(void);
+struct cpu_map *cpu_map__new_data(struct cpu_map_data *data);
struct cpu_map *cpu_map__read(FILE *file);
size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp);
int cpu_map__get_socket_id(int cpu);
--
2.4.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCHv5 00/52] perf stat: Add scripting support Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 22/52] perf tools: Add event_update event scale type Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 04/52] perf tools: Add thread_map event sythesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 43/52] perf stat report: Process event update events Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 12/52] perf tools: Add stat config event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 52/52] perf script: Add stat-cpi.py script Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 45/52] perf stat report: Allow to override aggr_mode Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 49/52] perf script: Add stat default handlers Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 39/52] perf stat report: Process cpu/threads maps Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 26/52] perf report: Display newly added events in raw dump Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 18/52] perf tools: Add stat round event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 06/52] perf tools: Add perf_event__fprintf_thread_map function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 47/52] perf script: Process stat config event Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 02/52] perf stat: Cache aggregated map entries in extra cpumap Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[tip:perf/core] perf stat: Cache aggregated map entries in extra cpumap tip-bot for Jiri Olsa <tipbot@zytor.com> - 2015-10-29 10:50 +0100
[PATCH 16/52] perf tools: Add stat event read function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 38/52] perf stat report: Add report command Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 34/52] perf stat record: Write stat events on record Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 44/52] perf stat report: Move csv_sep initialization before report command Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 05/52] perf tools: Add thread_map__new_event function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 08/52] perf tools: Add cpu_map event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 14/52] perf tools: Add stat event Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:00 +0100
[PATCH 27/52] perf tools: Introduce stat feature Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 17/52] perf tools: Add stat round event Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 25/52] perf tools: Add perf_event__fprintf_event_update function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 11/52] perf tools: Add stat config event Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
Re: [PATCH 11/52] perf tools: Add stat config event Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-27 14:20 +0100
Re: [PATCH 11/52] perf tools: Add stat config event Jiri Olsa <jolsa@redhat.com> - 2015-10-27 14:40 +0100
Re: [PATCH 11/52] perf tools: Add stat config event Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-27 14:50 +0100
Re: [PATCH 11/52] perf tools: Add stat config event Jiri Olsa <jolsa@redhat.com> - 2015-10-27 15:00 +0100
Re: [PATCH 11/52] perf tools: Add stat config event Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-27 15:20 +0100
[PATCH 13/52] perf tools: Add stat config event read function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 28/52] perf tools: Move id_offset out of struct perf_evsel union Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[tip:perf/core] perf evsel: Move id_offset out of struct perf_evsel union member tip-bot for Jiri Olsa <tipbot@zytor.com> - 2015-10-29 10:50 +0100
[PATCH 15/52] perf tools: Add stat event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 35/52] perf stat record: Write stat round events on record Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 24/52] perf tools: Add event_update event cpus type Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 21/52] perf tools: Add event_update event unit type Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 31/52] perf stat record: Synthesize stat record data Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
Re: [PATCH 31/52] perf stat record: Synthesize stat record data Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-27 15:50 +0100
Re: [PATCH 31/52] perf stat record: Synthesize stat record data Jiri Olsa <jolsa@redhat.com> - 2015-10-28 13:20 +0100
Re: [PATCH 31/52] perf stat record: Synthesize stat record data Jiri Olsa <jolsa@redhat.com> - 2015-10-28 14:10 +0100
Re: [PATCH 31/52] perf stat record: Synthesize stat record data Jiri Olsa <jolsa@redhat.com> - 2015-10-28 14:10 +0100
[PATCH 36/52] perf stat record: Do not allow record with multiple runs mode Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 19/52] perf tools: Add stat events fprintf functions Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 40/52] perf stat report: Process stat config event Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 41/52] perf stat report: Add support to initialize aggr_map from file Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 33/52] perf stat record: Add pipe support for record command Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 30/52] perf stat record: Initialize record features Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 23/52] perf tools: Add event_update event name type Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 37/52] perf stat record: Synthesize event update events Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:10 +0100
[PATCH 09/52] perf tools: Add cpu_map__new_event function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:20 +0100
[PATCH 03/52] perf tools: Add thread_map event Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:20 +0100
Re: [PATCH 03/52] perf tools: Add thread_map event Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-26 18:50 +0100
Re: [PATCH 03/52] perf tools: Add thread_map event Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-26 18:50 +0100
Re: [PATCH 03/52] perf tools: Add thread_map event Jiri Olsa <jolsa@redhat.com> - 2015-10-26 19:00 +0100
Re: [PATCH 03/52] perf tools: Add thread_map event Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-26 19:00 +0100
Re: [PATCH 03/52] perf tools: Add thread_map event Jiri Olsa <jolsa@redhat.com> - 2015-10-26 18:50 +0100
[PATCH 07/52] perf tools: Add cpu_map event Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:20 +0100
[PATCH 01/52] perf cpu_map: Add cpu_map__empty_new function Jiri Olsa <jolsa@kernel.org> - 2015-10-25 16:20 +0100
[tip:perf/core] perf cpu_map: Add cpu_map__empty_new function tip-bot for Jiri Olsa <tipbot@zytor.com> - 2015-10-29 10:50 +0100
Re: [PATCHv5 00/52] perf stat: Add scripting support Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-26 18:40 +0100
RE: [PATCHv5 00/52] perf stat: Add scripting support "Liang, Kan" <kan.liang@intel.com> - 2015-10-27 15:30 +0100
Re: [PATCHv5 00/52] perf stat: Add scripting support Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-10-27 15:50 +0100
csiph-web