Messages in this thread | | | Subject | Re: [PATCH v2 1/6] perf: Add interface to add general events to sysfs | From | Lin Ming <> | Date | Tue, 19 Jul 2011 15:52:06 +0800 |
| |
On Mon, 2011-07-18 at 21:34 +0800, Peter Zijlstra wrote: > On Fri, 2011-07-15 at 14:34 +0000, Lin Ming wrote: > > PMU can implement ::add_events() to add its general events to sysfs. > > > > For example, > > > > /sys/bus/event_source/devices/uncore/events > > └── cycle > > > > Signed-off-by: Lin Ming <ming.m.lin@intel.com> > > --- > > include/linux/perf_event.h | 9 +++++++ > > kernel/events/core.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 61 insertions(+), 0 deletions(-) > > > > diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h > > index 3f2711c..14337a3 100644 > > --- a/include/linux/perf_event.h > > +++ b/include/linux/perf_event.h > > @@ -676,6 +676,14 @@ struct pmu { > > * for each successful ->add() during the transaction. > > */ > > void (*cancel_txn) (struct pmu *pmu); /* optional */ > > + > > + void (*add_events) (void); > > +}; > > I'd rather not have a function pointer here, and all the kobj thingies > can be hooking into the existing struct device, right?
I forgot to mention one important reason why I added a function pointer.
The events can only be added to sysfs after PMU sysfs is initialized in perf_event_sysfs_init -> pmu_dev_alloc
> @@ -5571,6 +5571,8 @@ static int pmu_dev_alloc(struct pmu *pmu) > if (ret) > goto free_dev; > > + if (pmu->add_events) > + pmu->add_events();
So we need a pmu callback which is called in pmu_dev_alloc to add events to sysfs.
You suggested a new interface, int perf_pmu_add_event(struct pmu *pmu, const char *name, u64 config)
But where should it be called? I guess you mean to call it in pmu init function, for example, uncore_pmu_init.
But pmu init function maybe called before perf_event_sysfs_init, which means the pmu sysfs has not been initialized yet.
Lin Ming
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |