From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by sourceware.org (Postfix) with ESMTPS id 6812D3858D38 for ; Sat, 15 Oct 2022 19:53:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6812D3858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=fastmail.fm Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=fastmail.fm Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id DDA545C00AF; Sat, 15 Oct 2022 15:53:34 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Sat, 15 Oct 2022 15:53:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= cc:cc:content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm3; t=1665863614; x=1665950014; bh=X8 EKNAi5CiNKdj8wr5nG+LHi9zkHN1iYjDhecs+lKFk=; b=jxN0Ga1J/sOcU5xQf6 U8RK3ecdaeE//rES5YueqACfJa3zIlPAt9F75N1D+Sk/wSK2r8JLVUKmZbcIjfWA 0sOCI9DzuniqHkV8Cg+H/EbgfecMXsNnv9F4+/7rmAvewlnmaOuvJmjLtZUBWTG2 Oz00S2nHnLWbs7szs58mthO58mJiRnztizDBs2TosNtayzA0kSpoWqVyORM8MwfI yPmcT9iv7Cz2b1bgMTH0lG795OBKFoaEEzpTf+r2t/dHrGtyHCybujl5MtE7z0vj ESp7uYWmkXxY+QHdUHxuxDF47X1gd2/Hw3zSWGgrk5ODjcmClRd5tAya5N8/SvWR Y7JA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1665863614; x=1665950014; bh=X8EKNAi5CiNKd j8wr5nG+LHi9zkHN1iYjDhecs+lKFk=; b=MGhNtvRTPKZL2GtzkRnQ0cn5qqIqW 5p217SV4RvpGFiHTDEH7cJPPikts63US/u+vQtDZhTzI0M5oS20ivXKNpGsNSBsa CSXLb742R7rqs1H3vLFrOLDzBJM2Yw2JAKMVrS9KUmiUs+NKmZm946ePS2Dz3IhE JyE3TiBQw103UXS2If8UfBSKtmt8x7A5MVMABi0tgjSKrCUnXhqhVNvMB9UmYyoM oordRoTmE6+5XFHEsWyhhVbCnFrW7XpALiHrIdq4it8UeKggQDog5gLNzu3NNAvz muPXk1fTA0gx+dTNC6GBojri0o1cCFKUhKIjLi7bDZMp91gV4FLqcSo5Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeekgedgudeggecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpehmrghl thgvshhkrghruhhpkhgvsehfrghsthhmrghilhdrfhhmnecuggftrfgrthhtvghrnhepte eglefggeegueelueffteevfefggfejvdeghefftdfhkeetgedtgeeuhffffedtnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrlhhtvghskh grrhhuphhkvgesfhgrshhtmhgrihhlrdhfmh X-ME-Proxy: Feedback-ID: ifa6c408f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 15 Oct 2022 15:53:34 -0400 (EDT) From: malteskarupke@fastmail.fm To: libc-alpha@sourceware.org Cc: Malte Skarupke Subject: [PATCH 2/2] nptl: Simplifying condvar-internal mutex Date: Sat, 15 Oct 2022 15:53:05 -0400 Message-Id: <20221015195305.1322087-2-malteskarupke@fastmail.fm> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221015195305.1322087-1-malteskarupke@fastmail.fm> References: <20221015195305.1322087-1-malteskarupke@fastmail.fm> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS,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: From: Malte Skarupke The condvar-internal mutex no longer shares its 32 bit futex with other information. There is no reason to keep the complexity, so simplify. --- nptl/pthread_cond_common.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c index b9043a218b..efc7999cfe 100644 --- a/nptl/pthread_cond_common.c +++ b/nptl/pthread_cond_common.c @@ -32,11 +32,11 @@ static void __attribute__ ((unused)) __condvar_acquire_lock (pthread_cond_t *cond, int private) { - unsigned int s = atomic_load_relaxed (&cond->__data.__lock); - while ((s & 3) == 0) + unsigned int *lock = &cond->__data.__lock; + unsigned int s = atomic_load_relaxed (lock); + while (s == 0) { - if (atomic_compare_exchange_weak_acquire (&cond->__data.__lock, - &s, s | 1)) + if (atomic_compare_exchange_weak_acquire (lock, &s, 1)) return; /* TODO Spinning and back-off. */ } @@ -45,21 +45,19 @@ __condvar_acquire_lock (pthread_cond_t *cond, int private) from not acquired. */ while (1) { - while ((s & 3) != 2) + while (s != 2) { - if (atomic_compare_exchange_weak_acquire - (&cond->__data.__lock, &s, (s & ~(unsigned int) 3) | 2)) + if (atomic_compare_exchange_weak_acquire (lock, &s, 2)) { - if ((s & 3) == 0) + if (s == 0) return; break; } /* TODO Back off. */ } - futex_wait_simple (&cond->__data.__lock, - (s & ~(unsigned int) 3) | 2, private); + futex_wait_simple (lock, 2, private); /* Reload so we see a recent value. */ - s = atomic_load_relaxed (&cond->__data.__lock); + s = atomic_load_relaxed (lock); } } @@ -67,9 +65,7 @@ __condvar_acquire_lock (pthread_cond_t *cond, int private) static void __attribute__ ((unused)) __condvar_release_lock (pthread_cond_t *cond, int private) { - if ((atomic_fetch_and_release (&cond->__data.__lock, - ~(unsigned int) 3) & 3) - == 2) + if (atomic_exchange_release (&cond->__data.__lock, 0) == 2) futex_wake (&cond->__data.__lock, 1, private); } -- 2.25.1