Re: [PATCH 07/13] perf: Add attribute to filter out callchains

From: Jiri Olsa
Date: Thu Aug 02 2012 - 04:48:24 EST


On Thu, Aug 02, 2012 at 11:38:26AM +0400, Andrew Vagin wrote:
> On Wed, Aug 01, 2012 at 02:10:59PM +0400, Jiri Olsa wrote:
> > From: Frederic Weisbecker <fweisbec@xxxxxxxxx>
> >
> > Introducing following bits to the the perf_event_attr struct:
> > - exclude_callchain_kernel to filter out kernel callchain
> > from the sample dump
> > - exclude_callchain_user to filter out user callchain
> > from the sample dump
> >
> > We need to be able to disable standard user callchain dump
> > when we use the dwarf cfi callchain mode, because frame
> > pointer based user callchains are useless in this mode.
> >
> > Implementing also exclude_callchain_kernel to have complete
> > set of options.
> >
> > Signed-off-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>
> > [ Added kernel callchains filtering ]
> > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> > CC: Andrew Vagin <avagin@xxxxxxxxxx>
>
> Acked-by: Andrew Vagin <avagin@xxxxxxxxxx>
>
>
> > diff --git a/kernel/events/core.c b/kernel/events/core.c
> > index c4582bb..0902d4a 100644
> > --- a/kernel/events/core.c
> > +++ b/kernel/events/core.c
> > @@ -4130,8 +4130,12 @@ void perf_prepare_sample(struct perf_event_header *header,
> >
> > if (sample_type & PERF_SAMPLE_CALLCHAIN) {
> > int size = 1;
> > + int kernel = !event->attr.exclude_callchain_kernel;
> > + int user = !event->attr.exclude_callchain_user;
> >
> > - data->callchain = perf_callchain(event, regs);
> > + if (kernel || user)
> > + data->callchain = perf_callchain(event, regs,
> > + kernel, user);
> I am not sure, that we need two arguments kernel and user here,
> we can get them from event inside perf_callchain...

right.. I'll send an update with other fixies

thanks
jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/