Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1240950

[PATCH 21/56] perf tools: Add attr_update event name type

From Jiri Olsa <jolsa@kernel.org>
Newsgroups linux.kernel
Subject [PATCH 21/56] perf tools: Add attr_update event name type
Date 2015-10-06 22:10 +0200
Message-ID <qgGII-84P-51@gated-at.bofh.it> (permalink)
References <qgGz0-7BP-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Adding name type attr update event, that stores/transfer
events name. Event's name is stored within perf.data's
EVENT_DESC feature, but we don't have if we get report
data from pipe.

Link: http://lkml.kernel.org/n/tip-j8b9c0ev11zisop3qup1hdy8@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/tests/attr_update.c | 24 ++++++++++++++++++++++++
 tools/perf/util/event.h        |  1 +
 tools/perf/util/header.c       | 21 +++++++++++++++++++++
 tools/perf/util/header.h       |  3 +++
 4 files changed, 49 insertions(+)

diff --git a/tools/perf/tests/attr_update.c b/tools/perf/tests/attr_update.c
index bb190d3aaefd..23ba1db9b2d4 100644
--- a/tools/perf/tests/attr_update.c
+++ b/tools/perf/tests/attr_update.c
@@ -29,10 +29,29 @@ static int process_event_scale(struct perf_tool *tool __maybe_unused,
 	return 0;
 }
 
+struct event_name {
+	struct perf_tool tool;
+	const char *name;
+};
+
+static int process_event_name(struct perf_tool *tool,
+			      union perf_event *event,
+			      struct perf_sample *sample __maybe_unused,
+			      struct machine *machine __maybe_unused)
+{
+	struct event_name *tmp = container_of(tool, struct event_name, tool);
+	struct attr_update_event *ev = (struct attr_update_event*) event;
+
+	TEST_ASSERT_VAL("wrong id", ev->id == 123);
+	TEST_ASSERT_VAL("wrong name", !strcmp(ev->str, tmp->name));
+	return 0;
+}
+
 int test__attr_update(void)
 {
 	struct perf_evlist *evlist;
 	struct perf_evsel *evsel;
+	struct event_name tmp;
 
 	evlist = perf_evlist__new_default();
 	TEST_ASSERT_VAL("failed to get evlist", evlist);
@@ -54,5 +73,10 @@ int test__attr_update(void)
 	TEST_ASSERT_VAL("failed to synthesize attr update scale",
 			!perf_event__synthesize_attr_update_scale(NULL, evsel, process_event_scale));
 
+	tmp.name = perf_evsel__name(evsel);
+
+	TEST_ASSERT_VAL("failed to synthesize attr update name",
+			!perf_event__synthesize_attr_update_name(&tmp.tool, evsel, process_event_name));
+
 	return 0;
 }
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index d9248975585b..88101c8fe0b1 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -286,6 +286,7 @@ struct attr_event {
 enum {
 	PERF_ATTR_UPDATE__UNIT  = 0,
 	PERF_ATTR_UPDATE__SCALE = 1,
+	PERF_ATTR_UPDATE__NAME  = 2,
 };
 
 struct attr_update_event {
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index a47ac44f6a59..2009f1fd1188 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2741,6 +2741,24 @@ perf_event__synthesize_attr_update_scale(struct perf_tool *tool,
 	return err;
 }
 
+int
+perf_event__synthesize_attr_update_name(struct perf_tool *tool,
+					struct perf_evsel *evsel,
+					perf_event__handler_t process)
+{
+	struct attr_update_event *ev;
+	size_t len = strlen(evsel->name);
+	int err;
+
+	ev = attr_update_event__alloc(len + 1, PERF_ATTR_UPDATE__NAME, evsel->id[0]);
+	if (ev == NULL)
+		return -ENOMEM;
+
+	strncpy(ev->str, evsel->name, len);
+	err = process(tool, (union perf_event*) ev, NULL, NULL);
+	free(ev);
+	return err;
+}
 
 int perf_event__synthesize_attrs(struct perf_tool *tool,
 				   struct perf_session *session,
@@ -2822,6 +2840,9 @@ int perf_event__process_attr_update(struct perf_tool *tool __maybe_unused,
 	case PERF_ATTR_UPDATE__UNIT:
 		evsel->unit = strdup(ev->str);
 		break;
+	case PERF_ATTR_UPDATE__NAME:
+		evsel->name = strdup(ev->str);
+		break;
 	case PERF_ATTR_UPDATE__SCALE:
 		evsel->scale = ev->scale;
 	default:
diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h
index 628ee46e14fd..cb538ade38d3 100644
--- a/tools/perf/util/header.h
+++ b/tools/perf/util/header.h
@@ -111,6 +111,9 @@ int perf_event__synthesize_attr_update_unit(struct perf_tool *tool,
 int perf_event__synthesize_attr_update_scale(struct perf_tool *tool,
 					     struct perf_evsel *evsel,
 					     perf_event__handler_t process);
+int perf_event__synthesize_attr_update_name(struct perf_tool *tool,
+					    struct perf_evsel *evsel,
+					    perf_event__handler_t process);
 int perf_event__process_attr(struct perf_tool *tool, union perf_event *event,
 			     struct perf_evlist **pevlist);
 int perf_event__process_attr_update(struct perf_tool *tool __maybe_unused,
-- 
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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCHv3 00/56] perf stat: Add scripting support Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 36/56] perf stat record: Synthesize attr update events Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 08/56] perf tools: Add perf_event__fprintf_cpu_map function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 25/56] perf tools: Move id_offset out of struct perf_evsel union Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 28/56] perf stat record: Add record command Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 45/56] perf stat report: Process stat and stat round events Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 43/56] perf stat report: Process stat config event Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 39/56] perf tools: Add data arg to cpu_map__build_map callback Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 13/56] perf tools: Add stat event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:00 +0200
  [PATCH 32/56] perf stat record: Add pipe support for record command Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 29/56] perf stat record: Initialize record features Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 19/56] perf tools: Add attr_update event unit type Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 37/56] perf tools: Add cpu_map__empty_new interface Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 50/56] perf script: Process cpu/threads maps Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 26/56] perf stat: Rename perf_stat struct into perf_stat_evsel Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 24/56] perf tools: Introduce stat feature Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 52/56] perf script: Add process_stat/process_stat_interval scripting interface Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 16/56] perf tools: Add stat round event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 35/56] perf stat record: Do not allow record with multiple runs mode Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 22/56] perf tools: Add perf_event__fprintf_attr_update function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 40/56] perf stat report: Cache aggregated map entries in extra cpumap Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 42/56] perf stat report: Process cpu/threads maps Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 34/56] perf stat record: Write stat round events on record Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 21/56] perf tools: Add attr_update event name type Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 20/56] perf tools: Add attr_update event scale type Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 18/56] perf tools: Add attr_update event Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:10 +0200
  [PATCH 10/56] perf tools: Add stat config event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:20 +0200
  [PATCH 04/56] perf tools: Add perf_event__fprintf_thread_map function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:20 +0200
  [PATCH 06/56] perf tools: Add cpu_map event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:20 +0200
  [PATCH 14/56] perf tools: Add stat event read function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:20 +0200
  [PATCH 12/56] perf tools: Add stat event Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:20 +0200
  [PATCH 11/56] perf tools: Add stat config event read function Jiri Olsa <jolsa@kernel.org> - 2015-10-06 22:20 +0200
  RE: [PATCHv3 00/56] perf stat: Add scripting support "Liang, Kan" <kan.liang@intel.com> - 2015-10-08 20:40 +0200
    Re: [PATCHv3 00/56] perf stat: Add scripting support Jiri Olsa <jolsa@redhat.com> - 2015-10-08 22:20 +0200
      RE: [PATCHv3 00/56] perf stat: Add scripting support "Liang, Kan" <kan.liang@intel.com> - 2015-10-09 20:40 +0200
        Re: [PATCHv3 00/56] perf stat: Add scripting support Jiri Olsa <jolsa@redhat.com> - 2015-10-14 13:00 +0200
          RE: [PATCHv3 00/56] perf stat: Add scripting support "Liang, Kan" <kan.liang@intel.com> - 2015-10-14 21:50 +0200

csiph-web