Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Jan 2001 14:16:21 -0800
From:      Alfred Perlstein <bright@wintelcom.net>
To:        John Baldwin <jhb@FreeBSD.ORG>
Cc:        Brian Somers <brian@Awfulhak.org>, freebsd-arch@FreeBSD.ORG, Poul-Henning Kamp <phk@critter.freebsd.dk>
Subject:   Re: Cloned open support
Message-ID:  <20010129141621.F26076@fw.wintelcom.net>
In-Reply-To: <XFMail.010129135848.jhb@FreeBSD.org>; from jhb@FreeBSD.ORG on Mon, Jan 29, 2001 at 01:58:48PM -0800
References:  <200101291228.f0TCSgP60147@storm.FreeBSD.org.uk> <XFMail.010129135848.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
* John Baldwin <jhb@FreeBSD.ORG> [010129 14:00] wrote:
> 
> On 29-Jan-01 Brian Somers wrote:
> >> >2.  Given that I'll need to change the d_open prototype (and
> >> >    thus cdevsw)
> >> 
> >> I'm not sure that is really a good idea.
> >> 
> >> If you look at the device name clone stuff I think I have made
> >> it possible to handle it there.
> >> 
> >> The idea being that you call it on "/dev/pty" and it will clone
> >> "/dev/pty38" for you and return the dev_t for that.  You then
> >> complete the open on that dev_t.  I have not quite thought
> >> it through though.
> >> 
> >> Either way, I think cloning open should be kept out of d_open
> >> one way or another.
> > 
> > The thing is that I believe the driver needs to be able to
> > decide what minor number will be opened.  This idea is taken
> > from the Solaris implementation.  For example, I have a
> > theoretical driver that does this:
> > 
> > o Makes minor 0 available in /dev as a control device
> > o Makes minor 1 available as something that'll be cloned.
> > o The descriptor returned from opening minor 1 may itself
> >   me made available via namefs (a vfs that allows you to
> >   turn a descriptor into a mountpoint to give other users
> >   access to it) and may be opened again.  Such descriptors
> >   are not cloned.
> > 
> > Although this sounds exotic, it's quite practical, and
> > impossible to do outside of the driver.
> > 
> > I think deciding on the minor outside the driver is too
> > limiting.
> 
> Why not use an ioctl on the control device to get a minor number to
> use?  The ioctl could then do a make_dev() on the appropriate device
> to create it.

Yes, but will it swap the current open fd with the new device?

Afaik the idea is to remove the race condition.

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
"I have the heart of a child; I keep it in a jar on my desk."


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010129141621.F26076>