From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47586) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b32wv-0003j7-Ue for qemu-devel@nongnu.org; Wed, 18 May 2016 10:59:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b32ws-0002bn-0d for qemu-devel@nongnu.org; Wed, 18 May 2016 10:59:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40726) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b32wr-0002bd-S7 for qemu-devel@nongnu.org; Wed, 18 May 2016 10:59:45 -0400 References: <1463196873-17737-1-git-send-email-cota@braap.org> <1463196873-17737-8-git-send-email-cota@braap.org> <573B5134.8060104@gmail.com> <66d14198-dab0-c72e-fe17-d022cff3feff@twiddle.net> <20160517200415.GD30174@flamenco> <573B7CFB.30002@gmail.com> <20160518002814.GA25803@flamenco> <573C79CA.3010703@gmail.com> <573C807D.7050505@gmail.com> From: Paolo Bonzini Message-ID: <0da2faf1-4d51-3bda-cc2b-81dfac485b80@redhat.com> Date: Wed, 18 May 2016 16:59:19 +0200 MIME-Version: 1.0 In-Reply-To: <573C807D.7050505@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v5 07/18] qemu-thread: add simple test-and-set spinlock List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Sergey Fedorov , "Emilio G. Cota" Cc: Richard Henderson , QEMU Developers , MTTCG Devel , =?UTF-8?Q?Alex_Benn=c3=a9e?= , Peter Crosthwaite On 18/05/2016 16:47, Sergey Fedorov wrote: >>> >> Why not? AFAIK the reason to avoid __sync primitives is that in most cases >>> >> they include barriers that callers might not necessarily need; __atomic's >>> >> allow for finer tuning, which is in general a good thing. However, >>> >> __sync_test_and_set has the exact semantics we need, without the limitations >>> >> documented for __atomic_test_and_set; so why not use it? >> > So it should be okay as long as the legacy build-ins are supported. > However, there's also __atomic_compare_exchange_n(). Could it be the choice? cmpxchg is not TAS. I don't see any reason not to use __sync_test_and_set, the only sensible alternative is to ignore the standard and use __atomic_test_and_set on int. Paolo