/dev/cuad0: Device busy

Jeremy Chadwick koitsu at FreeBSD.org
Mon Feb 4 13:10:20 UTC 2008


On Mon, Feb 04, 2008 at 02:08:32PM +0700, Eugene Grosbein wrote:
> > Personally, I never understood the concept of "dial-in" and "call-out"
> > devices on FreeBSD.  I ran BBS software for years on both Apple II
> > hardware and PC hardware; there was no distinction between such devices.
> > A serial port is a serial port.  Chances are I'm not understanding why
> > there's a distinction, but there doesn't appear to be any explanation of
> > why there's a distinction within manpages or the handbook...
> 
> The distinction exists to allow an application to wait on the "dial-in"
> port for incoming calls and another application to make outgoing call
> mean time using the same port as "call-out" while the port is idle.

This is intruiging to me, because now I'm left wondering how that
actually works behind the scenes!  :-)

What happens when program X has /dev/ttyd0 open (for incoming calls),
receives a call, and then during which program Y attempts to open
/dev/cuad0?  Does program Y indefinitely block/wait somewhere within the
kernel until program X releases the fd?

If so, then I'm left wondering why Ganbold's cu -l cuad0 attempt
returned an immediate EBUSY, rather than blocking indefinitely.

Also, the above mechanism must be fairly old, because I imagine it would
be more effective to utilise kqueue/kevent to inform said programs of
when the serial port is available for use.

-- 
| Jeremy Chadwick                                    jdc at parodius.com |
| Parodius Networking                           http://www.parodius.com/ |
| UNIX Systems Administrator                      Mountain View, CA, USA |
| Making life hard for others since 1977.                  PGP: 4BD6C0CB |



More information about the freebsd-stable mailing list