Re: [PATCH RFC v1 1/4] perf: Introduce extended syscall error reporting

2015-08-17 Thread Alexander Shishkin
Peter Zijlstra writes: > On Fri, Jul 24, 2015 at 02:45:56PM +0300, Alexander Shishkin wrote: >> +static void perf_error_report_site(struct perf_event_attr *attr, >> + const struct perf_err_site *site) >> +{ >> +void *buffer; >> + >> +if (!site || !extended_re

Re: [PATCH RFC v1 1/4] perf: Introduce extended syscall error reporting

2015-08-05 Thread Peter Zijlstra
On Fri, Jul 24, 2015 at 02:45:56PM +0300, Alexander Shishkin wrote: > @@ -3890,7 +3958,7 @@ perf_read(struct file *file, char __user *buf, size_t > count, loff_t *ppos) > ret = perf_read_hw(event, buf, count); > perf_event_ctx_unlock(event, ctx); > > - return ret; > + return

Re: [PATCH RFC v1 1/4] perf: Introduce extended syscall error reporting

2015-08-05 Thread Peter Zijlstra
On Fri, Jul 24, 2015 at 02:45:56PM +0300, Alexander Shishkin wrote: > +static void perf_error_report_site(struct perf_event_attr *attr, > +const struct perf_err_site *site) > +{ > + void *buffer; > + > + if (!site || !extended_reporting_enabled(attr)) > +

Re: [PATCH RFC v1 1/4] perf: Introduce extended syscall error reporting

2015-08-05 Thread Peter Zijlstra
On Fri, Jul 24, 2015 at 02:45:56PM +0300, Alexander Shishkin wrote: > +#define __perf_err(__e, __c, __m) ({ \ > + static struct perf_err_site \ > + __attribute__ ((unused,__section__("__perf_err"))) \ > + __err_site = {

Re: [PATCH RFC v1 1/4] perf: Introduce extended syscall error reporting

2015-08-05 Thread Peter Zijlstra
On Fri, Jul 24, 2015 at 02:45:56PM +0300, Alexander Shishkin wrote: > +/* > + * Use part of the [-1, -MAX_ERRNO] errno range for perf's extended error > + * reporting. Anything within [-PERF_ERRNO, -MAX_ERRNO] is an index of a > + * perf_err_site structure within __perf_err section. 3.5k should be

Re: [PATCH RFC v1 1/4] perf: Introduce extended syscall error reporting

2015-07-30 Thread Alexander Shishkin
Alexander Shishkin writes: > +static inline int perf_errno(const struct perf_err_site *site) > +{ > + unsigned long err = site - __start___perf_err; > + > + trace_printk("[%ld] %s:%d, %d\n", err, site->file, site->line, > site->code); I should mention that this trace_printk() was uninten