Re: [PATCH 3/3] perf script: dump software events and samples from hardware-based profiling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 03, 2011 at 07:20:10AM -0700, David Ahern wrote:
> On 03/02/2011 08:05 PM, Frederic Weisbecker wrote:
> > Hmm, that's a wrong way of walking through callchains. In fact it's not
> > a classical list. node->next can be a ghost entry from a previous callchain
> > that we kept cached in order to optimize allocations.
> > 
> > You need the accessors callchain_cursor_current() and callchain_cursor_advance().
> 
> Ok. I'll look at perf-report's callchain_append again.

Yeah callchain_append() is too much a generic name for something actually
rather specific. In fact callchain_append() adds a callchain, already
resolved, to a histogram in order to produce that statistical tree in the end
that you can have with perf report.

But you don't need those statistical tree of callchains, it's only used
by perf report for now. Instead you rather need to treat every callchains
individually and print each of them.

So you don't even need callchain_append(). All you need in the end is
to use perf_session__resolve_callchain() that resolves the raw struct ip_callchain
(only made of raw ips) into a cursor (list of ips resolved into symbols and so) and
walk through the cursor with the two accessors.

Ah I forgot, you first need to use callchain_cursor_commit() in order to initialize
the position in the cursor.

So:

1) Resolve with perf_session__resolve_callchain()
2) commit with callchain_cursor_commit()
3) iterate with callchain_cursor_current(), callchain_cursor_advance()

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux