O_NDELAY flag on open system call on 4.2BSD

chris at mimsy.UUCP chris at mimsy.UUCP
Fri Nov 28 04:57:50 AEST 1986


In article <3472 at sdcrdcf.UUCP>, davem at sdcrdcf.UUCP (David Melman) writes:
>I want to be able to check for carrier on a tty port without blocking.
>I thought I would use the O_NDELAY flag in an open call, but I found
>that the open still hangs, e.g 
>
>>open (ttyline, O_WRONLY|O_NDELAY, 0);
>
>Specifically, the tty port is a DEC DMZ.  

The 4.2 and 4.3 kernels do not check O_NDELAY before waiting for
carrier.  It is easy to add to a kernel, but (I think) the wrong
approach.

>We are running 4.2bsd with Chris Torek's DMZ driver.

Well, it is not `my' DMZ driver; I just edited it a bit.  But if
you have my version, you should have a `dmzoopen()' and a `dmzoclose()'
in it as well.  Configure these in (if you have not done so already)
in /sys/vax/conf.c, and then

	# mknod /dev/dialNN c <maj> <min>

where <maj> is the major device number that gets dmzoopen, and <min>
is the minor device number of the appropriate tty.  Opening the dial
line will succeed if and only if there is no one actively using the 
tty line.  If the tty line is in use (by, e.g., getty) the open will
fail with EBUSY.  The tty line opens will wait for carrier as usual;
dial line opens never wait for carrier.

(Exception: root can always open the dial line.)
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7690)
UUCP:	seismo!mimsy!chris	ARPA/CSNet:	chris at mimsy.umd.edu



More information about the Comp.unix.wizards mailing list