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 2EB23A00BE; Sun, 3 Apr 2022 19:28:31 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BE6434114B; Sun, 3 Apr 2022 19:28:30 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20085.outbound.protection.outlook.com [40.107.2.85]) by mails.dpdk.org (Postfix) with ESMTP id 14C734068A for ; Sun, 3 Apr 2022 19:28:29 +0200 (CEST) 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=YY0Vj8yEKsLuYEMqIBxG8S/GgsyPzMb01q2HxOVcp9c=; b=yX/6DJRvZdxqLNVlobqlahqaYpB6xVeX6akOIv6f2UvKjW/UKwxvg0k+Ti/nVAlE6eBjUKtGHz08yVthdA065vQG6QCMpI5aH7dL8jPbGxv8gf6gzBDPJVuocoCdim0mjmuZOIB6HWKYCn2/gYgLt6ex929ZrpeOM1KvNL/IBXg= Received: from DU2P251CA0030.EURP251.PROD.OUTLOOK.COM (2603:10a6:10:230::30) by AS8PR08MB6389.eurprd08.prod.outlook.com (2603:10a6:20b:33e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.19; Sun, 3 Apr 2022 17:28:16 +0000 Received: from DB5EUR03FT051.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:230:cafe::fe) by DU2P251CA0030.outlook.office365.com (2603:10a6:10:230::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31 via Frontend Transport; Sun, 3 Apr 2022 17:28:15 +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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT051.mail.protection.outlook.com (10.152.21.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.19 via Frontend Transport; Sun, 3 Apr 2022 17:28:15 +0000 Received: ("Tessian outbound ac9bb5dd84f6:v118"); Sun, 03 Apr 2022 17:28:15 +0000 X-CR-MTA-TID: 64aa7808 Received: from 3fa25f71c7a7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8405C61C-91E7-49F4-BA86-F4CFA3C0ABDE.1; Sun, 03 Apr 2022 17:28:07 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 3fa25f71c7a7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Sun, 03 Apr 2022 17:28:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SMsJZ8oplfrnCLqwP4UUPHXKzyGbZ5mxqvs3RMofBz1aO1EHONPSViOCNMkzkSr23UpLUgmU/U1TvB2DJjCJqvQGPnGo6FBFZt5aYNdc7zO5bXctG+iNOI+t2EjHnRCC9Io7OpkOXABT8sN3duS/sVeMLI3crJzT42JjP0vxHv6y912rCvqDp4UM2NzWGMoqGf/1HoTMV7TG9+fxqUM6vG3Nva+UzODT1EGm1+7VFXd1Cww1oZ9ohONO+0YLUHPOKjMMwQNuRK7XDuhMFUPK8oMWE3s9VniERRLSn+8GZ5V8in7sCLl7TKSKk44oEubQ6Lk4w3LsWcsNHkRqu20/Kg== 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=YY0Vj8yEKsLuYEMqIBxG8S/GgsyPzMb01q2HxOVcp9c=; b=hnUSGKXRvTveSMbOwXAnzP0jHaXU0wHg9SHy6FWl7HhbbKxJk/GdVHdsolCOAM3JGdsz8aJ5fDlRoiXwT4t6iNl0s/jo+0xcuQG4jgYTjUx3ElogqpPpEfx1yn9PQMywWyY1MGTs7LVZkgoTTnF2b7hECme2oAPql2xLj8Epc5Bkhto4HAzkoN0U/jcZjw5zrh1Pa2Fb/EUWHzjhDNF2ToIitjBQYk9q1rnIOwYkGmY5nuWpHDIugrvsdQBOQ3Fr2QVVkZdJ8JIc7eeSqX5pMsq7K7WFBH/LHh2y+yB9iH6H/nKbmmeN3M6GEKGG9jbp8eXfdjFoBbayEk5CFhHgbg== 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=YY0Vj8yEKsLuYEMqIBxG8S/GgsyPzMb01q2HxOVcp9c=; b=yX/6DJRvZdxqLNVlobqlahqaYpB6xVeX6akOIv6f2UvKjW/UKwxvg0k+Ti/nVAlE6eBjUKtGHz08yVthdA065vQG6QCMpI5aH7dL8jPbGxv8gf6gzBDPJVuocoCdim0mjmuZOIB6HWKYCn2/gYgLt6ex929ZrpeOM1KvNL/IBXg= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by AM4PR08MB2756.eurprd08.prod.outlook.com (2603:10a6:205:c::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Sun, 3 Apr 2022 17:27:50 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::bdab:41f9:79b1:be0d]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::bdab:41f9:79b1:be0d%4]) with mapi id 15.20.5123.031; Sun, 3 Apr 2022 17:27:49 +0000 From: Honnappa Nagarahalli To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "dev@dpdk.org" CC: "thomas@monjalon.net" , David Marchand , "onar.olsen@ericsson.com" , nd , "konstantin.ananyev@intel.com" , "mb@smartsharesystems.com" , "stephen@networkplumber.org" , Ola Liljedahl , nd Subject: RE: [PATCH v3] eal: add seqlock Thread-Topic: [PATCH v3] eal: add seqlock Thread-Index: AQHYRdpxyd0NqRrCTky+5vY5RMVxBKzbWEaAgAJfDACAALmiMA== Date: Sun, 3 Apr 2022 17:27:48 +0000 Message-ID: References: <20220401150749.136921-1-mattias.ronnblom@ericsson.com> <7fa75549-c0db-a206-f642-69235bb7a3fb@lysator.liu.se> In-Reply-To: <7fa75549-c0db-a206-f642-69235bb7a3fb@lysator.liu.se> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 698F5466FC997742BCEFDC18069AE1E4.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: 5316686d-a352-496f-bccd-08da15975638 x-ms-traffictypediagnostic: AM4PR08MB2756:EE_|DB5EUR03FT051:EE_|AS8PR08MB6389:EE_ x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr X-Microsoft-Antispam-PRVS: 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: o54aOiDQsWLVcPxEyQ/bauQP5DqDuDDrrMzW3H7d1Etp81y5FridnaQhBxFQ4fMZx4MNY1/546Li4NRIal31ynROtPjzkSee4BpXFxOFRIk+AccBgAqAolMpnc4Mn1R0DzRXyxST0CsQJv8ywPRtEpEIMrtVIf7c+dkdCmRAsXUZ86U39eQdZxKyPtszdc2O7LS5oiJWp1A7VLVoeU597IB/ETSG8oUuFOM7XKkptVHvM/OieMBI0wNyPURurm/A5pWjbuKZRdAAcwqgO/HSproq9187PnfDqmXAKUviW2aDZuslx1kHIgDbk+ZVezqkFgOLSdNE70bRthg14fwdt1w8Fk5f+xID53NxNAN652aqiEy6lDLROQtzBfO9aBCw2xLz3+ugtZCWtg3hc4CIEizda1Q+yduK8pml3CMEkitE/F96fcBGOIcqJqr4EYOlCEAPW9Qrr21bJt7qjXNekVLKVLPjU0GgHMHW3XgYf9zABg6UvU2aeSuX3eUtv9TONxJDz+Aztb7SjRSXUe8gCoL9brFJPQjcrS4k4xLm+/uZk72qNoLJpbK+C2u3Rj24IvpDJ1qMP7Si29aTjlWbwr3H+CQ1ORsi88wOM+UUgStHIWsDgOBgNy6ZmLhqkzjoqnB1y8J5iGviZun1DOoU9IuOYGyjubr5lmc9dSfeD2o5myjiKlEGwpVvNzHoLZqLDXN+fIadTVxgFgT72Dxd0snU8iElhBh/9OJiEh6eyS4= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(4326008)(8676002)(86362001)(8936002)(52536014)(5660300002)(66946007)(66556008)(64756008)(66446008)(76116006)(66476007)(7696005)(122000001)(6506007)(55016003)(9686003)(38100700002)(38070700005)(508600001)(71200400001)(83380400001)(54906003)(316002)(296002)(186003)(26005)(110136005)(33656002)(2906002)(21314003); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB2756 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: DB5EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 2c88fe61-7a94-46df-d5a8-08da159746f2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BJUY88dd1OTtEw9UcY1QuxeKpfe8etIzAPjumA97KJK4OWdOzplH4JSqrJoj3J4FnuNJGFv19mxd5vAeQlJiD2hGhJGR90jcfL24aaeYGW81YkK25QRMPxrPiP071P2yifO4S2blCm5HZbBo+e5qFw0w3jpRCRncrhyq3Xes8xPwgsczBXRywcfbgu9O9q4ezhdYSfVIcE4I51Lbt9mBsPWzTX8pzpb+ifNYqxgnbmJnbXOCIEUFYZNtBS2uhpcm/dSSMQbl2TpANlMA3yQRiFf8n9QALR5jmpdwe4FNGY58UWBlKgPt+gswfZbsHrRXJHPGp3rRWxKIYTnLSEHQCjKkBkVAhQouiJqI5p5xbafQBMZoSbOvtf0YMKQzTSev1Ux3bpuyWTuFLrcE7lK9bigEPmI+hJgEo4s7snlZfswSRnvc5MMQd5EmWElPM4bNuLUChTuZQ/y/gAtY5wDgMxGvdZRiETbuYco66YSRYwWS4gNSVXHipYSdiO/hqoSUWs1hOXIFmmjCQFFwAFDcPnvICVZhQDZ0OcNU5yeA2/QlU52MBOL3/VTAbx2zIxsSqFh+SCLuKqEaEYDE44Zad5gxZeTl/GIx/JOdh2cm8AB696X32FwvME7Y2MA5OrVttXe0UtTZk+Adtax0NPkrqACieq3AR+MG0OxOSjeecHQ= 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:(13230001)(4636009)(46966006)(36840700001)(47076005)(52536014)(110136005)(186003)(316002)(26005)(55016003)(83380400001)(36860700001)(8936002)(54906003)(82310400004)(508600001)(86362001)(8676002)(356005)(336012)(2906002)(70206006)(5660300002)(33656002)(70586007)(81166007)(4326008)(7696005)(6506007)(9686003)(21314003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2022 17:28:15.7150 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5316686d-a352-496f-bccd-08da15975638 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: DB5EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6389 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 PHNuaXA+DQoNCj4gPj4gYS9hcHAvdGVzdC90ZXN0X3NlcWxvY2suYyBiL2FwcC90ZXN0L3Rlc3Rf c2VxbG9jay5jIG5ldyBmaWxlIG1vZGUNCj4gPj4gMTAwNjQ0IGluZGV4IDAwMDAwMDAwMDAuLjU0 ZmFkZjgwMjUNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9hcHAvdGVzdC90ZXN0X3Nl cWxvY2suYw0KPiA+PiBAQCAtMCwwICsxLDIwMiBAQA0KPiA+PiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+PiArICogQ29weXJpZ2h0KGMpIDIwMjIgRXJpY3Nz b24gQUINCj4gPj4gKyAqLw0KPiA+PiArDQo+ID4+ICsjaW5jbHVkZSA8cnRlX3NlcWxvY2suaD4N Cj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9jeWNsZXMuaD4NCj4gPj4gKyNpbmNsdWRlIDxy dGVfbWFsbG9jLmg+DQo+ID4+ICsjaW5jbHVkZSA8cnRlX3JhbmRvbS5oPg0KPiA+PiArDQo+ID4+ ICsjaW5jbHVkZSA8aW50dHlwZXMuaD4NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgInRlc3QuaCIN Cj4gPj4gKw0KPiA+PiArc3RydWN0IGRhdGEgew0KPiA+PiArCXJ0ZV9zZXFsb2NrX3QgbG9jazsN Cj4gPj4gKw0KPiA+PiArCXVpbnQ2NF90IGE7DQo+ID4+ICsJdWludDY0X3QgYiBfX3J0ZV9jYWNo ZV9hbGlnbmVkOw0KPiA+PiArCXVpbnQ2NF90IGMgX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPj4g K30gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPj4gKw0KPiA+PiArc3RydWN0IHJlYWRlciB7DQo+ ID4+ICsJc3RydWN0IGRhdGEgKmRhdGE7DQo+ID4+ICsJdWludDhfdCBzdG9wOw0KPiA+PiArfTsN Cj4gPj4gKw0KPiA+PiArI2RlZmluZSBXUklURVJfUlVOVElNRSAoMi4wKSAvKiBzICovDQo+ID4+ ICsNCj4gPj4gKyNkZWZpbmUgV1JJVEVSX01BWF9ERUxBWSAoMTAwKSAvKiB1cyAqLw0KPiA+PiAr DQo+ID4+ICsjZGVmaW5lIElOVEVSUlVQVEVEX1dSSVRFUl9GUkVRVUVOQ1kgKDEwMDApICNkZWZp bmUNCj4gPj4gK1dSSVRFUl9JTlRFUlJVUFRfVElNRSAoMSkgLyogdXMgKi8NCj4gPj4gKw0KPiA+ PiArc3RhdGljIGludA0KPiA+PiArd3JpdGVyX3J1bih2b2lkICphcmcpDQo+ID4+ICt7DQo+ID4+ ICsJc3RydWN0IGRhdGEgKmRhdGEgPSBhcmc7DQo+ID4+ICsJdWludDY0X3QgZGVhZGxpbmU7DQo+ ID4+ICsNCj4gPj4gKwlkZWFkbGluZSA9IHJ0ZV9nZXRfdGltZXJfY3ljbGVzKCkgKw0KPiA+PiAr CQlXUklURVJfUlVOVElNRSAqIHJ0ZV9nZXRfdGltZXJfaHooKTsNCj4gPj4gKw0KPiA+PiArCXdo aWxlIChydGVfZ2V0X3RpbWVyX2N5Y2xlcygpIDwgZGVhZGxpbmUpIHsNCj4gPj4gKwkJYm9vbCBp bnRlcnJ1cHRlZDsNCj4gPj4gKwkJdWludDY0X3QgbmV3X3ZhbHVlOw0KPiA+PiArCQl1bnNpZ25l ZCBpbnQgZGVsYXk7DQo+ID4+ICsNCj4gPj4gKwkJbmV3X3ZhbHVlID0gcnRlX3JhbmQoKTsNCj4g Pj4gKw0KPiA+PiArCQlpbnRlcnJ1cHRlZCA9DQo+ID4+IHJ0ZV9yYW5kX21heChJTlRFUlJVUFRF RF9XUklURVJfRlJFUVVFTkNZKSA9PSAwOw0KPiA+PiArDQo+ID4+ICsJCXJ0ZV9zZXFsb2NrX3dy aXRlX2xvY2soJmRhdGEtPmxvY2spOw0KPiA+PiArDQo+ID4+ICsJCWRhdGEtPmMgPSBuZXdfdmFs dWU7DQo+ID4+ICsNCj4gPj4gKwkJLyogVGhlc2UgY29tcGlsZXIgYmFycmllcnMgKGJvdGggb24g dGhlIHRlc3QgcmVhZGVyDQo+ID4+ICsJCSAqIGFuZCB0aGUgdGVzdCB3cml0ZXIgc2lkZSkgYXJl IGhlcmUgdG8gZW5zdXJlIHRoYXQNCj4gPj4gKwkJICogbG9hZHMvc3RvcmVzICp1c3VhbGx5KiBo YXBwZW4gaW4gdGVzdCBwcm9ncmFtIG9yZGVyDQo+ID4+ICsJCSAqIChhbHdheXMgb24gYSBUU08g bWFjaGluZSkuIFRoZXkgYXJlIGFycmFuZ2UgaW4gc3VjaA0KPiA+PiArCQkgKiBhIHdheSB0aGF0 IHRoZSB3cml0ZXIgc3RvcmVzIGluIGEgZGlmZmVyZW50IG9yZGVyDQo+ID4+ICsJCSAqIHRoYW4g dGhlIHJlYWRlciBsb2FkcywgdG8gZW11bGF0ZSBhbiBhcmJpdHJhcnkNCj4gPj4gKwkJICogb3Jk ZXIuIEEgcmVhbCBhcHBsaWNhdGlvbiB1c2luZyBhIHNlcWxvY2sgZG9lcyBub3QNCj4gPj4gKwkJ ICogcmVxdWlyZSBhbnkgY29tcGlsZXIgYmFycmllcnMuDQo+ID4+ICsJCSAqLw0KPiA+PiArCQly dGVfY29tcGlsZXJfYmFycmllcigpOw0KPiA+IFRoZSBjb21waWxlciBiYXJyaWVycyBhcmUgbm90 IHN1ZmZpY2llbnQgb24gYWxsIGFyY2hpdGVjdHVyZXMgKGlmIHRoZSBpbnRlbnRpb24NCj4gaXMg dG8gbWFpbnRhaW4gdGhlIHByb2dyYW0gb3JkZXIpLg0KPiA+DQo+IA0KPiBUaGUgaW50ZW50aW9u IGlzIHdoYXQgaXMgZGVzY3JpYmVkIGluIHRoZSBjb21tZW50IChpLmUuLCB0byBtYWtlIGl0IGxp a2VseSwgYnV0DQo+IG5vIGd1YXJhbnRlZWQsIHRoYXQgdGhlIHN0b3JlcyB3aWxsIGJlIGdsb2Jh bGx5IHZpc2libGUgaW4gdGhlIHByb2dyYW0gb3JkZXIpLg0KPiANCj4gVGhlIHJlYXNvbiBJIGRp ZG4ndCBwdXQgaW4gYSByZWxlYXNlIG1lbW9yeSBiYXJyaWVyLCB3YXMgdGhhdCBpdCBzZWVtcyBh IGxpdHRsZQ0KPiBpbnRydXNpdmUuDQo+IA0KPiBNYXliZSBJIHNob3VsZCByZW1vdmUgdGhlc2Ug Y29tcGlsZXIgYmFycmllcnMuIFRoZXkgYXJlIGFsc28gaW50cnVzaXZlIGluIHRoZQ0KPiB3YXkg bWF5IHByZXZlbnQgc29tZSBjb21waWxlciBvcHRpbWl6YXRpb25zLCB0aGF0IGNvdWxkIGV4cG9z ZSBhIHNlcWxvY2sNCj4gYnVnLiBPciwgSSBjb3VsZCBoYXZlIHR3byB2YXJpYW50cyBvZiB0aGUg dGVzdHMuIEkgZG9uJ3Qga25vdy4NCkkgd291bGQgc3VnZ2VzdCByZW1vdmluZyB0aGUgY29tcGls ZXIgYmFycmllcnMsIGxlYXZlIGl0IHRvIHRoZSBDUFUgdG8gZG8gd2hhdCBpdCBjYW4gZG8uDQoN Cj4gDQo+ID4+ICsJCWRhdGEtPmIgPSBuZXdfdmFsdWU7DQo+ID4+ICsNCj4gPj4gKwkJaWYgKGlu dGVycnVwdGVkKQ0KPiA+PiArCQkJcnRlX2RlbGF5X3VzX2Jsb2NrKFdSSVRFUl9JTlRFUlJVUFRf VElNRSk7DQo+ID4+ICsNCj4gPj4gKwkJcnRlX2NvbXBpbGVyX2JhcnJpZXIoKTsNCj4gPj4gKwkJ ZGF0YS0+YSA9IG5ld192YWx1ZTsNCj4gPj4gKw0KPiA+PiArCQlydGVfc2VxbG9ja193cml0ZV91 bmxvY2soJmRhdGEtPmxvY2spOw0KPiA+PiArDQo+ID4+ICsJCWRlbGF5ID0gcnRlX3JhbmRfbWF4 KFdSSVRFUl9NQVhfREVMQVkpOw0KPiA+PiArDQo+ID4+ICsJCXJ0ZV9kZWxheV91c19ibG9jayhk ZWxheSk7DQo+ID4+ICsJfQ0KPiA+PiArDQo+ID4+ICsJcmV0dXJuIDA7DQo+ID4+ICt9DQo+ID4+ ICsNCg0KPHNuaXA+DQoNCj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ICsgKiBCZWdpbiBhIHdyaXRl LXNpZGUgY3JpdGljYWwgc2VjdGlvbi4NCj4gPj4gKyAqDQo+ID4+ICsgKiBBIGNhbGwgdG8gdGhp cyBmdW5jdGlvbiBhY3F1aXJlcyB0aGUgd3JpdGUgbG9jayBhc3NvY2lhdGVkIEBwDQo+ID4+ICsg KiBzZXFsb2NrLCBhbmQgbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIHdyaXRlLXNpZGUgY3JpdGlj YWwgc2VjdGlvbi4NCj4gPj4gKyAqDQo+ID4+ICsgKiBBZnRlciBoYXZpbmcgY2FsbGVkIHRoaXMg ZnVuY3Rpb24sIHRoZSBjYWxsZXIgbWF5IGdvIG9uIHRvIG1vZGlmeQ0KPiA+PiArICogKGJvdGgg cmVhZCBhbmQgd3JpdGUpIHRoZSBwcm90ZWN0ZWQgZGF0YSwgaW4gYW4gYXRvbWljIG9yDQo+ID4+ ICsgKiBub24tYXRvbWljIG1hbm5lci4NCj4gPj4gKyAqDQo+ID4+ICsgKiBBZnRlciB0aGUgbmVj ZXNzYXJ5IHVwZGF0ZXMgaGF2ZSBiZWVuIHBlcmZvcm1lZCwgdGhlIGFwcGxpY2F0aW9uDQo+ID4+ ICsgKiBjYWxscyBydGVfc2VxbG9ja193cml0ZV91bmxvY2soKS4NCj4gPj4gKyAqDQo+ID4+ICsg KiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBwcmVlbXB0aW9uLXNhZmUgaW4gdGhlIHNlbnNlIHRoYXQg cHJlZW1wdGlvbg0KPiA+PiArICogb2YgdGhlIGNhbGxpbmcgdGhyZWFkIG1heSBibG9jayByZWFk ZXIgcHJvZ3Jlc3MgdW50aWwgdGhlIHdyaXRlcg0KPiA+PiArICogdGhyZWFkIGlzIHJlc2NoZWR1 bGVkLg0KPiA+PiArICoNCj4gPj4gKyAqIFVubGlrZSBydGVfc2VxbG9ja19yZWFkX2xvY2soKSwg ZWFjaCBjYWxsIG1hZGUgdG8NCj4gPj4gKyAqIHJ0ZV9zZXFsb2NrX3dyaXRlX2xvY2soKSBtdXN0 IGJlIG1hdGNoZWQgd2l0aCBhbiB1bmxvY2sgY2FsbC4NCj4gPj4gKyAqDQo+ID4+ICsgKiBAcGFy YW0gc2VxbG9jaw0KPiA+PiArICogICBBIHBvaW50ZXIgdG8gdGhlIHNlcWxvY2suDQo+ID4+ICsg Kg0KPiA+PiArICogQHNlZSBydGVfc2VxbG9ja193cml0ZV91bmxvY2soKQ0KPiA+PiArICovDQo+ ID4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+PiAr cnRlX3NlcWxvY2tfd3JpdGVfbG9jayhydGVfc2VxbG9ja190ICpzZXFsb2NrKSB7DQo+ID4+ICsJ dWludDMyX3Qgc247DQo+ID4+ICsNCj4gPj4gKwkvKiB0byBzeW5jaHJvbml6ZSB3aXRoIG90aGVy IHdyaXRlcnMgKi8NCj4gPj4gKwlydGVfc3BpbmxvY2tfbG9jaygmc2VxbG9jay0+bG9jayk7DQo+ ID4+ICsNCj4gPj4gKwlzbiA9IHNlcWxvY2stPnNuICsgMTsNCj4gPiBUaGUgbG9hZCBvZiBzZXFs b2NrLT5zbiBjb3VsZCB1c2UgX19hdG9taWNfbG9hZF9uIHRvIGJlIGNvbnNpc3RlbnQuDQo+ID4N Cj4gDQo+IEJ1dCB3aHk/IEkga25vdyBpdCBkb2Vzbid0IGhhdmUgYW55IGNvc3QgKHRoZXNlIGxv YWRzIGFyZSBnb2luZyB0byBiZSBhdG9taWMNCj4gYW55d2F5cyksIGJ1dCB3aHkgdXNlIGEgY29u c3RydWN0IHdpdGggc3Ryb25nZXIgZ3VhcmFudGVlcyB0aGFuIHlvdSBoYXZlDQo+IHRvPw0KVXNp bmcgX19hdG9taWNfeHh4IGVuc3VyZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGlzIGF0b21pYyBhbHdh eXMuIEkgYmVsaWV2ZSAoSSBhbSBub3Qgc3VyZSkgdGhhdCwgd2hlbiBub3QgdXNpbmcgX19hdG9t aWNfeHh4LCB0aGUgY29tcGlsZXIgaXMgYWxsb3dlZCB0byB1c2Ugbm9uLWF0b21pYyBvcGVyYXRp b25zLg0KVGhlIG90aGVyIHJlYXNvbiBpcyB3ZSBhcmUgbm90IHF1YWxpZnlpbmcgJ3NuJyBhcyB2 b2xhdGlsZS4gVXNlIG9mIF9fYXRvbWljX3h4eCBpbmhlcmVudGx5IGluZGljYXRlIHRvIHRoZSBj b21waWxlciBub3QgdG8gY2FjaGUgJ3NuJyBpbiBhIHJlZ2lzdGVyLiBJIGRvIG5vdCBrbm93IHRo ZSBjb21waWxlciBiZWhhdmlvciBpZiBzb21lIG9wZXJhdGlvbnMgb24gJ3NuJyB1c2UgX19hdG9t aWNfeHh4IGFuZCBzb21lIGRvIG5vdC4NCg0KPiANCj4gPj4gKw0KPiA+PiArCV9fYXRvbWljX3N0 b3JlX24oJnNlcWxvY2stPnNuLCBzbiwgX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4+ICsNCj4gPj4g KwkvKiBfX0FUT01JQ19SRUxFQVNFIHRvIHByZXZlbnQgc3RvcmVzIGFmdGVyIChpbiBwcm9ncmFt IG9yZGVyKQ0KPiA+PiArCSAqIGZyb20gaGFwcGVuaW5nIGJlZm9yZSB0aGUgc24gc3RvcmUuDQo+ ID4+ICsJICovDQo+ID4+ICsJcnRlX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVMRUFT RSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICogRW5kIGEgd3JpdGUtc2lk ZSBjcml0aWNhbCBzZWN0aW9uLg0KPiA+PiArICoNCj4gPj4gKyAqIEEgY2FsbCB0byB0aGlzIGZ1 bmN0aW9uIG1hcmtzIHRoZSBlbmQgb2YgdGhlIHdyaXRlLXNpZGUgY3JpdGljYWwNCj4gPj4gKyAq IHNlY3Rpb24sIGZvciBAcCBzZXFsb2NrLiBBZnRlciB0aGlzIGNhbGwgaGFzIGJlZW4gbWFkZSwg dGhlDQo+ID4+ICtwcm90ZWN0ZWQNCj4gPj4gKyAqIGRhdGEgbWF5IG5vIGxvbmdlciBiZSBtb2Rp ZmllZC4NCj4gPj4gKyAqDQo+ID4+ICsgKiBAcGFyYW0gc2VxbG9jaw0KPiA+PiArICogICBBIHBv aW50ZXIgdG8gdGhlIHNlcWxvY2suDQo+ID4+ICsgKg0KPiA+PiArICogQHNlZSBydGVfc2VxbG9j a193cml0ZV9sb2NrKCkNCj4gPj4gKyAqLw0KPiA+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4+ ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gK3J0ZV9zZXFsb2NrX3dyaXRlX3VubG9jayhydGVf c2VxbG9ja190ICpzZXFsb2NrKSB7DQo+ID4+ICsJdWludDMyX3Qgc247DQo+ID4+ICsNCj4gPj4g KwlzbiA9IHNlcWxvY2stPnNuICsgMTsNCj4gPiBTYW1lIGhlcmUsIHRoZSBsb2FkIG9mIHNlcWxv Y2stPnNuIGNvdWxkIHVzZSBfX2F0b21pY19sb2FkX24NCj4gPg0KPiA+PiArDQo+ID4+ICsJLyog c3luY2hyb25pemVzLXdpdGggdGhlIGxvYWQgYWNxdWlyZSBpbiBydGVfc2VxbG9ja19yZWFkX2xv Y2soKSAqLw0KPiA+PiArCV9fYXRvbWljX3N0b3JlX24oJnNlcWxvY2stPnNuLCBzbiwgX19BVE9N SUNfUkVMRUFTRSk7DQo+ID4+ICsNCj4gPj4gKwlydGVfc3BpbmxvY2tfdW5sb2NrKCZzZXFsb2Nr LT5sb2NrKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4+ ICt9DQo+ID4+ICsjZW5kaWYNCj4gPj4gKw0KPiA+PiArI2VuZGlmICAvKiBfUlRFX1NFUUxPQ0tf SF8gKi8NCjxzbmlwPg0K