From patchwork Tue Jul 22 14:58:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dora, Sunil Kumar" X-Patchwork-Id: 116778 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 DE0593857BA7 for ; Tue, 22 Jul 2025 14:59:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DE0593857BA7 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) by sourceware.org (Postfix) with ESMTPS id C526D3858C50 for ; Tue, 22 Jul 2025 14:58:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C526D3858C50 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=windriver.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C526D3858C50 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.178.238 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1753196324; cv=pass; b=GmJKKqs292pFDMZeYKsZ7x+noSxbawCuq90STOKK3d4aX6ygfO/cGuj3u6zcoOXEkyu9rQOkhmKOdJkM9GJPCdhbgMqTn8tMmTmf9EVPgzXuTe/QvPLux5JBtLGXjAVxYGZxNzencJ4lZKLo4c0yXVkUwfM6FUuC2RWZ9XD8wYM= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1753196324; c=relaxed/simple; bh=eGDnUx/v4NZC18GTSmt2WRLZ8VtNFqPycmNGalqDtCQ=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=kE9bu0fCGxSJkJwhrU6rukuFvOS+vWfTsMqBZo0RrpvD2lhgh7N6LfLbeSTGYWOpULASLbDggXpah/gjdr1zlS2GBVA314/ZKGdum09/xTbGckcc9zgcnfzQYwRykmJWzf4qJqf7+EgpknjYiv/5o50T2N+DpU5wMTuJw/sAK2s= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C526D3858C50 Received: from pps.filterd (m0250811.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.8/8.18.1.8) with ESMTP id 56M5f5wa3558072; Tue, 22 Jul 2025 14:58:43 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2062.outbound.protection.outlook.com [40.107.244.62]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 481vqu8xc9-6 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 22 Jul 2025 14:58:43 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W+ElJahBeQ5kn34jG48VEc+JTb1vyiBmPu4UhobUNMrnIMDVQtWZZ5qy6yZwyop4JPOKeW84GpuQNjsPVuZ+49PMguEbcN9QJmLq8PfOuWkSsJTAufAIIv1ko9xVy/mSChfHW0QCy5og0G1djwq7QjX9nXk4EP5o0ZCUIrKUKH8ydERIpcE63+03FovijZi4wP9Yfh0iM94p6+9/vW4dKBlNWpTY+XFG9XklywSOgPpFnufjXY/znmfb7ZG8lcgUWMkPK8grMyvRozV7deOApLo6c8TtcHwoc/Y9ZXbqRhGctkRCABqfBBbGML8jGojftSeRLF8B0UKMZ2rwAz9zJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=G5yBnlIGDV3KSAmi61m6dOg8PHjMz/8uXJD1Q7buq3s=; b=bZl3sq+fSfPkrIoLC4DA+n0kW0msNYcn6URD6XdALtZQQotcRbUFCY3baGx6tj6eWKNKfzbakI61S17CGHieaPCPEjIbGLTzBclHn5YE6TptXUo7t6qhWvOH3JR/VgKiq8Wv50t7VRrEjW3Ipk+G6vYllPIeRZOb27vZOjIj1FRNU1kLy5qu+kOR/wRz0AW/9uQ/kwOVEgbTjqn0reeLulNchG7+EBNWXYZpyNU6wDrIBS2siyzLVJZnt4KLBSHQCg0x9mQ5H9Tpa1v9O9TPQvZni0Zf/sO7HkoSoXW38DJIaVqhUEU8FmJQZFB0qRheZYF5fhWAj74qEs2rd5l7tQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from DS0PR11MB7901.namprd11.prod.outlook.com (2603:10b6:8:f4::20) by BL3PR11MB6313.namprd11.prod.outlook.com (2603:10b6:208:3b0::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8943.29; Tue, 22 Jul 2025 14:58:40 +0000 Received: from DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d]) by DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d%3]) with mapi id 15.20.8943.029; Tue, 22 Jul 2025 14:58:40 +0000 From: sunilkumar.dora@windriver.com To: libc-alpha@sourceware.org Cc: sunilkumar.dora@windriver.com, carlos@redhat.com, fweimer@redhat.com, Sundeep.Kokkonda@windriver.com Subject: [PATCH 06/10] [2.36] nptl: Use a single loop in pthread_cond_wait instaed of a nested loop Date: Tue, 22 Jul 2025 07:58:17 -0700 Message-ID: <20250722145821.2214847-7-sunilkumar.dora@windriver.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250722145821.2214847-1-sunilkumar.dora@windriver.com> References: <20250722145821.2214847-1-sunilkumar.dora@windriver.com> X-ClientProxiedBy: SJ0PR13CA0232.namprd13.prod.outlook.com (2603:10b6:a03:2c1::27) To DS0PR11MB7901.namprd11.prod.outlook.com (2603:10b6:8:f4::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7901:EE_|BL3PR11MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ca712d6-6104-4e70-dab8-08ddc9303e3f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: LAzq3VZcF5CfKIgB9hTOdMrcDXIEAUmPLA7uMpb8w751Dzgg7i9qVG790aMnieDhs2A82gEy1tfP7Ut8aAh0SS3X6powhSp0e1/BSRChtqkfhE8LUpVSkSjk92Lkx8ieOYcs1C0zwN45VekzVrYGjXlMs7c9McGo8eOR6JcQjuY0/1ewZVgjgedYDKl5vM0rRG34xldBvySMMAqOKST6MSDd3WnQz54IWy1uL9Cy+5xkx0XdlXYBA9ySskCfKIdhHbsBDNwnQ535XSoXQ3UJNti3A9glSA2T5DLkCC5Ea5733A4cEa5Zk8O2IWXQgqqiH35I1GAiwhhUUTTyEti9nHWGPDMAAALuuev2Rdx9cEkFXQMoQacBwCegkTpgafpzUrFGx61pKngUXcWHxBRG76Run8slI4mWh5fimpOmDUc50D52/lnTrM+twc6UFl3gsNfQL97A3F6Qyg7FNPa+/zS2U6mWat0eZqoP+V0r8FqoiZYncyKz3okS4Zy4M5UoVbAoGogrmmFGPPZKcDqIDilxgI4m1IiT9RRR4k+rzFZZdB8sCMK7i+xq035V75Q6A93+C6wjCo3bvRWERXXXtVAuXIs2vkPwrvyc3J3dJtqUhNwizeCQGMkifccJpqUP+SuPkjmwhUN1oi6oVjBtC+M4+xVozDwr5lrTgJQjVrJmuGwMSV/BDonEWZVcaBlZGi9kgyDLfz0XH8FidoHvwgkbfuK35ehj/Rax1LJS51oJOKL1nPcZpjSAXzRe2BrY5bPdgI1sU2BQmySUgt4MYGhAfqHG2FBrZucm+cGNX3icJhoAYaoTl6IWQyDNdO/zS1b6GZcIdIoPFHVkHiKYFmEAW8o3gIqAhWMOliyOQBTd6fVn7No1CpUUSO0EQLlMnezcei7ZcMGFD6LOf9OpA9gJCxfVU/TjCH2BtBH7rph8/p7d3CRQbMpC4LyFIjpPajwi3gZ23rxFpXYoWxZICHDCm97IcfhhjiKFP1tlN78PPclGf/TyaieqvjfOf3/N9lXobqtbm68KOWUyv7XC8rsOFev6oE0OdTBSfhpJenFofTTKnWO7ff0nmjhKOUu/hL7pxfAJMPlPeNtwxk//VOgENeG0608lgIy5OTYbwVRSWfGAKOhqOFqTwqiN6DPUibXg/mmTeQAfzzx2PaE9dQyydyc7uK+mITqNZ9/KrkUOSYkCm+5QIuSt0IgBe/+eRHFJ1592eAm75QJdHX4SEme7jLVExPcHOHJinNREWWJec08YbtiPTBzcyzvkArP14OPE0YYdF326FVrnEIDe2aB+nD3hO5qZpF5c755QYKCoQiWyoV9RiYmq8LwgmmyhXpRW53DV/4w9H0bIxMlX4fxsix51FfIZLq/Fae9yq9lH1R1vGHgRgr6GNTBi7Jtfvu53Bdtxo8AJi+AuELB+5CM9XL71Us8Xx+dVzhy7WMYHldVv545ZkixHG9XGA2O819k2ILybAxWh7RQSB5SY3g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7901.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: k5EQsgq2QNvyN6yNbHnXh8UXu1KED/ItZNE8ZBIjCOBx40L4hOopmD+wRgUmQiZV6JY5mZ8NpORdmR9kK13Cj4pWNwJSZAsstnqhiDb0OaF0s8bS2+j336HPEz9qirrnDPWg6cljtFhQoKbkIeaPiRKZSTpqhSFvAVl1IqYSjrwT4vmaIk2/v7jq0zep5oJLISpsh43n4UoyS6msk2mAOLz7VMjTKYwcexYITLZW6ekT7ldgkzQnm4yJQRsGhqiED5IOPVOoxpe/oniHj5oi7RcyAm0d5vIjgIAnht4aS98Mm7jvjclXgYbaJvQb4vr579jUytf7dk3yx75Rn9CXsbKkEoV1sA2aBwLnIFdYhJKRtRZPyOgCt9KhGSkGY+6dLmB36IENI+R1liU2xjxlcFLtDmH7cfvY6vU9VW2OWkM2YhTTBH79kEzMxszdaLh7i+Xr+Zt/BM5uey07zz2pFfq+M2ByaRvLVYWbavW2Oj2QOEYh9KJwQ3EycvpJ+53m8yE1X0tmIEOdTmC596dMATsnWWtgOtqlVNiIPyBgKs++SDU7UxpE/TLlyRmQ5kMiNlWEcIdSOWwmvNGeZiApLlfOFve6wqiwF7hHxpBJb1HP7q4NclyHiddcy7pSjjqjl07IC19GBBrqIbo7Vg6ccy5o5oighbmjjnQVa4UFhpnBNYi6HJsmcJAalgnwMvDv4W2qOztimrG/lSyVfIFBjwhP1nlC0Y74nmf2KkGlFXV+uxX5WOlTmqi7fH0PjBg/nVaSPtMx38O9PyAhkzmx+wZbBlue5/cBHXyJOYE+PeCAH2Id+HmXwn1455/bQZRirtAmBMS3htjuKlrZO83145aw29FTbyPzpGdxKbfcdmvdR/T+ZXSa9RSkSJH5S7Zm8eC/YS7FdsbNOYr5E6TjOCxj/kuElT0n3LHvqwLGCeUyLSzxVFpXEwzVraTOYsyYg4WAvtwP4O8gJcqu3DfBtyG5y4QTiBOzpBPhlNnLezLPtiEBo98O/fh1i/fons+0di3rxQqAMmBYr6inGDyh7EsHxQP1SKD1WXXcaukHL95/6kMFXomU/IJIKNEJ18oaRnQX+E6xcrvefoDG+Vit7x8G1gdWnw3zsuX1WVjYtmRovxOqOIsT4Wu+aViw3d6dT3CkSe+TBQAblmms3Cnkj3XMhguYFr5kDMAofEaY0FtsWYXFkQmYjs/kFvg/juqOYKDbOVCXJIqCPM36k58rCEptE2NFZAVVYyWg+C+gzJTbrp7IHSMeqTKSaEO3eCCTJRmso69uQ56wMsxgyloNigOHRwld7en69dm5stQCo0dvGkvMOK50+5240sW0URxrbtmKeKCAhoDkU15KecR06f+FPemZdVg65FIHOEVw0HQ+vYyq/BhW4glH7i/C77w62oUj9mSrGUoCBoGeZkvDGg35FI1VIATHgbttuRX38cjTMqsfwFdC2NAJdRUyN+/vH1UIkvufpa9d4s4abm+5JKb6Ne9lgYVZPyqpfAlOv0cKb7nz5y+FvAbrD7Shtx3PwQm4zxCbyYDSwMRAu63QGvyqZPYknEGG9twCllSoxUonajhTKfXdmLhppD/PT3KT8C2aeSfIF26ENjBZaFL1JQ== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ca712d6-6104-4e70-dab8-08ddc9303e3f X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7901.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2025 14:58:39.8199 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 80ZT+/c297+/OAcc/jb4IuNDCS1ClRSNRrrI2IsL5N6VYzX4AN8ukK2FBX9OJf+EdGwdLi3sz7a50OYloX9/mrzTUmAVeaCtaRR8WANV+6s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR11MB6313 X-Proofpoint-GUID: rq852jfQTcIGBhg7b1JgePcGBG2OhXk7 X-Proofpoint-ORIG-GUID: rq852jfQTcIGBhg7b1JgePcGBG2OhXk7 X-Authority-Analysis: v=2.4 cv=AbqxH2XG c=1 sm=1 tr=0 ts=687fa723 cx=c_pps a=7j0Ltmo+QGRCGvpdpD29zg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=t7CeM3EgAAAA:8 a=T8vG6WoaKTypD2s_2PEA:9 a=FdTzh2GWekK77mhwV6Dw:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzIyMDEyNCBTYWx0ZWRfXyBnvWAP5K1B4 hfkIsADyZBtOk8AdLdGPJAO1Me6XpT3G3HukOZF3loAVF8Gr0/jYc7/3AmnVZdm1lf2O5MZ3NB/ 7NxaZfWmLHf0ZthhNYBc74qtTc06kMwhbzSx9Fm8kwSEaXa3ZanLu+AWJkAtkCdNcBOE/24Gase eVDbPxd5Gk0XNmjGpbuE1QP8C9nr8CqgTSfYbe5CMoc0QRYyN/B4/axsJ8ER8NkC5VRZZ4/D2OS SGvQxJ8GT7ljeFgqHjTHZKUAXnt8Ubaq4WLJ89ClcGaCos4qODUx8oQDWtOQ/HkctPCLIVqfnza zF8aB9VSGx/lkyJ3lDsoeXR5orroPZwrhlarqPfuqPjRyThwdeY5G2r5qeK5VRoEuYYRBKvE7ky obu9jv56 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-22_02,2025-07-21_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 malwarescore=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2507210000 definitions=main-2507210183 X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, 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 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org From: Malte Skarupke [BZ #25847] The loop was a little more complicated than necessary. There was only one break statement out of the inner loop, and the outer loop was nearly empty. So just remove the outer loop, moving its code to the one break statement in the inner loop. This allows us to replace all gotos with break statements. (cherry picked from commit 929a4764ac90382616b6a21f099192b2475da674) Signed-off-by: Sunil Dora --- nptl/pthread_cond_wait.c | 41 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c index 8a9219e064..c8c99bbf2c 100644 --- a/nptl/pthread_cond_wait.c +++ b/nptl/pthread_cond_wait.c @@ -382,17 +382,15 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, return err; } - /* Now wait until a signal is available in our group or it is closed. - Acquire MO so that if we observe (signals == lowseq) after group - switching in __condvar_quiesce_and_switch_g1, we synchronize with that - store and will see the prior update of __g1_start done while switching - groups too. */ - unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); - - do - { + while (1) { + /* Now wait until a signal is available in our group or it is closed. + Acquire MO so that if we observe (signals == lowseq) after group + switching in __condvar_quiesce_and_switch_g1, we synchronize with that + store and will see the prior update of __g1_start done while switching + groups too. */ + unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; @@ -401,7 +399,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, /* If the group is closed already, then this waiter originally had enough extra signals to consume, up until the time its group was closed. */ - goto done; + break; } /* If there is an available signal, don't block. @@ -410,7 +408,16 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, G2, but in either case we're allowed to consume the available signal and should not block anymore. */ if ((int)(signals - lowseq) >= 2) - break; + { + /* Try to grab a signal. See above for MO. (if we do another loop + iteration we need to see the correct value of g1_start) */ + if (atomic_compare_exchange_weak_acquire ( + cond->__data.__g_signals + g, + &signals, signals - 2)) + break; + else + continue; + } // Now block. struct _pthread_cleanup_buffer buffer; @@ -431,19 +438,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, /* If we timed out, we effectively cancel waiting. */ __condvar_cancel_waiting (cond, seq, g, private); result = err; - goto done; + break; } - - /* Reload signals. See above for MO. */ - signals = atomic_load_acquire (cond->__data.__g_signals + g); } - } - /* Try to grab a signal. See above for MO. (if we do another loop - iteration we need to see the correct value of g1_start) */ - while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g, - &signals, signals - 2)); - - done: /* Confirm that we have been woken. We do that before acquiring the mutex to allow for execution of pthread_cond_destroy while having acquired the