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.
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:21 UTC