On 9/28/06, Andrew Morton <[email protected]> wrote:
On Wed, 27 Sep 2006 20:58:24 +0000
"Miguel Ojeda" <[email protected]> wrote:
> On 9/26/06, Andrew Morton <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]