perf: Track the perf_context when converting
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 23 May 2016 16:48:45 +0000 (12:48 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jun 2016 15:48:37 +0000 (11:48 -0400)
commitf3acbef630c671de3d13a684bf83d9cd028219d9
tree8db7a4bc4bf1ac4073817b0d1500d95fe1e28d3e
parent339c5a3ed63b801a6aefebe76ac37a5956dade6d
perf: Track the perf_context when converting

perfconv.c was originally its own program, completely decoupled from the
rest of perf.  It got its info from the kernel only, which limits the
things we can do with it.  For instance, any accounting info or parameters
for a perf event would need to be communicated to the kernel and then
shipped back out to userspace to be reported.  This design is rather
lacking.

Now we'll keep track of the perf_context, so that we can look up the
original perf_event during conversion time.  This is similar to tracking
the perf_event_attr throughout the life of the perf run.  That's something
Linux does internally, so it makes sense for us to do it in our perf.

For an example of where the old system failed, we don't know the
sample_period for any given event.  The kernel only gives us 64 bits per
event, and that doesn't include pev->trigger_count.  That was submitted to
the kernel, but subsequently lost.  Userspace still knows what it asked
for, and the kernel also knows, but it disappears as we flow through the
system.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/profile/perf/perf.c
tools/profile/perf/perfconv.c
tools/profile/perf/perfconv.h