Messages in this thread | | | Date | Thu, 28 Sep 2006 21:20:22 +0200 | From | "Miguel Ojeda" <> | Subject | Re: [PATCH 2.6.18 real-V5] drivers: add lcd display support |
| |
On 9/28/06, Andrew Morton <akpm@osdl.org> wrote: > On Wed, 27 Sep 2006 20:58:24 +0000 > "Miguel Ojeda" <maxextreme@gmail.com> wrote: > > > On 9/26/06, Andrew Morton <akpm@osdl.org> wrote: > > > It's also probably-incorrect on big-endian CPUs. > > > Perhaps you should not > > > use bitops at all for this driver, use open-coded | > > > and &/~ instead? > > > > Uhm, someone told me that they shouldn't be used because the kernel > > has generic functions for that. > > You can't believe everything you read on the internet ;) > > set_bit() and friends are a) atomic wrt other CPUs on SMP and b) only to be > performed on unsigned longs. > > > I researched the kernel sources, and looking at bitops.h I found > > setbit(), so I tried to use it in the driver, althought I prefer > > standard |= and &=. > > Those are the appropriate operations to use in this driver. > >
Ok, I have fixed all the mistakes you found. However, I have a question about locking.
I have used 1 global mutex for all the fops: seek, write and ioctl. They call down_interruptable() at the very beggining and up() just before returning. I think that it's right.
However, what about the exported symbols? I have exported functions at the ks0108 driver like EXPORT_SYMBOL_GPL(ks0108_writedata); The cfag12864b drivers exports more symbols also, like: EXPORT_SYMBOL_GPL(cfag12864b_write);
Should use the mutex all this functions too?
For example: Another driver can have a fops which isn't perform any kind of locking. Such function is being executed twice at the same time. And it calls some of my exported symbols. Then, I will have a race condition in my driver.
(I couldn't find anything specific about that at LDD3, just for fops).
Thanks, Miguel Ojeda - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |