Re: [PATCH 1/1] powerpc/perf: Adjust callchain based on DWARF debug

From: Jiri Olsa
Date: Thu May 22 2014 - 06:04:23 EST


On Tue, May 20, 2014 at 06:26:44PM -0700, Sukadev Bhattiprolu wrote:

SNIP

> + * TODO:
> + * Rather than returning an index into the callchain and have the
> + * caller skip that entry, we could modify the callchain in-place
> + * by putting a PERF_CONTEXT_IGNORE marker in the affected entry.
> + *
> + * But @chain points to read-only mmap, so the caller needs to
> + * duplicate the callchain to modify in-place - something like:
> + *
> + * new_callchain = arch_duplicate_callchain();
> + * arch_adjust_callchain(new_callchain);
> + * ...
> + * arch_free_callchain(new_callchain);
> + *
> + * Since we only expect to adjust <= 1 entry for now, just return
> + * the index.
> + */
> +int arch_adjust_callchain(struct machine *machine, struct thread *thread,
> + struct ip_callchain *chain)
> +{

so in case we dont do the real adjusting of the callchain (see the other email)
and just returning the index, I think we should rename this accordingly,
so it's not confusing.. arch_callchain_skip_idx ? ;-)

SNIP

> --- a/tools/perf/util/callchain.h
> +++ b/tools/perf/util/callchain.h
> @@ -165,4 +165,16 @@ int hist_entry__append_callchain(struct hist_entry *he, struct perf_sample *samp
>
> extern const char record_callchain_help[];
> int parse_callchain_report_opt(const char *arg);
> +
> +#ifdef HAVE_ADJUST_CALLCHAIN
> +extern int arch_adjust_callchain(struct machine *machine,
> + struct thread *thread, struct ip_callchain *chain);
> +#else
> +static inline int arch_adjust_callchain(struct machine *machine,
> + struct thread *thread, struct ip_callchain *chain)

this needs 'maybe_unused' attribute at each parameter, otherwise
it won't compile for arch != ppc

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/