Prev: [PATCH] Add documentation for trace commands mod, traceon/traceoff
Next: [PATCH v2] ACPI: DMI init_set_sci_en_on_resume for multiple Lenovo ThinkPads
From: Peter Zijlstra on 22 Apr 2010 05:20 On Thu, 2010-04-22 at 15:51 +0800, Lin Ming wrote: > + if (pmu->commit_txn) { > + ret = pmu->commit_txn(pmu); > + if (!ret) { > + if (pmu->stop_txn) > + pmu->stop_txn(pmu); > + > + return 0; > + } > + } I think we can mandate that if one of the _txn methods is available, they all are, it would be weird otherwise. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Lin Ming on 22 Apr 2010 05:20
On Thu, 2010-04-22 at 16:24 +0800, Peter Zijlstra wrote: > On Thu, 2010-04-22 at 15:51 +0800, Lin Ming wrote: > > + if (pmu->commit_txn) { > > + ret = pmu->commit_txn(pmu); > > + if (!ret) { > > + if (pmu->stop_txn) > > + pmu->stop_txn(pmu); > > + > > + return 0; > > + } > > + } > > I think we can mandate that if one of the _txn methods is available, > they all are, it would be weird otherwise. > How about below? diff --git a/kernel/perf_event.c b/kernel/perf_event.c index ffd2360..72ea25c 100644 --- a/kernel/perf_event.c +++ b/kernel/perf_event.c @@ -635,12 +635,16 @@ group_sched_in(struct perf_event *group_event, { struct perf_event *event, *partial_group = NULL; const struct pmu *pmu = group_event->pmu; + bool txn = false; int ret; if (group_event->state == PERF_EVENT_STATE_OFF) return 0; if (pmu->start_txn) + txn = true; + + if (txn) pmu->start_txn(pmu); if (event_sched_in(group_event, cpuctx, ctx)) @@ -656,18 +660,17 @@ group_sched_in(struct perf_event *group_event, } } - if (pmu->commit_txn) { + if (txn) { ret = pmu->commit_txn(pmu); if (!ret) { - if (pmu->stop_txn) - pmu->stop_txn(pmu); + pmu->stop_txn(pmu); return 0; } } group_error: - if (pmu->stop_txn) + if (txn) pmu->stop_txn(pmu); /* -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |