Messages in this thread | | | From | (Eric W. Biederman) | Date | Sat, 09 Apr 2016 09:45:46 -0500 | Subject | Re: [PATCH 01/13] devpts: Teach /dev/ptmx to find the associated devpts via path lookup |
| |
"H. Peter Anvin" <hpa@zytor.com> writes:
> On April 9, 2016 6:09:09 AM PDT, One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> wrote: >> >>> If anyone has a better idea on how userspace should connect the >>master >>> pty file descriptor the slave file descriptor, I would be willing to >>> implement that instead. >> >>If we are willing to go away from the existing mess of a tty interface >>inflicted on us by BSD and then mashed up by POSIX then a syscall of >> >> int err = ptypair(int fd[2], int perms, int flags); >> >>[where flags is the O_ ones we usually need to cover (CLOEXEC etc) and >>maybe even some kind of "private" flag to say don't even expose it via >>devpts). >> >>would do remarkably sane things to the majoirty of use cases as it >>breaks >>the dependence on grantpt and also the historic screwup that pty pairs >>aren't allocated atomically with both file handles returned as pipe() >>does. >> >>Alan > > We don't even need to do that if we'd be willing to change the user > space interface... if we could rely on the POSIX interface then > posix_openpt() could simply open /dev/pts/ptmx and everything would > just work.
At a quick skim it does look like userspace uses posix_openpt for the most part. Certainly portable apps that can run on FreeBSD do. And just grepping through binaries all of the ones I have checked so far are calling posix_openpt.
Peter if you or someone could start updating the userspace version of posix_openpt to use /dev/pts/ptmx when available over /dev/ptmx in parallel to the kernel work to always allow mount of devpts to give distinct instances that would be great.
> The trick here is how to make it work in the presence of some > extremely bad practices in existing userspace.
Yeah. I am going to look and see if I can move this controversial bit to a separate patch so we can discuss it more conviniently.
Eric
| |