[PATCH v3 7/8] perf: Define PMU_TXN_READ interface
Peter Zijlstra
peterz at infradead.org
Fri Jul 17 08:20:15 AEST 2015
On Tue, Jul 14, 2015 at 08:01:54PM -0700, Sukadev Bhattiprolu wrote:
> +/*
> + * Use the transaction interface to read the group of events in @leader.
> + * PMUs like the 24x7 counters in Power, can use this to queue the events
> + * in the ->read() operation and perform the actual read in ->commit_txn.
> + *
> + * Other PMUs can ignore the ->start_txn and ->commit_txn and read each
> + * PMU directly in the ->read() operation.
> + */
> +static int perf_event_read_group(struct perf_event *leader)
> +{
> + int ret;
> + struct perf_event *sub;
> + struct pmu *pmu;
> +
> + pmu = leader->pmu;
> +
> + pmu->start_txn(pmu, PERF_PMU_TXN_READ);
> +
> + perf_event_read(leader);
There should be a lockdep assert with that list iteration.
> + list_for_each_entry(sub, &leader->sibling_list, group_entry)
> + perf_event_read(sub);
> +
> + ret = pmu->commit_txn(pmu);
> +
> + return ret;
> +}
More information about the Linuxppc-dev
mailing list