From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oa1-x2f.google.com (mail-oa1-x2f.google.com [IPv6:2001:4860:4864:20::2f]) by sourceware.org (Postfix) with ESMTPS id 5ED333857C79 for ; Wed, 21 Sep 2022 17:09:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5ED333857C79 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-127dca21a7dso9956681fac.12 for ; Wed, 21 Sep 2022 10:09:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date; bh=kNM4u+4MZaMBEklIz9nNNUgtMqubMhyJ0oodtu1+OGM=; b=OVRQ4rLB6N9TjYMe7ezb9xDEsgo0IeFKCXRh4yK9a8iKP4t7c8f4Zp9xiwYeWW3gu/ HqvNGcLwylR4WddY7hQugvYZj/MTyw89WGSR4o6ITOX2EViNM3ya1SstJ5pdF8xZ+8Uz coOan0oj8GuI9NCzBImFUEZU4d9SQseSjoqhtzc0YcDYpD/okZPhTKSXAZ80Gv+NDqR0 lw/U25GlvThr0mTI0zRkgObrd+t4+wtcne7rOW5YEQJyQ6H7yHCfHbhX8fBjh3x+TBWM JbHXy3uDPCvvuJzJR0TmVbQvnS0sJuKB5KzB3pT3iia9uSX447SON7DI7ertbo0iJMGK eetQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date; bh=kNM4u+4MZaMBEklIz9nNNUgtMqubMhyJ0oodtu1+OGM=; b=7sgp/9wRYN/YoePddiQm9pO6ZukogAdI02Gut8qWkRxWeDP7CTtpU6LfK4xOz1qeLt BJbiZgfVY8VGFuagU+sl/SEASlLSO/e+iPxE9G7I1asy4ysXPuQ9Z1vBUlBfq2Kh7Git 9aYxV0H56GMQGvab4aZGF0u96IgFQueJcC0bjti147L2t1Cd4NSxhOnXgOY2FUuUCGAF ZSuunIQQPp4jDN8KBQULmQMiNe17aBKnZQp89B1dWk9Km348+L4z3qhqt9eeGR+GkmFS dsJVsSFn6r32e+TeSOcpbdoUFLyGBa7z8+qIxZOuxksc62iDwX9EmJXz5BxjVvWzYiTf nCQA== X-Gm-Message-State: ACrzQf1Oj6eBmz9u/4M6pjVw91f+KY+q9lFZPhfAjsvUBWbhn0ww5G5A 3C+ked+xne5LnmxEtMcCHdcZbg== X-Google-Smtp-Source: AMsMyM421HwshlWDByv7hBe+gIcMcYQ3t9oLrLw+1sNR5y0ExaiTJPasWEwu94nUW85PZtoduUqJ/g== X-Received: by 2002:a05:6870:ac0f:b0:127:c036:d61c with SMTP id kw15-20020a056870ac0f00b00127c036d61cmr5525091oab.278.1663780140558; Wed, 21 Sep 2022 10:09:00 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c1:c266:cc93:9f8:1eba:d2e8? ([2804:1b3:a7c1:c266:cc93:9f8:1eba:d2e8]) by smtp.gmail.com with ESMTPSA id e2-20020a056820060200b004320b0cc5acsm1238943oow.48.2022.09.21.10.08.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 21 Sep 2022 10:09:00 -0700 (PDT) Message-ID: <32dd1e65-c065-99fa-4c49-d0612f1ef9e3@linaro.org> Date: Wed, 21 Sep 2022 14:08:57 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH] Use C11 atomics instead of atomic_and/or Content-Language: en-US To: Wilco Dijkstra , 'GNU C Library' References: From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-14.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_LOTSOFHASH,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 05/09/22 13:48, Wilco Dijkstra wrote: > Remove the 4 uses of atomic_and and atomic_or with atomic_fetch_and_acquire and > atomic_fetch_or_acquire > > Passes regress on AArch64. LGTM, the current atomic_or and atomic_and have acquire semantic already. What I am not not sure if if we need to use release MO on start_thread, since the idea is to synchronize with the locking on pthread_mutex_lock. Reviewed-by: Adhemerval Zanella > > --- > > diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c > index d206ed7bf4c2305c0d65bc2a47baefe02969e3d2..d802c67b059af390e122e82f09e886d0c8950fd7 100644 > --- a/nptl/pthread_create.c > +++ b/nptl/pthread_create.c > @@ -539,7 +539,7 @@ start_thread (void *arg) > # endif > this->__list.__next = NULL; > > - atomic_or (&this->__lock, FUTEX_OWNER_DIED); > + atomic_fetch_or_acquire (&this->__lock, FUTEX_OWNER_DIED); > futex_wake ((unsigned int *) &this->__lock, 1, > /* XYZ */ FUTEX_SHARED); > } > diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c > index 6e767a87247063c0ac84242ef13e72af79021104..439b1e6391c50d5922dec6c48e7f2a2a632a89d9 100644 > --- a/nptl/pthread_mutex_lock.c > +++ b/nptl/pthread_mutex_lock.c > @@ -462,7 +462,7 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) > > if (__glibc_unlikely (oldval & FUTEX_OWNER_DIED)) > { > - atomic_and (&mutex->__data.__lock, ~FUTEX_OWNER_DIED); > + atomic_fetch_and_acquire (&mutex->__data.__lock, ~FUTEX_OWNER_DIED); > > /* We got the mutex. */ > mutex->__data.__count = 1; > diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c > index 0fcaabfb482546fd6f1f9cc4b13edc82f6e6796c..af70a60528cb101c8e52d4165950ee0d11f6f895 100644 > --- a/nptl/pthread_mutex_timedlock.c > +++ b/nptl/pthread_mutex_timedlock.c > @@ -392,7 +392,7 @@ __pthread_mutex_clocklock_common (pthread_mutex_t *mutex, > > if (__glibc_unlikely (oldval & FUTEX_OWNER_DIED)) > { > - atomic_and (&mutex->__data.__lock, ~FUTEX_OWNER_DIED); > + atomic_fetch_and_acquire (&mutex->__data.__lock, ~FUTEX_OWNER_DIED); > > /* We got the mutex. */ > mutex->__data.__count = 1; > diff --git a/nptl/pthread_mutex_trylock.c b/nptl/pthread_mutex_trylock.c > index 8a7de8e598803f606899fe1c9b8775bc24dd14ec..50524942a76c753ce4add20c35dfe7f659a1908b 100644 > --- a/nptl/pthread_mutex_trylock.c > +++ b/nptl/pthread_mutex_trylock.c > @@ -308,7 +308,7 @@ ___pthread_mutex_trylock (pthread_mutex_t *mutex) > > if (__glibc_unlikely (oldval & FUTEX_OWNER_DIED)) > { > - atomic_and (&mutex->__data.__lock, ~FUTEX_OWNER_DIED); > + atomic_fetch_and_acquire (&mutex->__data.__lock, ~FUTEX_OWNER_DIED); > > /* We got the mutex. */ > mutex->__data.__count = 1; >