On Wed, Nov 23, 2016 at 04:44:52AM -0500, [email protected] wrote:
> From: Kan Liang <[email protected]>
> 
> Introduce a new option --show-overhead to show overhead events in perf
> script
> 
> Signed-off-by: Kan Liang <[email protected]>
> ---
>  tools/perf/builtin-script.c | 36 ++++++++++++++++++++++++++++++++++++
>  tools/perf/util/event.c     | 37 +++++++++++++++++++++++++++++++++++++
>  tools/perf/util/event.h     |  1 +
>  3 files changed, 74 insertions(+)
> 
> diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
> index e1daff3..76d9747 100644
> --- a/tools/perf/builtin-script.c
> +++ b/tools/perf/builtin-script.c
> @@ -829,6 +829,7 @@ struct perf_script {
>       bool                    show_task_events;
>       bool                    show_mmap_events;
>       bool                    show_switch_events;
> +     bool                    show_overhead;
>       bool                    allocated;
>       struct cpu_map          *cpus;
>       struct thread_map       *threads;
> @@ -1264,6 +1265,37 @@ static int process_switch_event(struct perf_tool *tool,
>       return 0;
>  }
>  
> +static int process_overhead_event(struct perf_tool *tool,
> +                               union perf_event *event,
> +                               struct perf_sample *sample,
> +                               struct machine *machine)
> +{
> +     struct thread *thread;
> +     struct perf_script *script = container_of(tool, struct perf_script, 
> tool);
> +     struct perf_session *session = script->session;
> +     struct perf_evsel *evsel;
> +
> +     if (perf_event__process_switch(tool, event, sample, machine) < 0)
> +             return -1;

process_switch event? copy&paste error?

jirka

> +     if (sample) {
> +             evsel = perf_evlist__id2evsel(session->evlist, sample->id);
> +             thread = machine__findnew_thread(machine, sample->pid, 
> sample->tid);
> +             if (thread == NULL) {
> +                     pr_debug("problem processing OVERHEAD event, skipping 
> it.\n");
> +                     return -1;
> +             }
> +
> +             print_sample_start(sample, thread, evsel);
> +             perf_event__fprintf(event, stdout);
> +             thread__put(thread);
> +     } else {
> +             /* USER OVERHEAD event */
> +             perf_event__fprintf(event, stdout);
> +     }
> +
> +     return 0;
> +}
> +

SNIP

Reply via email to