From: Zoltan Menyhart <Zoltan.Menyhart@bull.net>
To: linux-ia64@vger.kernel.org
Subject: Re: test_and_set_bit implementation
Date: Wed, 13 Dec 2006 10:20:00 +0000 [thread overview]
Message-ID: <457FD3D0.2010609@bull.net> (raw)
In-Reply-To: <457EC42C.90002@bull.net>
Christoph Lameter wrote:
> I think this will work. However, usually you execute bit test and test
> because the bit is not set and you want to set it. This change would
> optimize a rarely taken path. Probably not worth it.
How much is the probability that the bit is not set?
Adding a test can cost only a few cycles, say max 4.
For an atomic operation, you need to go out and snoop.
Let's have a look at e.g. the "bit_spin_lock()":
static inline void bit_spin_lock(int bitnum, unsigned long *addr)
{
preempt_disable();
while (test_and_set_bit(bitnum, addr)) {
while (test_bit(bitnum, addr)) {
preempt_enable();
cpu_relax();
preempt_disable();
}
}
__acquire(bitlock);
}
By executing the atomic operation unconditionally, you kill
the cache line all the other waiting processors looping at.
Thanks,
Zoltán Menyhárt
next prev parent reply other threads:[~2006-12-13 10:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-12 15:01 test_and_set_bit implementation Zoltan Menyhart
2006-12-12 15:47 ` Matthew Wilcox
2006-12-12 17:20 ` Christoph Lameter
2006-12-12 17:22 ` Christoph Lameter
2006-12-12 18:07 ` Matthew Wilcox
2006-12-13 10:02 ` Zoltan Menyhart
2006-12-13 10:20 ` Zoltan Menyhart [this message]
2006-12-13 12:29 ` Matthew Wilcox
2006-12-13 18:28 ` Christoph Lameter
2006-12-14 9:24 ` Zoltan Menyhart
2006-12-14 9:37 ` Zoltan Menyhart
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=457FD3D0.2010609@bull.net \
--to=zoltan.menyhart@bull.net \
--cc=linux-ia64@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.