[net.sources] More on dz.c changes for dial in & out on same line

chris@umcp-cs.UUCP (Chris Torek) (09/08/84)

I have a few things to say about the kernel mods for dz ``dialout''
lines (now that several people have brought up various points).

First:  the ``csleep()'' call in dzopen() is a BRL hack.  Just remove
the third argument and call ``sleep()'' instead.  (If you're curious,
csleep is "commented sleep" and is useful for ^T and occasionally for
debugging system crashes.)

Second:  Tip, cu, UUCP, and the ``tiny comm program'' will gripe about
a ``Mount device busy'' (EBUSY in errno.h) error occasionally.  This
happens whenever you try to open the dial device but the kernel
believes that the regular dz device entry is in use.  To be more
specific, the following cases will cause this:

	a) software carrier asserted (``flags'' in config file)

	b) real carrier asserted (either modem is receiving a carrer,
	   or switches in modem are set up to always assert carrier, or
	   line is wired to always assert carrier, etc.)

	c) carrier is NOT asserted, but a background job has got the
	   line hung up (dzclose has not yet been called).  This
	   particular case is the most annoying and will probably
	   require kernel hacks to fix.  [I am right now working on
	   said hacks.]

Third:  the same changes can be made to the DH and DMF drivers, but
beware!  As I recall, the dzscan() code sets the TS_CARR_ON bit in
tp->t_state if the carrier seems to be on.  The DMF driver doesn't
*have* a scan routine; instead, dmfmctl() returns the modem status
(along with some other stuff).  The code in the device open routine has
to be reworked in such cases.  (The DZ code gets away with letting
dzscan do a wakeup() and can thus ignore the return value from
dzmctl().)

(I think that's all....)
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci (301) 454-7690
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris@maryland