From: Johannes Stezenbach <js@convergence.de>
To: "Gleb O. Raiko" <raiko@niisi.msk.ru>
Cc: "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>,
"Kevin D. Kissell" <kevink@mips.com>,
linux-mips@linux-mips.org
Subject: Re: Once again: test_and_set for CPUs w/o LL/SC
Date: Thu, 17 Oct 2002 16:13:02 +0200 [thread overview]
Message-ID: <20021017141302.GA2039@convergence.de> (raw)
In-Reply-To: <3DAEBBD3.333275FC@niisi.msk.ru>
On Thu, Oct 17, 2002 at 05:32:03PM +0400, Gleb O. Raiko wrote:
> Johannes Stezenbach wrote:
> >
> > On Thu, Oct 17, 2002 at 02:02:35PM +0200, Maciej W. Rozycki wrote:
> > > On Thu, 17 Oct 2002, Gleb O. Raiko wrote:
> > >
> > > > Implement new sysmips then.
> > >
> > > I'm not sure if that's a good idea. Glibc alone uses test_and_set(),
> > > exchange_and_add(), atomic_add() and compare_and_swap(). Do you want a
> > > separate syscall for each of these functions? I think the ll/sc emulation
> > > may be the best solution after all. At least it's most flexible and not
> > > much slower if at all.
> >
> > Depends on your usage pattern. E.g. we don't run software that uses
> > atomicity.h (i.e. no C++ code), but heavily use pthread_mutex_lock() etc.
> > The few uses of atomicity.h internal to glibc don't warrant
> > any optimizations. So, if the beql-Method would not exist, I would
> > consider implementing a new sysmips for compare_and_swap().
>
> I didn't look at newer glibc sources (read: greater than 2.0.6), so the
> question. Why is the difference between compare_and_swap and
> test_and_set so huge that it eats an exception penalty? ;-)
It is not. I wrote:
... But with LL/SC glibc can use compare-and-swap
which enables a more efficient linux-threads mutex implementation.
This is what makes the difference, at least for glibc-2.2.5. Just
grep for HAS_COMPARE_AND_SWAP in your linuxthreads sources.
Current glibc from CVS (both HEAD an 2.2 branch) doesn't use sysmips
anymore, they rely on LL/SC (emulated or not).
Regards,
Johannes
next prev parent reply other threads:[~2002-10-17 14:13 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-16 16:40 Once again: test_and_set for CPUs w/o LL/SC Johannes Stezenbach
2002-10-07 14:47 ` Johannes Stezenbach
2002-10-07 16:21 ` Kevin D. Kissell
2002-10-07 16:21 ` Kevin D. Kissell
2002-10-07 18:43 ` Johannes Stezenbach
2002-10-07 18:51 ` Daniel Jacobowitz
2002-10-15 17:52 ` Johannes Stezenbach
2002-10-08 7:38 ` Kevin D. Kissell
2002-10-08 7:38 ` Kevin D. Kissell
2002-10-15 15:36 ` Maciej W. Rozycki
2002-10-15 17:21 ` Johannes Stezenbach
2002-10-16 12:20 ` Maciej W. Rozycki
2002-10-16 12:52 ` Johannes Stezenbach
2002-10-16 16:30 ` Johannes Stezenbach
2002-10-17 9:47 ` Gleb O. Raiko
2002-10-17 12:02 ` Maciej W. Rozycki
2002-10-17 13:11 ` Johannes Stezenbach
2002-10-17 13:32 ` Gleb O. Raiko
2002-10-17 14:13 ` Johannes Stezenbach [this message]
2002-10-16 18:11 ` Johannes Stezenbach
2002-10-16 18:23 ` Johannes Stezenbach
2002-10-17 11:57 ` Maciej W. Rozycki
2002-10-17 13:25 ` Johannes Stezenbach
2002-10-15 15:17 ` Maciej W. Rozycki
2002-10-15 16:50 ` Johannes Stezenbach
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=20021017141302.GA2039@convergence.de \
--to=js@convergence.de \
--cc=kevink@mips.com \
--cc=linux-mips@linux-mips.org \
--cc=macro@ds2.pg.gda.pl \
--cc=raiko@niisi.msk.ru \
/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.