From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 647BFA034C; Sun, 18 Dec 2022 11:07:36 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1763B40A7A; Sun, 18 Dec 2022 11:07:36 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id AC9C140146 for ; Tue, 13 Dec 2022 07:11:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670911870; x=1702447870; h=from:to:cc:subject:date:message-id:mime-version; bh=vwVaMK7e2UexrQ7ycZxwhbz8ZyH6AIcy1sxnMGdds9A=; b=IMTmoIT6APpjACxGik3mVws7BfgRz7FUHr/2jwB7nI6BOwqAZRhNWyqk dX22GwuKmc1/hvXefylJD5KiqsR9cwM/dtHM0Nsgefv8rwPPCFWDVHI04 RX4PUOhYzeHev1QA9SUiLogz6D0oPfiXn4aVSjQo+o7Y7hdlc3JPbSNl1 6cTIYSy6RFdlboShy9lAlD00UTmxC/G8epafyu4DRx9HFsMZahSwNznf+ NYgjpABihkEftJfAl0zCf/tNh/azDS2wgxINUp2DokL0Vm8V+P6cDmEdO TYKrNCXgU4HBe9NUHWUYkTkCc/jdk89LSoimSkwtDl5czQctgWOPo2czB g==; X-IronPort-AV: E=McAfee;i="6500,9779,10559"; a="319196370" X-IronPort-AV: E=Sophos;i="5.96,240,1665471600"; d="png'150?scan'150,208,217,150";a="319196370" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Dec 2022 22:11:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10559"; a="648448822" X-IronPort-AV: E=Sophos;i="5.96,240,1665471600"; d="png'150?scan'150,208,217,150";a="648448822" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga002.jf.intel.com with ESMTP; 12 Dec 2022 22:11:09 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 12 Dec 2022 22:11:08 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 12 Dec 2022 22:11:08 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 12 Dec 2022 22:11:08 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hQkzIRUzspD5QDUF0QTL7nZeF5qAQRJaz5sKqoB76ASd3htioU4Hp5ULH9isRRz1eBZMB21uMzuP5hTvLALDdhGIPGVHQNg42BFSOGYWqKnEIkpU0vHNgPT57vbgSGwK78Cjh8MsuGhsQOVjcEC53ASD51J0t+fk6PO4kk5AAOP+xAZxgyVs/65WL2xy8AoHz/B9hmfGpk9W6O/j+4rvj8n3rbyuStAJ2mfkica/jf90eLKMH9HCskwEs74UWj27+vp14Am8ceST6VdX8ytG0xRUrrsmpPOB82keqITJ+HgMPvRQGGrQLuhYMo6dnFw9Lc9r5zVZ7rDhKXYG6zGISQ== 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=CFE5PVg1zj33ZsCk9Oo2SXjnGMEFL3bRPs4Erps/tTA=; b=F67wW7JZnLfo5TNJca1yOyFfk56HZgcQT9SqyHmLQww1xYF8mk/MyGF9MWbh5PYXhJlxqJxl6vby6kXv7QCBOV+Nt5I41iD/07cKa1ZbLAKXY0MnhabX6nbuQgrlebKF6EI5WNa2IoUxb2GeelZLJDw163tiWEkKzZaQtP7yOC87mfn9inQ1BzPCIDBqTMX6J+gxVDQRHz6XbIMhVtyrbwCZEVOUXNf2Pxky2W5FGHEaBciQ2FL5jhS/1EoQuMHYiH8oTqzmY2uMRyL9K/ZlV/PRnG+/e/zfMMlH71aMsyu8EJx5DpL8TIAt+3mL9dGmM+hVTkK2jvV0Wvab4MVWiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH0PR11MB4776.namprd11.prod.outlook.com (2603:10b6:510:30::14) by CO1PR11MB4979.namprd11.prod.outlook.com (2603:10b6:303:99::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Tue, 13 Dec 2022 06:11:06 +0000 Received: from PH0PR11MB4776.namprd11.prod.outlook.com ([fe80::e672:dc5c:c1b5:ad5e]) by PH0PR11MB4776.namprd11.prod.outlook.com ([fe80::e672:dc5c:c1b5:ad5e%4]) with mapi id 15.20.5880.019; Tue, 13 Dec 2022 06:11:06 +0000 From: "Zhou, Xiangyun" To: "dev@dpdk.org" CC: "Xu, Bowen" Subject: C++20 report error at file rte_spinlock.h Thread-Topic: C++20 report error at file rte_spinlock.h Thread-Index: AdkOua1eIFFRnwEuTUqVdev5WXYqUQ== Date: Tue, 13 Dec 2022 06:11:06 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB4776:EE_|CO1PR11MB4979:EE_ x-ms-office365-filtering-correlation-id: 405946db-ecbe-4224-4a91-08dadcd0d25c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BWcQp5Dm5WZQcaFcrpe58k/zsCYT1N3JQ+meAvnYLP/Nfo/7jU6GxAP2qk0xDrWm1Kl0Ggf3YvH+RQb/Bd5SALnXlzHAmjEelso1SWhuD5Jvkv5Euv7WmXuP91WW5+wOLGTUwvbSDPLK23xFwiUNi43wrrAWriZKlKsP3epI1mO+YNSBdfl7KrcCNqEOPjDFc1V2xsbuxakrl5s6VCaYPppRVKy5FCh1lwpuSyxtuses0Fug8qo6CrQsalbT4v164DMCQ+Uv1dtFoik4EgRuRdKuVQ3mKduIewKzViSD5jjYJcEOfA1HVFnJheYGk53VkPnDyEoNvoc0+aEQ0Vofkx0bloAPx9uN/1zDltOz5hxQNKmeZqyutsEDyLC8v/StxxKX5ZtJx/Z8q/Map4issaJ2E9DtyGlaShF3rE9lJqism5S6dVRFTXUwoqWevcVrwtzZbSlZiwvf2CK5S9lmV4NX3NZslfC3qZ8VLStVPvzEQ5stUx6Y0N6CuEk06GUSczem5qqDkcUADFGr09nNqXz5xbBLcdERRIB03zW1AZ7DCbDrqsLj2MZVIMR7QsL3QJpIXcktLYR1fa3/JIoCQvpOhjw0/mCOMRND1UHo6yemtQQ/FMSdA8EXBfvx7jfgtBI2krTPsdK9VVv3iZ4/qo6F4CseQ1QR7ym+kQg2WgAyle/yQCDc+UjuHDVPMXEAyo3sJSNLiYo0rQXaLwszpg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB4776.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(366004)(136003)(346002)(39860400002)(376002)(396003)(451199015)(33656002)(38070700005)(41300700001)(8936002)(52536014)(478600001)(107886003)(71200400001)(86362001)(55016003)(82960400001)(122000001)(99936003)(38100700002)(5660300002)(66446008)(6916009)(64756008)(76116006)(4326008)(66556008)(66946007)(8676002)(186003)(26005)(7696005)(6506007)(66476007)(9686003)(316002)(83380400001)(2906002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?N/N4XQLSAwsN1lp1KaZp/L9044lJrqckRYU0J8AOeWpp/X4YuG3rW4meX1RO?= =?us-ascii?Q?kuzY16omm0dOeKsjh+6rj39F3VRbGNz0ZzWuzaquAWegiVwMMfZmbEKadxaw?= =?us-ascii?Q?fYlZ1JInlTNEIApvFUeNRl9P3GJ8REhlrCnF0FGy15L0TdyCFdpdNq1JwywU?= =?us-ascii?Q?qfRBhJ2usfuzFQOnBYTCcyHhh1KTnyCXvrjd0Vb8r9SnlPBjMVLVcnJiG2bk?= =?us-ascii?Q?FNwOFJfAn+sivsVhAe0ZDsPCF/tHm4By7UpmzRdGyCxCakSOd4jgIfnizY+a?= =?us-ascii?Q?XZ7jwVSRk1Be7FcjkBnA50KDHIv9zlJ1igrvqi5xtL3b+FNYhyIMpO1NEw14?= =?us-ascii?Q?C0g9htfHhI+vcblWKYdHKxXXAvlL0PtCQVfPtZQ4EU1PmyE7URj5IuebMxXO?= =?us-ascii?Q?AH5LIS4TYvyS4kCJ37WsqIaNvMDGOnjeP89rnFGJQ4PPy4UI027bRXhYzN3u?= =?us-ascii?Q?oc3Ga6P4HvComkHnTYaksjPC1qiAlHbXUt1r/1L74R2P2rfsTfH7Ib+4nJNu?= =?us-ascii?Q?Ih7xw5a8GupL7cIou3F4MxLvBc3yVDSgKhIyYNzq6OQFoFKF+rezaJ6rMNuJ?= =?us-ascii?Q?1e3zRlxk30EatzIJjlxBrgjCkTu9rqLKFNLiniEeWn3SQU72i5ecaleTNONq?= =?us-ascii?Q?A+mKbXD+Du52mQYKZci41Krvrl78vQyBiE4G+69jcEWOCh9KJxlVYbx/MidM?= =?us-ascii?Q?ew0zIjtQI3D3Y/ockRqYEsFdckFrK9QsLSTsRqwYaJn/HLTHdsMzkEdV1E1k?= =?us-ascii?Q?Ianq84sBhOAO/uUkXTWlYA0C9NF99/9PZ2izoY6jHP70UpLDVCjtth0jdhhw?= =?us-ascii?Q?9CKbRvW0YgelqrxaAkqJO3ohzvINRjeSGS1IDPaO8u6OmZP2SAYEQ80nfPzZ?= =?us-ascii?Q?xW9w8sFDoN2aTS51cZg/cvPDljL9/UcHM8DNRxYiKkFnop34K9/b0wSL5pIL?= =?us-ascii?Q?nmmrDZAOD8EH53JACauY3SEbNAX6z+tVjXmPkSQTiCIgUWMNG+5lMAoIcq2q?= =?us-ascii?Q?LwRMPs9OASJgPZPtLay1/LPY14W3ls8HvLf95X/fBnPaZJBIeQdxr6iKiAnl?= =?us-ascii?Q?gyuoF79ee2dbvjF/NS4tl+p7TAVw4JEwQOyQtSC5RCyNqostg/8H4xgNIoNv?= =?us-ascii?Q?XTPXUSqHPa6xKzi5pLIqOYy2mz1a6WM/dXCh2KH3R0TgclAg7UD6PlTx1RK5?= =?us-ascii?Q?FrY1ZyDU4n4RYk5cD5By7RjAZAM///y3FW/bbOoP2R+v8K4VFPxb3aEhsY2F?= =?us-ascii?Q?1emlf8ixwpuOGKCR1M0mpZxNKhSVF0JVFtHv32Ark0ieiROaBQ60A6V7j6i1?= =?us-ascii?Q?ZI4Jp01LiAmqS9coUmRs/FrhHN09ytK9VvfsKacvHL+uoXOZu0/eH2/Tmw3y?= =?us-ascii?Q?m/UpeKjzpPWO0SEpdr7zufgcaFvXh06AdvN2Ib2NCQ7JKbiWWUWzbE965j/p?= =?us-ascii?Q?LOMZfQcmAk3y+7dfQbrNGjYsIMnOWaxFeYHrMM20qy23vzvfVKf+ijV23W8w?= =?us-ascii?Q?dKZkxZoFMIWqZ9DSltugp+01Hq5MYCcabCp6MCDg03Cg1ulxHpsl4PLMLfJd?= =?us-ascii?Q?uXgrKkgn6O/obp5AN6PSZwm9zsOeIIUxg3x5upZW?= Content-Type: multipart/related; boundary="_004_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_"; type="multipart/alternative" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4776.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 405946db-ecbe-4224-4a91-08dadcd0d25c X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2022 06:11:06.6606 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: F1KV9A3bI2RTRJfriC6Krp16l9qSamaIp9c25Bl9p2NKwnXS109+3j6Asl4xK3QGv+IM45dHThE0Tch8IxrrcA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4979 X-OriginatorOrg: intel.com X-Mailman-Approved-At: Sun, 18 Dec 2022 11:07:34 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org --_004_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_ Content-Type: multipart/alternative; boundary="_000_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_" --_000_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Dear dpdk dev, I'm using dpdk 21.11 LTS, when compile my program with CPP flag "-std=3Dc++= 20", the compiler report below errors. After checking file rte_spinlock.h, = I think the error report by compiler is valid, there should be a potential = issue when using functions rte_spinlock_recursive_lock, rte_spinlock_recurs= ive_unlock and rte_spinlock_recursive_trylock in multi-thread, we could eit= her remove "volatile" definition to ask users to handle the multi-thread is= sue, or using atomic operatings instead of self-increment and self-decremen= t. /home/dpdk/lib/eal/include/generic/rte_spinlock.h:221:12: error: increment = of object of volatile-qualified type 'volatile int' is deprecated [-Werror,= -Wdeprecated-volatile] slr->count++; ^ /home/dpdk/lib/eal/include/generic/rte_spinlock.h:231:6: error: decrement o= f object of volatile-qualified type 'volatile int' is deprecated [-Werror,-= Wdeprecated-volatile] if (--(slr->count) =3D=3D 0) { ^ /home/dpdk/lib/eal/include/generic/rte_spinlock.h:255:12: error: increment = of object of volatile-qualified type 'volatile int' is deprecated [-Werror,= -Wdeprecated-volatile] slr->count++; BR, [A close up of a sign Description automatically generated] Xiangyun Zhou NPG SWE SWA Intel Corporation | intel.com --_000_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Dear dpdk dev,

 

I’m using dpdk 21.11 LTS, when compile my prog= ram with CPP flag “-std=3Dc++20”, the compiler report below err= ors. After checking file rte_spinlock.h, I think the error report by compil= er is valid, there should be a potential issue when using functions rte_spinlock_recursive_lock, rte_spinlock_recursive_unlock and r= te_spinlock_recursive_trylock in multi-thread, we could either remove ̶= 0;volatile” definition to ask users to handle the multi-thread issue,= or using atomic operatings instead of self-increment and self-decrement.

 

 

/home/dpdk/lib/eal/include/generic/rte_spinlock.h:221:12: error: increme= nt of object of volatile-qualified type 'volatile int' is deprecated [-Werr= or,-Wdeprecated-volatile]

        slr->count++;

            =       ^

/home/dpdk/lib/eal/include/generic/rte_spinlock.h:231:6: error: decremen= t of object of volatile-qualified type 'volatile int' is deprecated [-Werro= r,-Wdeprecated-volatile]

        if (--(slr->count) =3D=3D = 0) {

            ^

/home/dpdk/lib/eal/include/generic/rte_spinlock.h:255:12: error: increme= nt of object of volatile-qualified type 'volatile int' is deprecated [-Werr= or,-Wdeprecated-volatile]

        slr->count++;<= /o:p>

 

 

 

BR,

 

3D"A

&= nbsp;

Xiangy= un Zhou

NPG SWE S= WA

Intel Corporation&n= bsp; |  intel.com

 

--_000_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_-- --_004_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_ Content-Type: image/png; name="image001.png" Content-Description: image001.png Content-Disposition: inline; filename="image001.png"; size=6602; creation-date="Tue, 13 Dec 2022 06:11:05 GMT"; modification-date="Tue, 13 Dec 2022 06:11:05 GMT" Content-ID: Content-Transfer-Encoding: base64 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 --_004_PH0PR11MB4776AB842314CFB45A6BD049F2E39PH0PR11MB4776namp_--