Re: [patch] turning devctl into a "multiple openable" device

From: Kostik Belousov <kostikbel_at_gmail.com>
Date: Wed, 30 Nov 2011 17:46:36 +0200
On Wed, Nov 30, 2011 at 10:05:11AM -0500, John Baldwin wrote:
> On Wednesday, November 30, 2011 7:43:20 am Baptiste Daroussin wrote:
> > Hi all,
> > 
> > With the help of cognet, I wrote a patch to turn devctl into a multiple openable
> > device, that mean that it will allow to open /dev/devctl in multiple programs,
> > for example hald and everythings that want to receive notification from the
> > device won't need to depend on haveing devd running.
> > 
> > here is the patch: 
> > http://people.freebsd.org/~bapt/devctl_multi_open.diff
> 
> Shouldn't devctl_queue_data_f() use the requested malloc() flags instead of
> hardcoding M_NOWAIT?
This is an obvious fallback of holding mutex around the call to
per_devctl_queue_data_f(), which caused the author a trouble to use
M_WAITOK.

Having n readers causes the patch to queue each message n times, that looks
like a waste.

I wonder why the waiting_threads stuff is needed at all. The cv could
be woken up unconditionally everytime. What is the reason for the cv_wait
call in cdevpriv data destructor ? You cannot have a thread doing e.g.
read on the file descriptor while destructor is run.

> 
> Also, I know that it was an intentional design decisison by Warner to have
> the multiplexing of devctl data done in userland via devd rather than in the
> kernel.  (I think he envisioned devd providing a UNIX domain socket or some
> such for other daemons to use to listen to events.)  Have you asked him about
> this change?
And I fully agree that doing multiplexing in user mode is the right approach.
Not least because you could apply some advanced access control and provide
filtering for the consumers.

Received on Wed Nov 30 2011 - 14:46:43 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:21 UTC