Re: [RFC 2/2] perf/core: change errno for sampling event not supported in hardware

From: Vineet Gupta
Date: Mon May 09 2016 - 13:24:01 EST


On Monday 09 May 2016 07:24 PM, Vince Weaver wrote:
> On Mon, 9 May 2016, Vineet Gupta wrote:
>
>> This allows userspace to identify this case specifically from the
>> catch all error msg it prints currently.
>>
>> This is an ABI change
>
> An ABI change which will probably break things.


Right thats what I feared. But hold on, I don't think we need to change the ABI to
achieve what we want. Gosh why did I even take that path.

Currently the errno switch case in perf_evsel__open_strerror() in doesn't handle
ENOTSUPP. So how about we add that - augmented with the same sample_period !0
check to barf for lack of sampling support.

Do you see anything wrong with that ?

-Vineet

>
> The original change from ENODEV to ENOTSUPP managed to break things
> although it took four kernel releases before anyone noticed.
>
> The usage of ENOTSUPP was my fault, though I feel like at the time I was
> told that ENOTSUPP is for internal kernel usage and would be converted to
> EOPNOTSUPP when returning an error to userspace. But now I
> can't find any sort of reference for that at all, except the fact that
>
> /usr/include/x86_64-linux-gnu/bits/errno.h
>
> has
> /* Linux has no ENOTSUP error code. */
> # define ENOTSUP EOPNOTSUPP
>
> in it... but wait, that's ENOTSUP not ENOTSUPP. Blargh.
>
> Vince
>