From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2041.outbound.protection.outlook.com [40.107.22.41]) by sourceware.org (Postfix) with ESMTPS id A62C53858400 for ; Thu, 22 Sep 2022 13:27:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A62C53858400 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=aeKNDP20Z0EW1Avm4twRyAnNapEP3UEELFw5dh+Fc0gdS2y46qCThQbnffoHq0f/XpFXmugmjLBZ546NhgBkasM8x+OJwtlaPCKMTRQRQXob2TNr0mp08nX9XEvFbFmy1GKednj/NN7UQDPWzP0jUg4O3xm1ES9YJXe6q6EH14DBKg0xQWUXk2fYjTIOo9qhj1qypq2t7dMbppxTD/WDgkhrfmoO7dFAAgIanTviR9fX1J6AGSF43yBJZyBfBDg4rbzEphtMLi26/DpFvT1rgMzu5YN4YkxK8a8MmQ/4PJYf51xdbQvxLlUU5+Jyfuu5+1En2w1wgaLhUruviFFxnA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=EcmEeTzUpwlSlaidkGFb8sr6wzf5AkAF1VdSHHZWimU=; b=gb39tfIYmZ4x6ofNEilp0negMHl9pyP9DDtDmgJHjZ7kQUrg5oVSexg1ibY9HMw1MMvopVjS8a4VZqY3YsD1jZr+Zkg5IE6o6Zu8UeRnHuDlJaijJ09ERpuwb7FG5cPOvLtzIy4JdIrimtgqmUUkM/AhzYINFt7ZxuZbUt3x8rnyTtSuLHHtQctPVg1zO562xcklIWH+M9+hugO4ZrgLXcTxyMKCdou9KrzUJnT5iV5Pp7I6uSHIoXdBqdQXqhYIfAb/P/Ns3MopeR2BON2EqPBTsQkKcaaN3S0TC0AZqLebkkpQcNxEdTJRDmTSwKBVU3RTo+47EF4bmZzsGmvn5A== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EcmEeTzUpwlSlaidkGFb8sr6wzf5AkAF1VdSHHZWimU=; b=uSw+gaxeCnAiKVzLAQ0Q2IfyLjqkjxHg5htG0By0pJ6KUSQ8yW3I9RcKbfBOZsmez1slszjrhXVgbzPUPaJt3YhJgRcu7X2QKCOxFwgloM901go3ZExN56RdM/uE3ny6jIk5SLaPmg+/dScZXzgU45RYPo3USKz9lK+PnWVPNdo= Received: from AS4P189CA0045.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5dd::17) by PA4PR08MB6128.eurprd08.prod.outlook.com (2603:10a6:102:f2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.18; Thu, 22 Sep 2022 13:27:48 +0000 Received: from AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:5dd:cafe::46) by AS4P189CA0045.outlook.office365.com (2603:10a6:20b:5dd::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.21 via Frontend Transport; Thu, 22 Sep 2022 13:27:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT039.mail.protection.outlook.com (100.127.140.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.14 via Frontend Transport; Thu, 22 Sep 2022 13:27:48 +0000 Received: ("Tessian outbound ee41cdb23966:v124"); Thu, 22 Sep 2022 13:27:48 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: b94cf4de60181133 X-CR-MTA-TID: 64aa7808 Received: from 459007e77243.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B372AD7C-200C-4FFC-89C2-4E884831EE87.1; Thu, 22 Sep 2022 13:27:42 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 459007e77243.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 22 Sep 2022 13:27:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XoPOdGcSjBJNwmODWZVUnzVBOUNcwAYgl0G6uEcHyru4WDBZP4hw8pb8Z8RILOyhiRaBh28xi55uKytzOUIm7RMeDGWhEt+6tQM3MwCDn9yndwcRUH7EOU2fucTLLKXNPMs4VAwMOOyiL5hjAYl0ykv2aXrDHhj8WGDsAqNMYvEu66mjyH8iLeUGMMhNgW4ef/PaWxj69ZY91aN+LaYfZLPegujBwIzPj53X7FOmuPc0MxVMwesLqXUx8PlbYZxNC/4naRmbIM1ZsYZbYdSBRKcTABHnfPkdKnuDs6fnFZpYiN5NxWdKOZbKX+oQ4Fs9M0tRQdgAyGPS6/62AExtmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=EcmEeTzUpwlSlaidkGFb8sr6wzf5AkAF1VdSHHZWimU=; b=m73vNq6dUcN7VSljvPEVZTeRy7nCZBmWltFtthmNAm1KD7yeuafQHidh9fT3HW/LULxrfkpPhEvKSoJx4c77Zforrk7aEyxL4gmlif2jT3flJjIbEbSpqOo1/juQzy7vVdwWchvO7/6HsSMyy3Kv7wxebtrTEYRJTU9pvmTzahuEmdb1FGEBvA5Bt+g2n/YO+rx9rcwSTjZeHCHZx13XZ7pp4QxBK3PEscuXR/aypbpQvhMjeYGOwKHljsIaAXIC7jEtrZeQEfkzjPJxZm1Xm0NRNQS1xAT2TlnKl4NFaLuw0ovFt+doLTfjhFhVNXZ5xUQiUFYEOMf9xxxLUvJoTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EcmEeTzUpwlSlaidkGFb8sr6wzf5AkAF1VdSHHZWimU=; b=uSw+gaxeCnAiKVzLAQ0Q2IfyLjqkjxHg5htG0By0pJ6KUSQ8yW3I9RcKbfBOZsmez1slszjrhXVgbzPUPaJt3YhJgRcu7X2QKCOxFwgloM901go3ZExN56RdM/uE3ny6jIk5SLaPmg+/dScZXzgU45RYPo3USKz9lK+PnWVPNdo= Received: from AS4PR08MB7901.eurprd08.prod.outlook.com (2603:10a6:20b:51c::16) by AM8PR08MB6354.eurprd08.prod.outlook.com (2603:10a6:20b:367::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.16; Thu, 22 Sep 2022 13:27:39 +0000 Received: from AS4PR08MB7901.eurprd08.prod.outlook.com ([fe80::4d64:ef01:4d4c:6ba1]) by AS4PR08MB7901.eurprd08.prod.outlook.com ([fe80::4d64:ef01:4d4c:6ba1%7]) with mapi id 15.20.5654.016; Thu, 22 Sep 2022 13:27:39 +0000 From: Wilco Dijkstra To: Adhemerval Zanella Netto , 'GNU C Library' Subject: Re: [PATCH] Use C11 atomics instead of atomic_increment(_val) Thread-Topic: [PATCH] Use C11 atomics instead of atomic_increment(_val) Thread-Index: AQHYw4r/fYCGfZibmEmsjrPsn5ptga3qNQqAgAFJnss= Date: Thu, 22 Sep 2022 13:27:39 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AS4PR08MB7901:EE_|AM8PR08MB6354:EE_|AM7EUR03FT039:EE_|PA4PR08MB6128:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e271ee8-3593-44f6-c4ff-08da9c9e3df6 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: Kk9hLt0W++JkgnteXruOxoFzw0HiSB/SOFZ2+JCuvBJ8Mm6zHrUEGbc7DWe3SMb6SMznzkYhFtf2GvvIgtl5j3Gu/Yi/NHVJBrZawchfGGBztX4j/S06L+IBjtSxckjXoOWxp+y9YdpbWSAf6OF/a50ZN6uXeSzsOuX2stbqeNpgAkk8eQ0T92/fN2CFB712+M4OfIGVoWvAfUJeM+Z7li0C3mg01NO/ie4NJDSwlXOVKt8ZWzegauO3PxTnhH2sg/y8H9iT4PgviZWpIzaNQuxIv5sPtesj6sEUpedN1ie4E6Sgc/LEztd2BZqxBftaGPLAPEfah/4BWGAcRlUVf4+PBoHYsgGDUDPaj+TvX0JHE5/CPXKHc0ecCO5NEc0BOhn3iWVcT+MJ+J+eCg5/nOu764oYAeNaN+lX+mbOjeJp57WzQirGqbKIHch2wDhXMb2ZAThBY3uyRiqd85lf9Bt5frFuUcA5zjS81fsxrHY50UTEgZ5xhIl2gzXt0pWoD5cEAc6EiE8Vj+657ONji/Kp62aiWO9tndhyn8BRyBAYiLA6UsnGq+5rVoGZYli73LXL9Tza0tJgDJAVGt/8Vk9OHMPbzHR0N6GvkEsRUsz6BKqcoJ0jrUvEQzkZLrw9JwR2iYu3fNpnIgvcNAjnw8UHltkHM5ykl5qxKd7qMFG/LHtD1oUPmRk56t+fcm+smyyidewnrqk9d+O/6FmcGtJMYXu0H2XdAOiDW3gGNzgP8Ll1tcgVY+ogZ6uslirf79y5A273vbUErn16w6Nn8g== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR08MB7901.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(136003)(346002)(376002)(366004)(451199015)(71200400001)(55016003)(66556008)(8676002)(66476007)(33656002)(86362001)(478600001)(316002)(5660300002)(122000001)(38100700002)(76116006)(110136005)(6506007)(7696005)(91956017)(41300700001)(83380400001)(186003)(66946007)(26005)(52536014)(9686003)(38070700005)(66446008)(2906002)(64756008)(8936002);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6354 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3357b232-a424-4f8a-067d-08da9c9e3868 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 776cLMEu4QkQ9OUeWRGC1TdSzC+zUn+kBRXETNwg99/hXw6m78LPcYawHAO+KOibBGyg+f5beXoTdTDYi7LWe9J6py5qBAmFFsJfJKtw5Pk1Lfgd7B590OYeI7kZwHC7+iKAIiklLgVhloE9z/E23T3goXL6LbgNkWrLjBjGPdD1efpWngSRseLZ7Vr2fDNGE7FiLr0TON1H6+AGk4TkEguI6X3zdshHbCY00l9BCGq5+IFjXl34G4CaTlupXaGYv8q4zDmhrTMdI87BiE8FOOMpv2v00AskLec06EW3l/2bgZEWxkyMEmmsGc4esFBAPUmLSXs6ZOL22HWa3+K7kOIpS8XQjW/nAYPV99b1AjOp8B18Jxuadfk4B7UlTdyVXZZc/h+0k94nCF7ufCmrIyQtNSPfiLXxLB859TSd/8WC+Tb5kylPELr80+ZRFtmFFLsfMbdFjbWZCwRDA7D8PiCuzTb1xMxQ/OZ5ajgwFC4M4kmE9HTSQ7eA945n58uvYqFyY6Nor++1LqzSAGQkbU8g51GHhHZc0ZFIDVzT9GLoUr/F8uflacuBOhRFaJm/1pi1FmMhjHjGLlv/ygI2DPM+xFWsNYUrTxlbiz5S1JUmJ4uKvpK8NynpgQL+bexWgT34DmPSpqA5AEUMNVTudVuT95v/438VhhjKmMNKfF/IYP+yUViZgJlqQaIcXE46cYqwb1frh1W7mPOpwygzs+Ss3rm8d6G+gfXp4AZcr/AzAO/Oxy75oE+mq2jg9K4IoL0nqouAfKM9804YhJF1pA== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(396003)(376002)(136003)(451199015)(40470700004)(46966006)(36840700001)(110136005)(26005)(40480700001)(82310400005)(47076005)(52536014)(356005)(336012)(316002)(2906002)(186003)(7696005)(81166007)(40460700003)(478600001)(8676002)(9686003)(70586007)(70206006)(41300700001)(6506007)(55016003)(86362001)(33656002)(36860700001)(5660300002)(83380400001)(8936002)(82740400003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2022 13:27:48.4069 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7e271ee8-3593-44f6-c4ff-08da9c9e3df6 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6128 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY 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: Hi Adhemerval,=0A= =0A= In general you only need acquire/release for locks that synchronize access = to=0A= shared data which does not use atomic accesses. If there is no such shared= =0A= data, there is no need for acquire/release. Similarly only using acquire an= d never=0A= release (as the old atomics did) makes no sense - you need a release atomic= =0A= to synchronize with.=0A= =0A= > I am not sure if relaxed MO is correct here, shouldn't it synchronize wit= h the=0A= > __nptl_setxid_sighandler ?=0A= =0A= The counter cntr in nptl/nptl_setxid.c is just a simple atomic counter to k= eep=0A= track of the number of outstanding signals that were sent to threads. There= is=0A= no data it is trying to synchronize with, so release/acquire semantics do n= ot=0A= make sense here.=0A= =0A= > Not sure if this is correct for hurd, __pthread_total is used on __pthrea= d_exit=0A= > to call exit although for i686 atomic_decrement_and_test will be used and= it=0A= > has strong MO.=0A= =0A= The same is true for pthread_total counter, it is used to call exit when th= e last=0A= thread stops. Note while the increment is done optimistically (thread creat= ion=0A= can fail, and then it is decremented again), the decrement resulting in a c= all to=0A= exit can only happen once even if multiple threads are finishing concurrent= ly=0A= (and that happen once is what is required). =0A= =0A= Cheers,=0A= Wilco=0A= =0A= =0A= =0A= > diff --git a/htl/pt-create.c b/htl/pt-create.c=0A= > index ce52ed9f52210a4e4c7a049ebee817ec9ccfeeb1..14f02cd2b8a19e8581a170dfb= a2b948ef8304203 100644=0A= > --- a/htl/pt-create.c=0A= > +++ b/htl/pt-create.c=0A= > @@ -228,7 +228,7 @@ __pthread_create_internal (struct __pthread **thread,= =0A= >=A0=A0=A0=A0=A0=A0 the number of threads from within the new thread isn't = an option=0A= >=A0=A0=A0=A0=A0=A0 since this thread might return and call `pthread_exit' = before the=0A= >=A0=A0=A0=A0=A0=A0 new thread runs.=A0 */=0A= > -=A0 atomic_increment (&__pthread_total);=0A= > +=A0 atomic_fetch_add_relaxed (&__pthread_total, 1);=0A= >=A0 =0A= >=A0=A0=A0 /* Store a pointer to this thread in the thread ID lookup table.= =A0 We=0A= >=A0=A0=A0=A0=A0=A0 could use __thread_setid, however, we only lock for rea= ding as no=0A= =0A= Not sure if this is correct for hurd, __pthread_total is used on __pthread_= exit=0A= to call exit although for i686 atomic_decrement_and_test will be used and i= t=0A= has strong MO.=0A= =0A= =0A= > diff --git a/nptl/nptl_setxid.c b/nptl/nptl_setxid.c=0A= > index aa863c7ea8122ea01d1aa4cffe101bbb7c11270c..3b7e2d434abe8a15145349d1a= 08a4e706061c74d 100644=0A= > --- a/nptl/nptl_setxid.c=0A= > +++ b/nptl/nptl_setxid.c=0A= > @@ -163,7 +163,7 @@ setxid_signal_thread (struct xid_command *cmdp, struc= t pthread *t)=0A= >=A0=A0=A0 /* If this failed, it must have had not started yet or else exit= ed.=A0 */=0A= >=A0=A0=A0 if (!INTERNAL_SYSCALL_ERROR_P (val))=0A= >=A0=A0=A0=A0=A0 {=0A= > -=A0=A0=A0=A0=A0 atomic_increment (&cmdp->cntr);=0A= > +=A0=A0=A0=A0=A0 atomic_fetch_add_relaxed (&cmdp->cntr, 1);=0A= >=A0=A0=A0=A0=A0=A0=A0 return 1;=0A= >=A0=A0=A0=A0=A0 }=0A= >=A0=A0=A0 else=0A= =0A= I am not sure if relaxed MO is correct here, shouldn't it synchronize with = the=0A= __nptl_setxid_sighandler ?=0A=