linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	David Ahern <dsahern@gmail.com>, Ingo Molnar <mingo@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	"Liang, Kan" <kan.liang@intel.com>
Subject: Re: [PATCH 19/57] perf tools: Add attr_update event
Date: Mon, 19 Oct 2015 18:00:04 -0300	[thread overview]
Message-ID: <20151019210004.GF3215@kernel.org> (raw)
In-Reply-To: <1444992092-17897-20-git-send-email-jolsa@kernel.org>

Em Fri, Oct 16, 2015 at 12:40:54PM +0200, Jiri Olsa escreveu:
> It'll server as base event for additional event attributes
> details, that are not part of the attr event.
> 
> At the moment this event is just dummy one without specific
> functionality. The type value will distinguish the update
> event details. It comes in following patches.
> 
> The idea for this event is to be extensible for any update
> that attr event might need in the future.

"Update"? Found it confusing, how about calling it "add event
attribute", because that is what this is doing, adding attributes, like
"unit" (Joules, MiB, nsec, etc), "scale", etc.

- Arnaldo
 
> Link: http://lkml.kernel.org/n/tip-uik5iyftzgk488ttrgpjvtf6@git.kernel.org
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
>  tools/perf/util/event.c   |  1 +
>  tools/perf/util/event.h   | 10 ++++++++++
>  tools/perf/util/header.c  | 20 ++++++++++++++++++++
>  tools/perf/util/header.h  |  3 +++
>  tools/perf/util/session.c | 21 +++++++++++++++++++++
>  tools/perf/util/tool.h    |  1 +
>  6 files changed, 56 insertions(+)
> 
> diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
> index 75d30b745ef2..1c796393ad7c 100644
> --- a/tools/perf/util/event.c
> +++ b/tools/perf/util/event.c
> @@ -44,6 +44,7 @@ static const char *perf_event__names[] = {
>  	[PERF_RECORD_STAT_CONFIG]		= "STAT_CONFIG",
>  	[PERF_RECORD_STAT]			= "STAT",
>  	[PERF_RECORD_STAT_ROUND]		= "STAT_ROUND",
> +	[PERF_RECORD_HEADER_ATTR_UPDATE]	= "ATTR_UPDATE",
>  };
>  
>  const char *perf_event__name(unsigned int id)
> diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
> index e8daec32e1f9..1d46e12acd75 100644
> --- a/tools/perf/util/event.h
> +++ b/tools/perf/util/event.h
> @@ -231,6 +231,7 @@ enum perf_user_event_type { /* above any possible kernel type */
>  	PERF_RECORD_STAT_CONFIG			= 75,
>  	PERF_RECORD_STAT			= 76,
>  	PERF_RECORD_STAT_ROUND			= 77,
> +	PERF_RECORD_HEADER_ATTR_UPDATE		= 78,
>  	PERF_RECORD_HEADER_MAX
>  };
>  
> @@ -307,6 +308,14 @@ struct attr_event {
>  	u64 id[];
>  };
>  
> +struct attr_update_event {
> +	struct perf_event_header header;
> +	u64 type;
> +	u64 id;
> +
> +	char data[];
> +};
> +
>  #define MAX_EVENT_NAME 64
>  
>  struct perf_trace_event_type {
> @@ -456,6 +465,7 @@ union perf_event {
>  	struct throttle_event		throttle;
>  	struct sample_event		sample;
>  	struct attr_event		attr;
> +	struct attr_update_event	attr_update;
>  	struct event_type_event		event_type;
>  	struct tracing_data_event	tracing_data;
>  	struct build_id_event		build_id;
> diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
> index 43838003c1a1..437856eec7c4 100644
> --- a/tools/perf/util/header.c
> +++ b/tools/perf/util/header.c
> @@ -2745,6 +2745,26 @@ int perf_event__process_attr(struct perf_tool *tool __maybe_unused,
>  	return 0;
>  }
>  
> +int perf_event__process_attr_update(struct perf_tool *tool __maybe_unused,
> +				    union perf_event *event,
> +				    struct perf_evlist **pevlist)
> +{
> +	struct attr_update_event *ev = &event->attr_update;
> +	struct perf_evlist *evlist;
> +	struct perf_evsel *evsel;
> +
> +	if (!pevlist || *pevlist == NULL)
> +		return -EINVAL;
> +
> +	evlist = *pevlist;
> +
> +	evsel = perf_evlist__id2evsel(evlist, ev->id);
> +	if (evsel == NULL)
> +		return -EINVAL;
> +
> +	return 0;
> +}
> +
>  int perf_event__synthesize_tracing_data(struct perf_tool *tool, int fd,
>  					struct perf_evlist *evlist,
>  					perf_event__handler_t process)
> diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h
> index 05f27cb6b7e3..069298367348 100644
> --- a/tools/perf/util/header.h
> +++ b/tools/perf/util/header.h
> @@ -107,6 +107,9 @@ int perf_event__synthesize_attrs(struct perf_tool *tool,
>  				 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,
> +				    union perf_event *event,
> +				    struct perf_evlist **pevlist);
>  
>  int perf_event__synthesize_tracing_data(struct perf_tool *tool,
>  					int fd, struct perf_evlist *evlist,
> diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
> index d14953bbfcbb..9b245dd61da1 100644
> --- a/tools/perf/util/session.c
> +++ b/tools/perf/util/session.c
> @@ -205,6 +205,15 @@ static int process_event_synth_attr_stub(struct perf_tool *tool __maybe_unused,
>  	return 0;
>  }
>  
> +static int process_event_synth_attr_update_stub(struct perf_tool *tool __maybe_unused,
> +						union perf_event *event __maybe_unused,
> +						struct perf_evlist **pevlist
> +						__maybe_unused)
> +{
> +	dump_printf(": unhandled!\n");
> +	return 0;
> +}
> +
>  static int process_event_sample_stub(struct perf_tool *tool __maybe_unused,
>  				     union perf_event *event __maybe_unused,
>  				     struct perf_sample *sample __maybe_unused,
> @@ -374,6 +383,8 @@ void perf_tool__fill_defaults(struct perf_tool *tool)
>  		tool->unthrottle = process_event_stub;
>  	if (tool->attr == NULL)
>  		tool->attr = process_event_synth_attr_stub;
> +	if (tool->attr_update == NULL)
> +		tool->attr_update = process_event_synth_attr_update_stub;
>  	if (tool->tracing_data == NULL)
>  		tool->tracing_data = process_event_synth_tracing_data_stub;
>  	if (tool->build_id == NULL)
> @@ -625,6 +636,13 @@ static void perf_event__hdr_attr_swap(union perf_event *event,
>  	mem_bswap_64(event->attr.id, size);
>  }
>  
> +static void perf_event__hdr_attr_update_swap(union perf_event *event,
> +					     bool sample_id_all __maybe_unused)
> +{
> +	event->attr_update.type = bswap_64(event->attr_update.type);
> +	event->attr_update.id   = bswap_64(event->attr_update.id);
> +}
> +
>  static void perf_event__event_type_swap(union perf_event *event,
>  					bool sample_id_all __maybe_unused)
>  {
> @@ -779,6 +797,7 @@ static perf_event__swap_op perf_event__swap_ops[] = {
>  	[PERF_RECORD_STAT_CONFIG]	  = perf_event__stat_config_swap,
>  	[PERF_RECORD_STAT]		  = perf_event__stat_swap,
>  	[PERF_RECORD_STAT_ROUND]	  = perf_event__stat_round_swap,
> +	[PERF_RECORD_HEADER_ATTR_UPDATE]  = perf_event__hdr_attr_update_swap,
>  	[PERF_RECORD_HEADER_MAX]	  = NULL,
>  };
>  
> @@ -1290,6 +1309,8 @@ static s64 perf_session__process_user_event(struct perf_session *session,
>  			perf_session__set_comm_exec(session);
>  		}
>  		return err;
> +	case PERF_RECORD_HEADER_ATTR_UPDATE:
> +		return tool->attr_update(tool, event, &session->evlist);
>  	case PERF_RECORD_HEADER_EVENT_TYPE:
>  		/*
>  		 * Depreceated, but we need to handle it for sake
> diff --git a/tools/perf/util/tool.h b/tools/perf/util/tool.h
> index d04d9e5f444a..59702b5d703f 100644
> --- a/tools/perf/util/tool.h
> +++ b/tools/perf/util/tool.h
> @@ -50,6 +50,7 @@ struct perf_tool {
>  			throttle,
>  			unthrottle;
>  	event_attr_op	attr;
> +	event_attr_op	attr_update;
>  	event_op2	tracing_data;
>  	event_oe	finished_round;
>  	event_op2	build_id,
> -- 
> 2.4.3

  reply	other threads:[~2015-10-19 21:00 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-16 10:40 [PATCHv4 00/57] perf stat: Add scripting support Jiri Olsa
2015-10-16 10:40 ` [PATCH 01/57] perf tools: Add thread_map event Jiri Olsa
2015-10-16 10:40 ` [PATCH 02/57] perf tools: Add thread_map event sythesize function Jiri Olsa
2015-10-16 10:40 ` [PATCH 03/57] perf tools: Add thread_map__new_event function Jiri Olsa
2015-10-16 10:40 ` [PATCH 04/57] perf tools: Add perf_event__fprintf_thread_map function Jiri Olsa
2015-10-16 10:40 ` [PATCH 05/57] perf tools: Add cpu_map event Jiri Olsa
2015-10-19 20:45   ` Arnaldo Carvalho de Melo
2015-10-22  7:56     ` Jiri Olsa
2015-10-16 10:40 ` [PATCH 06/57] perf tools: Add cpu_map event synthesize function Jiri Olsa
2015-10-16 10:40 ` [PATCH 07/57] perf tools: Add cpu_map__empty_new function Jiri Olsa
2015-10-16 10:40 ` [PATCH 08/57] perf tools: Add cpu_map__new_event function Jiri Olsa
2015-10-16 10:40 ` [PATCH 09/57] perf tools: Add perf_event__fprintf_cpu_map function Jiri Olsa
2015-10-16 10:40 ` [PATCH 10/57] perf tools: Add stat config event Jiri Olsa
2015-10-16 10:40 ` [PATCH 11/57] perf tools: Add stat config event synthesize function Jiri Olsa
2015-10-16 10:40 ` [PATCH 12/57] perf tools: Add stat config event read function Jiri Olsa
2015-10-16 10:40 ` [PATCH 13/57] perf tools: Add stat event Jiri Olsa
2015-10-16 10:40 ` [PATCH 14/57] perf tools: Add stat event synthesize function Jiri Olsa
2015-10-16 10:40 ` [PATCH 15/57] perf tools: Add stat event read function Jiri Olsa
2015-10-16 10:40 ` [PATCH 16/57] perf tools: Add stat round event Jiri Olsa
2015-10-16 10:40 ` [PATCH 17/57] perf tools: Add stat round event synthesize function Jiri Olsa
2015-10-16 10:40 ` [PATCH 18/57] perf tools: Add stat events fprintf functions Jiri Olsa
2015-10-16 10:40 ` [PATCH 19/57] perf tools: Add attr_update event Jiri Olsa
2015-10-19 21:00   ` Arnaldo Carvalho de Melo [this message]
2015-10-22  8:01     ` Jiri Olsa
2015-10-25 12:27       ` Jiri Olsa
2015-10-16 10:40 ` [PATCH 20/57] perf tools: Add attr_update event unit type Jiri Olsa
2015-10-16 10:40 ` [PATCH 21/57] perf tools: Add attr_update event scale type Jiri Olsa
2015-10-16 10:40 ` [PATCH 22/57] perf tools: Add attr_update event name type Jiri Olsa
2015-10-16 10:40 ` [PATCH 23/57] perf tools: Add attr_update event cpus type Jiri Olsa
2015-10-16 10:40 ` [PATCH 24/57] perf tools: Add perf_event__fprintf_attr_update function Jiri Olsa
2015-10-16 10:41 ` [PATCH 25/57] perf report: Display newly added events in raw dump Jiri Olsa
2015-10-16 10:41 ` [PATCH 26/57] perf tools: Introduce stat feature Jiri Olsa
2015-10-16 10:41 ` [PATCH 27/57] perf tools: Move id_offset out of struct perf_evsel union Jiri Olsa
2015-10-16 10:41 ` [PATCH 28/57] perf stat: Rename perf_stat struct into perf_stat_evsel Jiri Olsa
2015-10-19 21:01   ` Arnaldo Carvalho de Melo
2015-10-20  7:48   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-10-16 10:41 ` [PATCH 29/57] perf stat: Add AGGR_UNSET mode Jiri Olsa
2015-10-19 21:02   ` Arnaldo Carvalho de Melo
2015-10-20  7:48   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-10-16 10:41 ` [PATCH 30/57] perf stat record: Add record command Jiri Olsa
2015-10-16 10:41 ` [PATCH 31/57] perf stat record: Initialize record features Jiri Olsa
2015-10-16 10:41 ` [PATCH 32/57] perf stat record: Synthesize stat record data Jiri Olsa
2015-10-16 10:41 ` [PATCH 33/57] perf stat record: Store events IDs in perf data file Jiri Olsa
2015-10-16 10:41 ` [PATCH 34/57] perf stat record: Add pipe support for record command Jiri Olsa
2015-10-16 10:41 ` [PATCH 35/57] perf stat record: Write stat events on record Jiri Olsa
2015-10-16 10:41 ` [PATCH 36/57] perf stat record: Write stat round " Jiri Olsa
2015-10-16 10:41 ` [PATCH 37/57] perf stat record: Do not allow record with multiple runs mode Jiri Olsa
2015-10-16 10:41 ` [PATCH 38/57] perf stat record: Synthesize attr update events Jiri Olsa
2015-10-16 10:41 ` [PATCH 39/57] perf tools: Make cpu_map__build_map global Jiri Olsa
2015-10-19 21:03   ` Arnaldo Carvalho de Melo
2015-10-20  7:49   ` [tip:perf/core] perf cpu_map: " tip-bot for Jiri Olsa
2015-10-16 10:41 ` [PATCH 40/57] perf tools: Add data arg to cpu_map__build_map callback Jiri Olsa
2015-10-19 21:04   ` Arnaldo Carvalho de Melo
2015-10-20  7:49   ` [tip:perf/core] perf cpu_map: " tip-bot for Jiri Olsa
2015-10-16 10:41 ` [PATCH 41/57] perf stat report: Cache aggregated map entries in extra cpumap Jiri Olsa
2015-10-16 10:41 ` [PATCH 42/57] perf stat report: Add report command Jiri Olsa
2015-10-16 10:41 ` [PATCH 43/57] perf stat report: Process cpu/threads maps Jiri Olsa
2015-10-16 10:41 ` [PATCH 44/57] perf stat report: Process stat config event Jiri Olsa
2015-10-16 10:41 ` [PATCH 45/57] perf stat report: Add support to initialize aggr_map from file Jiri Olsa
2015-10-16 10:41 ` [PATCH 46/57] perf stat report: Process stat and stat round events Jiri Olsa
2015-10-16 10:41 ` [PATCH 47/57] perf stat report: Process attr update events Jiri Olsa
2015-10-16 10:41 ` [PATCH 48/57] perf stat report: Move csv_sep initialization before report command Jiri Olsa
2015-10-16 10:41 ` [PATCH 49/57] perf stat report: Allow to override aggr_mode Jiri Olsa
2015-10-16 10:41 ` [PATCH 50/57] perf script: Check output fields only for samples Jiri Olsa
2015-10-19 21:06   ` Arnaldo Carvalho de Melo
2015-10-20  7:49   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-10-16 10:41 ` [PATCH 51/57] perf script: Process cpu/threads maps Jiri Olsa
2015-10-16 10:41 ` [PATCH 52/57] perf script: Process stat config event Jiri Olsa
2015-10-16 10:41 ` [PATCH 53/57] perf script: Add process_stat/process_stat_interval scripting interface Jiri Olsa
2015-10-16 10:41 ` [PATCH 54/57] perf script: Add stat default handlers Jiri Olsa
2015-10-16 10:41 ` [PATCH 55/57] perf script: Display stat events by default Jiri Olsa
2015-10-16 10:41 ` [PATCH 56/57] perf script: Add python support for stat events Jiri Olsa
2015-10-16 10:41 ` [PATCH 57/57] perf script: Add stat-cpi.py script Jiri Olsa
2015-10-19 19:48 ` [PATCHv4 00/57] perf stat: Add scripting support Liang, Kan
2015-10-21  2:03 ` Namhyung Kim
2015-10-21 10:22   ` Jiri Olsa

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=20151019210004.GF3215@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=dsahern@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).