Re: [PATCH 09/10] Define PERF_PMU_TXN_READ interface

2015-08-13 Thread Peter Zijlstra
On Thu, Aug 13, 2015 at 01:04:28PM -0700, Sukadev Bhattiprolu wrote: > | > | +static int perf_read_group(struct perf_event *event, > | > | + u64 read_format, char __user *buf) > | > | +{ > | > | + struct perf_event *leader = event->group_leader, *child; > | >

Re: [PATCH 09/10] Define PERF_PMU_TXN_READ interface

2015-08-13 Thread Sukadev Bhattiprolu
Peter Zijlstra [pet...@infradead.org] wrote: | On Tue, Aug 11, 2015 at 09:14:00PM -0700, Sukadev Bhattiprolu wrote: | > | +static void __perf_read_group_add(struct perf_event *leader, u64 read_format, u64 *values) | > | { | > | + struct perf_event *sub; | > | + int n = 1; /* skip @nr */ | > | >

Re: [PATCH 09/10] Define PERF_PMU_TXN_READ interface

2015-08-12 Thread Peter Zijlstra
On Tue, Aug 11, 2015 at 09:14:00PM -0700, Sukadev Bhattiprolu wrote: > | +static void __perf_read_group_add(struct perf_event *leader, u64 > read_format, u64 *values) > | { > | + struct perf_event *sub; > | + int n = 1; /* skip @nr */ > > This n = 1 is to skip over the values[0] = 1 + nr_sib

Re: [PATCH 09/10] Define PERF_PMU_TXN_READ interface

2015-08-11 Thread Sukadev Bhattiprolu
Peter Zijlstra [pet...@infradead.org] wrote: | On Sun, Jul 26, 2015 at 10:40:37PM -0700, Sukadev Bhattiprolu wrote: | > @@ -3743,7 +3762,13 @@ static u64 perf_event_aggregate(struct perf_event *event, u64 *enabled, | > lockdep_assert_held(&event->child_mutex); | > | > list_for_each_entry

Re: [PATCH 09/10] Define PERF_PMU_TXN_READ interface

2015-08-06 Thread Peter Zijlstra
On Sun, Jul 26, 2015 at 10:40:37PM -0700, Sukadev Bhattiprolu wrote: > @@ -3743,7 +3762,13 @@ static u64 perf_event_aggregate(struct perf_event > *event, u64 *enabled, > lockdep_assert_held(&event->child_mutex); > > list_for_each_entry(child, &event->child_list, child_list) { > +#if

[PATCH 09/10] Define PERF_PMU_TXN_READ interface

2015-07-26 Thread Sukadev Bhattiprolu
Define a new PERF_PMU_TXN_READ interface to read a group of counters at once. pmu->start_txn()// Initialize before first event for each event in group pmu->read(event); // Queue each event to be read pmu->commit_txn() //