Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Aug 2007 14:29:52 +0000
From:      Kris Kennaway <kris@FreeBSD.org>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        Attilio Rao <attilio@freebsd.org>, Alfred Perlstein <alfred@freebsd.org>, freebsd-arch@freebsd.org
Subject:   Re: Lockless uidinfo.
Message-ID:  <20070824142952.GA24469@hub.freebsd.org>
In-Reply-To: <20070824140927.GC14536@garage.freebsd.pl>
References:  <20070818120056.GA6498@garage.freebsd.pl> <20070818155041.GY90381@elvis.mu.org> <20070818161449.GE6498@garage.freebsd.pl> <200708211403.29293.jhb@freebsd.org> <20070821191902.GA4187@garage.freebsd.pl> <20070821202136.GB4187@garage.freebsd.pl> <3bbf2fe10708221202h44b3258cyf5ca5e9b867ac0e7@mail.gmail.com> <20070824140927.GC14536@garage.freebsd.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Aug 24, 2007 at 04:09:27PM +0200, Pawel Jakub Dawidek wrote:
> On Wed, Aug 22, 2007 at 09:02:53PM +0200, Attilio Rao wrote:
> > 2007/8/21, Pawel Jakub Dawidek <pjd@freebsd.org>:
> > >
> > > New patch is here:
> > >
> > >         http://people.freebsd.org/~pjd/patches/uidinfo_waitfree.patch
> > 
> > ---  sys/ia64/include/atomic.h.orig
> > +++  sys/ia64/include/atomic.h
> > @@ -370,4 +370,15 @@
> > 
> >  #define	atomic_fetchadd_int		atomic_fetchadd_32
> > 
> > +static __inline u_long
> > +atomic_fetchadd_long(volatile u_long *p, u_long v)
> > +{
> > +	u_long value;
> > +
> > +	do {
> > +		value = *p;
> > +	} while (!atomic_cmpset_64(p, value, value + v));
> > +	return (value);
> > +}
> > +
> > 
> > In cycles like those, as you get spinning, I would arrange things in
> > order to do a cpu_spinwait(). Like this:
> > 
> > for (;;) {
> >         value = *p;
> >         if (atomic_cmpset_64(p, value, value + v))
> >                 break;
> >         cpu_spinwait();
> > }
> 
> In this case there is no difference as this is MI ia64 code and
> cpu_spinwait() is defined as /* nothing */ there. As a general rule,
> this might be a good idea.

Better to still do it in case that changes.

Kris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070824142952.GA24469>