tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Open master pty (/dev/ptmx) non blocking



On Fri, Sep 23, 2022 at 01:39:16PM +0200, Martin Husemann wrote:
 > > Then, shouldn't the open(2) (and posix_openpt(3)) at least fail with
 > > EINVAL or something if other flags are specified?
 > 
 > The man page says:
 > 
 >      Note that unlike implementations on some other operating systems,
 >      posix_openpt() does not return EINVAL if the value of oflag would be
 >      deemed invalid, instead it is simply ignored.  This means it is not
 >      possible to dynamically test which open(2) flags are possible to set, and
 >      apply a fallback if EINVAL is received.

That is, however, kind of a feeble excuse :-)

While my inclination would be to make it work, until someone wants to
figure out how to do that it seems straightforward to make O_NONBLOCK
fail:

Index: tty_ptm.c
===================================================================
RCS file: /cvsroot/src/sys/kern/tty_ptm.c,v
retrieving revision 1.43
diff -u -p -r1.43 tty_ptm.c
--- tty_ptm.c	29 Jun 2021 22:40:53 -0000	1.43
+++ tty_ptm.c	23 Sep 2022 20:12:07 -0000
@@ -338,6 +338,10 @@ ptmopen(dev_t dev, int flag, int mode, s
 	dev_t ttydev;
 	struct mount *mp;
 
+	if (flag & O_NONBLOCK) {
+		return EINVAL;
+	}
+
 	switch(minor(dev)) {
 	case 0:		/* /dev/ptmx */
 	case 2:		/* /emul/linux/dev/ptmx */


-- 
David A. Holland
dholland%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index