tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Adding pulse support to gpio(4), gpioctl(8)



Marc Balmer <mbalmer%NetBSD.org@localhost> wrote:
> > 
> >> +  mutex_enter(&sc->sc_mtx);
> >> +  if (sc->sc_opened)
> >> +          return EBUSY;
> > 
> > This leaks the lock.
> 
> Ooops... But it is not needed here anymore, see below...

Are underlying drivers MP-safe?

> >>    int                      sc_opened;
> >> +  kmutex_t                 sc_mtx;
> > 
> > Preferred suffix is _lock, rather than _mtx, so please use sc_lock.
> 
> I have seen both forms in the tree.

The ones which use _mtx should rather be fixed, instead of sprinkling them
even more.  Also, for condvars we use _cv suffix.

> I reworked the patch again.  This version changes the behaviour as well:
>  It is now possible that multiple thready/processes have a gpio device
> open, but only one thread can be in ioctl().  Two new functions are
> added, gpio_lock() and gpio_nolock() which can be used by child drivers
> as well.

Locking everything with a single fat lock is inefficient.  As initial step,
while learning, that is suitable.  Otherwise locking should be fine grained.

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index