From patchwork Thu Nov 11 16:24:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 47486 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 414363857C60 for ; Thu, 11 Nov 2021 16:26:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 414363857C60 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1636648019; bh=NttSBrL5KtqYoHMkZABKAPQPOUIx3DhTDj//DhXSvsg=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=NGWlvP45q0iU/iqcnYgIhk9VCIImLieo8oJxDRcHbsxdhxVTp11G1ZQ9k7RoNkMM3 Rh7NRHOokm3gaCOlq19Bs6PCRA0a+nNZZPVqz3nVsA1cAf1gsce7OpxqY4eXGER/Fb /Z0LQWiku/aNCA8o1Zhb6cmasH2+4SIKw7F3cLEU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by sourceware.org (Postfix) with ESMTPS id 7DEC8385840E for ; Thu, 11 Nov 2021 16:24:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7DEC8385840E Received: by mail-pl1-x62d.google.com with SMTP id y8so698343plg.1 for ; Thu, 11 Nov 2021 08:24:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NttSBrL5KtqYoHMkZABKAPQPOUIx3DhTDj//DhXSvsg=; b=vm+0NVnGsC/pURrp33190NFGmQirvqBQPZm31OD5eDJLt7qst0SPsluZi3YlqqAUM1 FWBSK9cBFpbCmHU7Z4PKPaXPL1dl5ZMzjlGu7TtjRaAy+4MYqaCLZRey/yFeTJQVqtPO bO5vQPyCUQYl7fHdcS5BsEYHPV3hlqC2faGODMIWmnatcUu1mmqq7d6My6hbyAZNCr4X FFxOxPVFLnDtQJIGSwvdYDL9pDFDbijvfiUuXaMFASjzXzfp4yhO4Vcr3StaSpOuCGeO CI8WLanBIzEHl9pO30lpYq9Mm8tS++tlti+6TXqYda/iKsUz4LW+m99QFPWIoxouJL99 c0Kw== X-Gm-Message-State: AOAM530xPIfAGULoXHY+YvBCKCdxszK7DZnhX4UZRP2FB2eiiVZts6Fg eSS4lHRQS0i3utxpKmDkdhc= X-Google-Smtp-Source: ABdhPJwupVKO5Evo2+TyEdOGqu5F38Q7yEZNTKuQ57kOv4rYFb22fM9SHGNEAxpIYPLDAH/iZf6wEA== X-Received: by 2002:a17:90a:4812:: with SMTP id a18mr27041266pjh.223.1636647870596; Thu, 11 Nov 2021 08:24:30 -0800 (PST) Received: from gnu-cfl-2.localdomain ([172.58.35.133]) by smtp.gmail.com with ESMTPSA id z30sm3503780pfg.30.2021.11.11.08.24.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Nov 2021 08:24:29 -0800 (PST) Received: from gnu-cfl-2.lan (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 020271A0C53; Thu, 11 Nov 2021 08:24:29 -0800 (PST) To: libc-alpha@sourceware.org Subject: [PATCH v6 2/4] Avoid extra load with CAS in __pthread_mutex_lock_full [BZ #28537] Date: Thu, 11 Nov 2021 08:24:26 -0800 Message-Id: <20211111162428.2286605-3-hjl.tools@gmail.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211111162428.2286605-1-hjl.tools@gmail.com> References: <20211111162428.2286605-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3029.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Libc-alpha" From: "H.J. Lu" Reply-To: "H.J. Lu" Cc: Florian Weimer , Andreas Schwab , "Paul A . Clarke" , Arjan van de Ven Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Replace boolean CAS with value CAS to avoid the extra load. Reviewed-by: Szabolcs Nagy --- nptl/pthread_mutex_lock.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c index 72058c719c..762059b230 100644 --- a/nptl/pthread_mutex_lock.c +++ b/nptl/pthread_mutex_lock.c @@ -304,12 +304,12 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) meantime. */ if ((oldval & FUTEX_WAITERS) == 0) { - if (atomic_compare_and_exchange_bool_acq (&mutex->__data.__lock, - oldval | FUTEX_WAITERS, - oldval) - != 0) + int val; + if ((val = atomic_compare_and_exchange_val_acq + (&mutex->__data.__lock, oldval | FUTEX_WAITERS, + oldval)) != oldval) { - oldval = mutex->__data.__lock; + oldval = val; continue; } oldval |= FUTEX_WAITERS;