On Thu, Sep 15, 2005 at 12:10:56AM +0200, Roman Zippel wrote:
> Hi,
>
> On Wed, 14 Sep 2005, Russell King wrote:
>
> > > do {
> > > old = atomic_load_locked(v);
> > > if (!old)
> > > break;
> > > new = old + 1;
> > > } while (!atomic_store_lock(v, old, new));
> >
> > How do you propose architectures which don't have locked loads implement
> > this, where the only atomic instruction is an unconditional atomic swap
> > between memory and CPU register?
>
> #define atomic_store_lock atomic_cmpxchg
No. "unconditional atomic swap" does not mean cmpxchg - it means that
atomic_cmpxchg itself would have to be open coded, which is inefficient.
What you're asking architectures to do is:
retry:
load
operation
save interrupts
load
compare
store if equal
restore interrupts
goto retry if not equal
whereas they could have done the far simpler version of:
save interrupts
load
operation
store
restore interrupts
which they do today.
The whole point about architecture specific includes is not to provide
a frenzied feeding ground for folk who like to "clean code up" but to
allow architectures to do things in the most efficient way for them
without polluting the kernel too much.
It seems that aspect is being lost sight of here.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
-
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]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|