Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jan 2012 08:36:33 +0800
From:      David Xu <listlog2011@gmail.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, davidxu@freebsd.org
Subject:   Re: svn commit: r230201 - head/lib/libc/gen
Message-ID:  <4F18B711.9000406@gmail.com>
In-Reply-To: <201201191023.28426.jhb@freebsd.org>
References:  <201201160615.q0G6FE9r019542@svn.freebsd.org> <4F178CDC.3030807@gmail.com> <4F17B0DE.3060008@gmail.com> <201201191023.28426.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2012/1/19 23:23, John Baldwin wrote:
> On Thursday, January 19, 2012 12:57:50 am David Xu wrote:
>> rdtsc() may not work on SMP, so I have updated it to use clock_gettime
>> to get total time.
>> http://people.freebsd.org/~davidxu/bench/semaphore2/
>> <http://people.freebsd.org/%7Edavidxu/bench/semaphore2/>;
>>
>> Still, lfence is a lot faster than atomic lock.
> http://www.freebsd.org/~jhb/patches/amd64_fence.patch
>
> This the patch I've had for quite a while.  Can you retest with this?  You'll
> probably have to install the updated header in /usr/include as well.
>
The lines in atomic_load_acq() seem not what I want:

+	v = *p;						\
+	__asm __volatile("lfence" ::: "memory");	\

I think they should be swapped ?

+	__asm __volatile("lfence" ::: "memory");	\
+	v = *p;						\

What I need in the semaphore code is read can not pass write in such a special case.




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