From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33307) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b2hm8-0006kb-1N for qemu-devel@nongnu.org; Tue, 17 May 2016 12:23:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b2hm4-00088t-OC for qemu-devel@nongnu.org; Tue, 17 May 2016 12:23:15 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57745) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b2hm4-00088n-I9 for qemu-devel@nongnu.org; Tue, 17 May 2016 12:23:12 -0400 References: <1463196873-17737-1-git-send-email-cota@braap.org> <1463196873-17737-6-git-send-email-cota@braap.org> <573B43B8.2000306@gmail.com> From: Paolo Bonzini Message-ID: <8681f86f-87fd-51fb-eab3-4b360775ae38@redhat.com> Date: Tue, 17 May 2016 18:23:00 +0200 MIME-Version: 1.0 In-Reply-To: <573B43B8.2000306@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v5 05/18] atomics: add atomic_test_and_set_acquire List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Sergey Fedorov , "Emilio G. Cota" , QEMU Developers , MTTCG Devel Cc: =?UTF-8?Q?Alex_Benn=c3=a9e?= , Peter Crosthwaite , Richard Henderson On 17/05/2016 18:15, Sergey Fedorov wrote: > On 14/05/16 06:34, Emilio G. Cota wrote: >> This new helper expands to __atomic_test_and_set with acquire semantics >> where available; otherwise it expands to __sync_test_and_set, which >> has acquire semantics. > > Why don't also add atomic_clear_release() for completeness? The previous patch adds atomic_set_release. Paolo > Kind regards, > Sergey > >> >> Signed-off-by: Emilio G. Cota >> --- >> include/qemu/atomic.h | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h >> index 5bc4d6c..6061a46 100644 >> --- a/include/qemu/atomic.h >> +++ b/include/qemu/atomic.h >> @@ -113,6 +113,7 @@ >> } while(0) >> #endif >> >> +#define atomic_test_and_set_acquire(ptr) __atomic_test_and_set(ptr, __ATOMIC_ACQUIRE) >> >> /* All the remaining operations are fully sequentially consistent */ >> >> @@ -327,6 +328,8 @@ >> #endif >> #endif >> >> +#define atomic_test_and_set_acquire(ptr) __sync_lock_test_and_set(ptr, true) >> + >> /* Provide shorter names for GCC atomic builtins. */ >> #define atomic_fetch_inc(ptr) __sync_fetch_and_add(ptr, 1) >> #define atomic_fetch_dec(ptr) __sync_fetch_and_add(ptr, -1) >