On Mon, Dec 15, 2008 at 04:52:32PM +0200, Jani Nikula wrote:

> > Why do they need to be changed? GPIO switches related to the board 
> > schematics,
> > which do not hopefully change dynamically.
> 
> The switches themselves don't change (nor does this patch support
> changing them), but different kinds of external devices may be connected
> to the GPIO swiches. It would be useful to be able to change the
> notification callbacks and debounce timeouts according to the device.

Could you give an example use-case? If the gpio-switch framework starts
getting extended and used more, it might be sensible to convert it to
the general GPIO API, as Trilok suggested.

> Umm, I suppose I was more worried that the write might not be an atomic
> operation, messing up the read as well. But I'll take your word for it
> if you say the write is okay. :)

Integer reads/writes are atomic, unless the system has some serious cache
coherency issues. And in that case, spinlocks won't save you either -- only
the HW engineers can. =)

> > What if omap_update_gpio_switch() is called just before the check for
> > notify != NULL from another (hypothetical =)) CPU? Then you end up with the
> > function completing, but still having the old notify callback called with
> > old notify_data.
>
> I was, of course, making sure a NULL pointer is not called and there's
> no mismatch between old/new notify/notify_data. Your scenario might
> theoretically actually occur on a single processor system as well, don't
> you think? 

Ah, yes. I was under the impression that gpio_sw_handler() was called from
IRQ context, but since it's a work handler, the function certainly can be
preempted.

> But is it actually a problem or not? And if yes, do you have any
> suggestions as to handling the case? If there's no need to lock for
> reading the debounce timeouts in gpio_sw_irq_handler() as you say above,
> do you think I could switch to a mutex and call notify callback holding
> that?

Especially in the case of frameworks, it's good to make things as correct
as possible. A mutex is safe.

Cheers,
Juha
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to