On Fri, Jul 17, 2015 at 06:43:35PM +0800, kaixu xia wrote: > The function bpf_read_pmu() can get the specific map key, convert > the corresponding map value to the pointer to struct perf_event and > return the Hardware PMU counter value.
Thanks for having me on Cc :/ > Signed-off-by: kaixu xia <xiaka...@huawei.com> > --- > +static u64 bpf_read_pmu(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5) > +{ > + void *value = (void *) (unsigned long) r1; > + struct perf_event *event; > + u64 count; > + > + if (!value || !(*(unsigned long *)value)) > + return 0; > + > + event = (struct perf_event *)(*(unsigned long *)value); > + > + if (event->state == PERF_EVENT_STATE_ACTIVE) > + event->pmu->read(event); > + > + count = local64_read(&event->count); > + > + return count; > +} Hell no, that's way broken. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/