Re: [PATCH 2/5] atomic: introduce atomic_inc_not_zero

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

 



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]
  Powered by Linux