From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: hpa@zytor.com, Florian Weimer <fweimer@redhat.com>
Cc: linux-api@vger.kernel.org, libc-alpha@sourceware.org,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] Linux: Define struct termios2 in <termios.h> under _GNU_SOURCE [BZ #10339]
Date: Mon, 15 Apr 2019 14:22:37 -0300 [thread overview]
Message-ID: <bfe6744f-7326-0a06-e43c-9f88abce7032@linaro.org> (raw)
In-Reply-To: <A278227C-039B-49F4-B80D-650B785AE225@zytor.com>
On 15/04/2019 12:53, hpa@zytor.com wrote:
> On April 12, 2019 12:50:41 AM PDT, Florian Weimer <fweimer@redhat.com> wrote:
>> * Adhemerval Zanella:
>>
>>> On 11/04/2019 08:07, Florian Weimer wrote:
>>>> * Adhemerval Zanella:
>>>>
>>>>> This allows us to adjust the baud rates to non-standard values
>> using termios
>>>>> interfaces without to resorting to add new headers and use a
>> different API
>>>>> (ioctl).
>>>>
>>>> How much symbol versioning will be required for this change?
>>>
>>> I think all interfaces that have termios as input for sparc and mips
>>> (tcgetattr, tcsetattr, cfmakeraw, cfgetispeed, cfgetospeed,
>> cfsetispeed,
>>> cfsetospeed, cfsetspeed).
>>>
>>> Alpha will also need to use termios1 for pre-4.20 kernels.
>>
>> So only new symbol versions there? Hmm.
>>
>>>>> As Peter Anvin has indicated, he create a POC [1] with the
>> aforementioned
>>>>> new interfaces. It has not been rebased against master, more
>> specially against
>>>>> my termios refactor to simplify the multiple architecture header
>> definitions,
>>>>> but I intend to use as a base.
>>>>
>>>> Reference [1] is still missing. 8-(
>>>
>>> Oops... it is
>> https://git.zytor.com/users/hpa/glibc/termbaud.git/log/?h=wip.termbaud
>>
>> This doesn't really illuminate things. “Drop explicit baud setting
>> interfaces in favor of cfenc|decspeed()” removes the new symbol version
>> for the cf* functions.
>>
>> My gut feeling is that it's safer to add new interfaces, based on the
>> actual kernel/userspace interface, rather than trying to fix up
>> existing
>> interfaces with symbol versioning. The main reason is that code
>> involving serial interfaces is difficult to test, so it will take years
>> until we find the last application broken by the glibc interface bump.
>>
>> I don't feel strongly about this. This came out of a request for
>> enabling TCGETS2 support downstream. If I can't fix this upstream, I
>> will just reject that request.
>>
>> Thanks,
>> Florian
>
> New interfaces are only necessary for the handful of architectures that don't have the speed fields *and* to space to put them in.
Based on your WIP, it seems that both sparc and mips could be adapted.
Do we still have glibc supported architecture that would require compat
symbols?
>
> Using symbol versioning doesn't really help much since the real problem is that struct termios can be passed around in userspace, and the interfaces between user space libraries don't have any versioning. However, my POC code deals with that too by only seeing BOTHER when necessary, so if the structure is extended garbage in the extra fields will be ignored unless new baud rates are in use.
Yeah, we discussed this earlier and if recall correctly it was not settled
that all architectures would allow the use to extra space for the new
fields. It seems the case, which makes the adaptation for termios2 even easier.
The question I have for kernel side is whether termios2 is fully compatible
with termios, meaning that if there is conner cases we need to handle in
userland.
>
> My POC code deals with Alpha as well by falling back to the old interfaces if necessary and possible, otherwise return error.
>
> Exporting termios2 to user space feels a bit odd at this stage as it would only be usable as a fallback on old glibc. Call it kernel_termios2 at least. ioctls using struct termios *must* be changed to kernel_termios anyway!
>
I still prefer to avoid export it to userland and make it usable through
default termios, as your wip does. My understanding is new interfaces
should be semantic equal to current one with the only deviation that
non-standard baudrates will handled as its values. The only issue I
can foresee is if POSIX starts to export new bauds value.
next prev parent reply other threads:[~2019-04-15 17:24 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-09 10:47 [PATCH] Linux: Define struct termios2 in <termios.h> under _GNU_SOURCE [BZ #10339] Florian Weimer
2019-04-09 15:02 ` hpa
2019-04-10 6:50 ` Florian Weimer
2019-04-15 15:54 ` hpa
2019-04-09 15:07 ` hpa
2019-04-09 16:04 ` Florian Weimer
2019-04-10 20:24 ` Adhemerval Zanella
2019-04-11 11:07 ` Florian Weimer
2019-04-11 12:53 ` Adhemerval Zanella
2019-04-12 7:50 ` Florian Weimer
2019-04-15 12:28 ` Florian Weimer
2019-04-15 15:53 ` hpa
2019-04-15 17:22 ` Adhemerval Zanella [this message]
2019-04-17 22:04 ` H. Peter Anvin
2019-04-18 11:09 ` Adhemerval Zanella
2019-04-18 14:46 ` hpa
2019-04-16 9:59 ` Florian Weimer
2019-04-16 12:11 ` Adhemerval Zanella
2019-04-17 22:06 ` H. Peter Anvin
2019-04-17 21:22 ` Joseph Myers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bfe6744f-7326-0a06-e43c-9f88abce7032@linaro.org \
--to=adhemerval.zanella@linaro.org \
--cc=fweimer@redhat.com \
--cc=hpa@zytor.com \
--cc=libc-alpha@sourceware.org \
--cc=linux-api@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).