From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Roman Zippel <zippel@linux-m68k.org>
Cc: Linux Kernel Mailing List <Linux-Kernel@vger.kernel.org>,
Dipankar Sarma <dipankar@in.ibm.com>
Subject: Re: [PATCH 2/5] atomic: introduce atomic_inc_not_zero
Date: Thu, 15 Sep 2005 02:44:36 +1000 [thread overview]
Message-ID: <43285374.3020806@yahoo.com.au> (raw)
In-Reply-To: <Pine.LNX.4.61.0509141814220.3743@scrub.home>
Roman Zippel wrote:
> Hi,
>
> On Thu, 15 Sep 2005, Nick Piggin wrote:
>
>
>>Also needs work on those same architectures. Other architectures
>>might want to look at providing a more optimal implementation.
>
>
> IMO a rather pointless primitive, unless there is a cpu architecture which
> has a inc_not_zero instruction, otherwise it will always be the same as
> using cmpxchg.
>
It will always be *implemented* with cmpxchg you mean, which is a
bit different. But even then, no, you definitely don't need an
inc_not_zero instruction to make this primitive faster than the
cmpxchg version. Just look at all the !SMP architectures that just
turn off interrupts while doing the op. Look at the architectures
that use hashed spinlocks.
Or here is possible pseudo code for an architecture with ll/sc
instructions:
do {
tmp = load_locked(v);
if (!tmp)
break;
tmp++;
} while (!store_cond(v, tmp));
return tmp;
As opposed to using the cmpxchg version, which would have more
loads and conditional branches, AFAIKS.
--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com
next prev parent reply other threads:[~2005-09-14 17:01 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-14 14:48 [PATCH 1/5] atomic: introduce atomic_cmpxchg Nick Piggin
2005-09-14 14:49 ` [PATCH 2/5] atomic: introduce atomic_inc_not_zero Nick Piggin
2005-09-14 14:51 ` [PATCH 3/5] rcu file: use atomic primitives Nick Piggin
2005-09-14 14:55 ` [PATCH 4/5] atomic: dec_and_lock use cmpxchg Nick Piggin
2005-09-14 15:01 ` [PATCH 5/5] remove HAVE_ARCH_CMPXCHG Nick Piggin
2005-09-14 16:31 ` Roman Zippel
2005-09-14 16:49 ` Nick Piggin
2005-09-14 17:59 ` David S. Miller
2005-09-14 22:03 ` Russell King
2005-09-14 22:26 ` David S. Miller
2005-09-15 7:10 ` Russell King
2005-09-15 13:08 ` Alan Cox
2005-09-14 15:20 ` [PATCH 4/5] atomic: dec_and_lock use cmpxchg Nick Piggin
2005-09-14 16:24 ` David S. Miller
2005-09-14 16:52 ` Nick Piggin
2005-09-17 0:05 ` David S. Miller
2005-09-14 16:16 ` [PATCH 2/5] atomic: introduce atomic_inc_not_zero Roman Zippel
2005-09-14 16:44 ` Nick Piggin [this message]
2005-09-14 17:04 ` Nick Piggin
2005-09-14 17:18 ` Roman Zippel
2005-09-14 22:00 ` Russell King
2005-09-14 22:10 ` Roman Zippel
2005-09-14 22:21 ` Russell King
2005-09-15 1:51 ` Nick Piggin
2005-09-17 1:15 ` Roman Zippel
2005-09-17 6:36 ` Andrew Morton
2005-09-17 10:01 ` Roman Zippel
2005-09-17 7:19 ` David S. Miller
2005-09-17 7:34 ` Dipankar Sarma
2005-09-18 8:08 ` Nick Piggin
2005-09-17 0:59 ` Roman Zippel
2005-09-17 7:18 ` David S. Miller
2005-09-17 7:27 ` Russell King
2005-09-18 6:03 ` David S. Miller
2005-09-14 15:17 ` [PATCH 1/5] atomic: introduce atomic_cmpxchg Russell King
2005-09-14 15:22 ` Nick Piggin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43285374.3020806@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=Linux-Kernel@vger.kernel.org \
--cc=dipankar@in.ibm.com \
--cc=zippel@linux-m68k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox