On Tue, Jul 14, 2015 at 08:01:52PM -0700, Sukadev Bhattiprolu wrote: > Move the part of perf_event_read_value() that computes the event > counts and event times into a new function, perf_event_compute(). > > This would allow us to call perf_event_compute() independently. > > Signed-off-by: Sukadev Bhattiprolu <suka...@linux.vnet.ibm.com> > > Changelog[v3] > Rather than move perf_event_read() into callers and then > rename, just move the computations into a separate function > (redesign to address comment from Peter Zijlstra). > ---
Changelog[] bits go here, below the '---' where they get discarded. > kernel/events/core.c | 37 ++++++++++++++++++++++++------------- > 1 file changed, 24 insertions(+), 13 deletions(-) > > diff --git a/kernel/events/core.c b/kernel/events/core.c > index 44fb89d..b1e9a42 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -3704,6 +3704,29 @@ static int perf_release(struct inode *inode, struct > file *file) > return 0; > } > > +static u64 perf_event_compute(struct perf_event *event, u64 *enabled, > + u64 *running) This is a horrible name, 'compute' what? > +{ > + struct perf_event *child; > + u64 total; > + > + total = perf_event_count(event); > + > + *enabled += event->total_time_enabled + > + atomic64_read(&event->child_total_time_enabled); > + *running += event->total_time_running + > + atomic64_read(&event->child_total_time_running); > + lockdep_assert_held(&event->child_mutex); > + list_for_each_entry(child, &event->child_list, child_list) { > + perf_event_read(child); > + total += perf_event_count(child); > + *enabled += child->total_time_enabled; > + *running += child->total_time_running; > + } > + > + return total; > +} > + > /* > * Remove all orphanes events from the context. > */ _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev