From: Andi Kleen <ak@suse.de>
To: "Dong Feng" <middle.fengdong@gmail.com>
Cc: "Paul Mackerras" <paulus@samba.org>,
"Christoph Lameter" <clameter@sgi.com>,
linux-kernel@vger.kernel.org
Subject: Re: Why Semaphore Hardware-Dependent?
Date: Sun, 27 Aug 2006 22:52:48 +0200 [thread overview]
Message-ID: <200608272252.48946.ak@suse.de> (raw)
In-Reply-To: <a2ebde260608271222x2b51693fnaa600965fcfaa6d2@mail.gmail.com>
On Sunday 27 August 2006 21:22, Dong Feng wrote:
> Why can't we have a hardware-independent semaphore definition while we
> have already had hardware-dependent spinlock, rwlock, and rcu lock? It
We probably could yes, if up/down were out of lined. The only
reason it is assembly code is that it uses still funky assembly
to get a fast uncontended fast path. Since out of lining
worked for spinlocks it will likely work for semaphores too.
> seems the semaphore definitions classified into two major categories.
> The main deference is whether there is a member variable _sleeper_.
> Does this (optional) member indicate any hardware family gene?
AFAIK the normal semaphores all work basically the same over the
architectures, just the calling conventions are different. If it was
pure out of line C that wouldn't be a problem anymore.
rwsems don't -- there are two flavours: a generic spinlock'ed one and a
complicated atomic based one that only works on some architectures.
As far as I know nobody has demonstrated a clear performance increase
from the first so it might be possible to switch all to the generic
implementation.
If you're interested in this you should probably do patches and benchmarks.
-Andi
next prev parent reply other threads:[~2006-08-27 20:54 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-27 19:22 Why Semaphore Hardware-Dependent? Dong Feng
2006-08-27 20:52 ` Andi Kleen [this message]
2006-08-27 21:05 ` Christoph Lameter
2006-08-27 21:39 ` Andi Kleen
2006-08-27 22:14 ` Christoph Lameter
2006-08-28 0:18 ` Paul Mackerras
2006-08-28 5:14 ` Chris Wedgwood
2006-08-28 5:21 ` Christoph Lameter
2006-08-28 5:56 ` Jan Engelhardt
2006-08-28 12:35 ` linux-os (Dick Johnson)
2006-08-28 7:23 ` Andi Kleen
2006-08-29 1:00 ` Paul Mackerras
2006-08-28 7:30 ` Arjan van de Ven
2006-08-29 1:18 ` Nick Piggin
2006-08-29 6:07 ` Andi Kleen
2006-09-13 17:54 ` Nick Piggin
2006-08-29 10:05 ` David Howells
2006-08-29 10:56 ` Andi Kleen
2006-08-29 17:40 ` Andrew Morton
2006-08-29 19:10 ` Benjamin LaHaise
2006-08-29 15:56 ` Christoph Lameter
2006-08-29 16:20 ` Ralf Baechle
2006-08-29 16:25 ` David Howells
2006-08-29 16:28 ` Christoph Lameter
2006-08-29 16:57 ` David Howells
2006-08-29 16:53 ` Ralf Baechle
2006-08-29 16:58 ` Geert Uytterhoeven
2006-08-29 17:22 ` Andi Kleen
2006-08-29 17:36 ` Christoph Lameter
2006-08-29 18:18 ` Andi Kleen
2006-08-29 18:30 ` David Howells
2006-08-29 18:33 ` Andi Kleen
2006-08-29 18:56 ` David Howells
2006-08-29 18:41 ` Christoph Lameter
2006-09-13 18:04 ` Nick Piggin
2006-09-13 18:07 ` Christoph Lameter
2006-09-13 18:13 ` Nick Piggin
2006-09-13 18:16 ` Christoph Lameter
2006-09-13 18:50 ` David Howells
2006-09-13 19:25 ` Nick Piggin
2006-09-14 11:41 ` David Howells
2006-09-14 15:27 ` Nick Piggin
2006-09-14 15:38 ` Nick Piggin
2006-09-15 8:59 ` David Howells
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=200608272252.48946.ak@suse.de \
--to=ak@suse.de \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=middle.fengdong@gmail.com \
--cc=paulus@samba.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