Re: RFC: out-of-tree tty driver breakage (changing ASYNC_ bits)

From: Grant Edwards
Date: Tue Jun 28 2016 - 12:05:54 EST


On 2016-06-28, Grant Edwards <grant.b.edwards@xxxxxxxxx> wrote:
> On 2016-06-28, Grant Edwards <grant.b.edwards@xxxxxxxxx> wrote:
>> On 2016-01-11, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> wrote:
>>> On 01/11/2016 07:53 AM, Grant Edwards wrote:
>>>> On 2016-01-11, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>>>>> On Sun, Jan 10, 2016 at 01:42:44PM -0800, Peter Hurley wrote:
>>>>>
>>>>>> This will break out-of-tree drivers but I don't really see a
>>>>>> realistic alternative. Also, I think the new symbol prefix ASY_ isn't
>>>>>> great and I'd like to get some suggestions.
>>>>>
>>>>> Don't worry about breaking out-of-tree drivers, that's fine.
>>>>
>>>> One request from this maintainer of several out-of-tree drivers: if
>>>> you break something, break it such that it won't compile. It would be
>>>> nice to avoid changes that break functionality but still compile
>>>> without warning.
>>>
>>> I was in the process of writing how I can't remove
>>> ASYNC_INITIALIZED, et.al from the uapi header, when I realized that
>>> I can just guard them with #ifndef _KERNEL_ which will trigger the
>>> requisite out-of-tree build break.
>
>> You know that _KERNEL_ is defined when when compiling kernel-space
>> code (either in-tree or out-of-tree), right?
>
> Ignore that. I missed the 'n' in #ifndef. My driver build should
> fail due to ASYNC_INITIALIZED being undefined, but it isn't. :/
>
> For some reason _KERNEL_ is not defined when my module is being
> compiled....

That's because it's __KERNEL__ not _KERNEL_ that get's defined when
compiling kernel-space code. So, in tty_flags.h:

81 #define ASYNC_SPD_MASK (ASYNC_SPD_HI|ASYNC_SPD_VHI|ASYNC_SPD_SHI)
82
83 #ifndef _KERNEL_
84 /* These flags are no longer used (and were always masked from userspace) */
85 #define ASYNC_INITIALIZED (1U << ASYNCB_INITIALIZED)
86 #define ASYNC_NORMAL_ACTIVE (1U << ASYNCB_NORMAL_ACTIVE)

Shoulnd't line 83 be

#ifndef __KERNEL__
?

--
Grant Edwards grant.b.edwards Yow! PARDON me, am I
at speaking ENGLISH?
gmail.com