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 A869543CF1; Tue, 19 Mar 2024 13:52:52 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7D62C402D1; Tue, 19 Mar 2024 13:52:52 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id F201740298 for ; Tue, 19 Mar 2024 13:52:50 +0100 (CET) Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TzWjr0vqWz6K9HC; Tue, 19 Mar 2024 20:48:32 +0800 (CST) Received: from frapeml500006.china.huawei.com (unknown [7.182.85.219]) by mail.maildlp.com (Postfix) with ESMTPS id 5A0DD1400CF; Tue, 19 Mar 2024 20:52:48 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml500006.china.huawei.com (7.182.85.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 19 Mar 2024 13:52:48 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.035; Tue, 19 Mar 2024 13:52:48 +0100 From: Konstantin Ananyev To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "dev@dpdk.org" CC: "hofors@lysator.liu.se" , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Stephen Hemminger" Subject: RE: [RFC v5 1/6] eal: add static per-lcore memory allocation facility Thread-Topic: [RFC v5 1/6] eal: add static per-lcore memory allocation facility Thread-Index: AQHaai9wRoF4CUep60m3zWbu02q+LrE/Aetg Date: Tue, 19 Mar 2024 12:52:47 +0000 Message-ID: <039528986a1741f59f625b36728e74de@huawei.com> References: <20240225150330.517225-2-mattias.ronnblom@ericsson.com> <20240228100928.524277-1-mattias.ronnblom@ericsson.com> <20240228100928.524277-2-mattias.ronnblom@ericsson.com> In-Reply-To: <20240228100928.524277-2-mattias.ronnblom@ericsson.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.138.42] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 DQpIaSBNYXR0aWFzLA0KPiBJbnRyb2R1Y2UgRFBESyBwZXItbGNvcmUgaWQgdmFyaWFibGVzLCBv ciBsY29yZSB2YXJpYWJsZXMgZm9yIHNob3J0Lg0KPiANCj4gQW4gbGNvcmUgdmFyaWFibGUgaGFz IG9uZSB2YWx1ZSBmb3IgZXZlcnkgY3VycmVudCBhbmQgZnV0dXJlIGxjb3JlDQo+IGlkLWVxdWlw cGVkIHRocmVhZC4NCj4gDQo+IFRoZSBwcmltYXJ5IDxydGVfbGNvcmVfdmFyLmg+IHVzZSBjYXNl IGlzIGZvciBzdGF0aWNhbGx5IGFsbG9jYXRpbmcNCj4gc21hbGwgY2h1bmtzIG9mIG9mdGVuLXVz ZWQgZGF0YSwgd2hpY2ggaXMgcmVsYXRlZCBsb2dpY2FsbHksIGJ1dCB3aGVyZQ0KPiB0aGVyZSBh cmUgcGVyZm9ybWFuY2UgYmVuZWZpdHMgdG8gcmVhcCBmcm9tIGhhdmluZyB1cGRhdGVzIGJlaW5n IGxvY2FsDQo+IHRvIGFuIGxjb3JlLg0KPiANCj4gTGNvcmUgdmFyaWFibGVzIGFyZSBzaW1pbGFy IHRvIHRocmVhZC1sb2NhbCBzdG9yYWdlIChUTFMsIGUuZy4sIEMxMQ0KPiBfVGhyZWFkX2xvY2Fs KSwgYnV0IGRlY291cGxpbmcgdGhlIHZhbHVlcycgbGlmZSB0aW1lIHdpdGggdGhhdCBvZiB0aGUN Cj4gdGhyZWFkcy4NCj4gDQo+IExjb3JlIHZhcmlhYmxlcyBhcmUgYWxzbyBzaW1pbGFyIGluIHRl cm1zIG9mIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkNCj4gRnJlZUJTRCBrZXJuZWwncyBEUENQ VV8qKCkgZmFtaWx5IG9mIG1hY3JvcyBhbmQgdGhlIGFzc29jaWF0ZWQNCj4gYnVpbGQtdGltZSBt YWNoaW5lcnkuIERQQ1BVIHVzZXMgbGlua2VyIHNjcmlwdHMsIHdoaWNoIGVmZmVjdGl2ZWx5DQo+ IHByZXZlbnRzIHRoZSByZXVzZSBvZiBpdHMsIG90aGVyd2lzZSBzZWVtaW5nbHkgdmlhYmxlLCBh cHByb2FjaC4NCj4gDQo+IFRoZSBjdXJyZW50bHktcHJldmFpbGluZyB3YXkgdG8gc29sdmUgdGhl IHNhbWUgcHJvYmxlbSBhcyBsY29yZQ0KPiB2YXJpYWJsZXMgaXMgdG8ga2VlcCBhIG1vZHVsZSdz IHBlci1sY29yZSBkYXRhIGFzIFJURV9NQVhfTENPUkUtc2l6ZWQNCj4gYXJyYXkgb2YgY2FjaGUt YWxpZ25lZCwgUlRFX0NBQ0hFX0dVQVJEZWQgc3RydWN0cy4gVGhlIGJlbmVmaXQgb2YNCj4gbGNv cmUgdmFyaWFibGVzIG92ZXIgdGhpcyBhcHByb2FjaCBpcyB0aGF0IGRhdGEgcmVsYXRlZCB0byB0 aGUgc2FtZQ0KPiBsY29yZSBub3cgaXMgY2xvc2UgKHNwYXRpYWxseSwgaW4gbWVtb3J5KSwgcmF0 aGVyIHRoYW4gZGF0YSB1c2VkIGJ5DQo+IHRoZSBzYW1lIG1vZHVsZSwgd2hpY2ggaW4gdHVybiBh dm9pZCBleGNlc3NpdmUgdXNlIG9mIHBhZGRpbmcsDQo+IHBvbGx1dGluZyBjYWNoZXMgd2l0aCB1 bnVzZWQgZGF0YS4NCg0KVGhhbmtzIGZvciB0aGUgUkZDLCB2ZXJ5IGludGVyZXN0aW5nIG9uZS4N CkZldyBjb21tZW50cy9xdWVzdGlvbnMgYmVsb3cuIA0KDQogDQo+IFJGQyB2NToNCj4gICogSW4g RG94eWdlbiwgY29uc2lzdGVubHkgdXNlIEA8Y21kPiAoYW5kIG5vdCBcPGNtZD4pLg0KPiAgKiBU aGUgUlRFX0xDT1JFX1ZBUl9HRVQoKSBhbmQgU0VUKCkgY29udmllbmNlIGFjY2VzcyBtYWNyb3MN Cj4gICAgY292ZXJlZCBhbiB1bmNvbW1vbiB1c2UgY2FzZSwgd2hlcmUgdGhlIGxjb3JlIHZhbHVl IGlzIG9mIGENCj4gICAgcHJpbWl0aXZlIHR5cGUsIHJhdGhlciB0aGFuIGEgc3RydWN0LCBhbmQg aXMgdGh1cyBlbGltaW5hdGVkDQo+ICAgIGZyb20gdGhlIEFQSS4gKE1vcnRlbiBCcsO4cnVwKQ0K PiAgKiBJbiB0aGUgd2FrZSB1cCBHRVQoKS9TRVQoKSByZW1vdmVhbCwgcmVuYW1lIFJURV9MQ09S RV9WQVJfUFRSKCkNCj4gICAgUlRFX0xDT1JFX1ZBUl9WQUxVRSgpLg0KPiAgKiBUaGUgdW5kZXJz Y29yZXMgYXJlIHJlbW92ZWQgZnJvbSBfX3J0ZV9sY29yZV92YXJfbGNvcmVfcHRyKCkgdG8NCj4g ICAgc2lnbmFsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEku DQo+ICAqIE1hY3JvIGFyZ3VtZW50cyBhcmUgZG9jdW1lbnRlZC4NCj4gDQo+IFJGViB2NDoNCj4g ICogUmVwbGFjZSBsYXJnZSBzdGF0aWMgYXJyYXkgd2l0aCBsaWJjIGhlYXAtYWxsb2NhdGVkIG1l bW9yeS4gT25lDQo+ICAgIGltcGxpY2F0aW9uIG9mIHRoaXMgY2hhbmdlIGlzIHRoZXJlIG5vIGxv bmdlciBleGlzdHMgYSBmaXhlZCB1cHBlcg0KPiAgICBib3VuZCBmb3IgdGhlIHRvdGFsIGFtb3Vu dCBvZiBtZW1vcnkgdXNlZCBieSBsY29yZSB2YXJpYWJsZXMuDQo+ICAgIFJURV9NQVhfTENPUkVf VkFSIGhhcyBjaGFuZ2VkIG1lYW5pbmcsIGFuZCBub3cgcmVwcmVzZW50IHRoZQ0KPiAgICBtYXhp bXVtIHNpemUgb2YgYW55IGluZGl2aWR1YWwgbGNvcmUgdmFyaWFibGUgdmFsdWUuDQo+ICAqIEZp eCBpc3N1ZXMgaW4gZXhhbXBsZS4gKE1vcnRlbiBCcsO4cnVwKQ0KPiAgKiBJbXByb3ZlIGFjY2Vz cyBtYWNybyB0eXBlIGNoZWNraW5nLiAoTW9ydGVuIEJyw7hydXApDQo+ICAqIFJlZmVyIHRvIHRo ZSBsY29yZSB2YXJpYWJsZSBoYW5kbGUgYXMgImhhbmRsZSIgYW5kIG5vdCAibmFtZSIgaW4NCj4g ICAgdmFyaW91cyBtYWNyb3MuDQo+ICAqIERvY3VtZW50IGxhY2sgb2YgdGhyZWFkIHNhZmV0eSBp biBydGVfbGNvcmVfdmFyX2FsbG9jKCkuDQo+ICAqIFByb3ZpZGUgQVBJLWxldmVsIGFzc3VyYW5j ZSB0aGUgbGNvcmUgdmFyaWFibGUgaGFuZGxlIGlzDQo+ICAgIGFsd2F5cyBub24tTlVMTCwgdG8g YWxsIGFwcGxpY2F0aW9ucyB0byB1c2UgTlVMTCB0byBtZWFuDQo+ICAgICJub3QgeWV0IGFsbG9j YXRlZCIuDQo+ICAqIE5vdGUgemVyby1zaXplZCBhbGxvY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQu DQo+ICAqIEdpdmUgQVBJLWxldmVsIGd1YXJhbnRlZSB0aGUgbGNvcmUgdmFyaWFibGUgdmFsdWVz IGFyZSB6ZXJvZWQuDQo+IA0KPiBSRkMgdjM6DQo+ICAqIFJlcGxhY2UgdXNlIG9mIEdDQy1zcGVj aWZpYyBhbGlnbm9mKDxleHByZXNzaW9uPikgd2l0aCBhbGlnbm9mKDx0eXBlPikuDQo+ICAqIFVw ZGF0ZSBleGFtcGxlIHRvIHJlZmxlY3QgRk9SRUFDSCBtYWNybyBuYW1lIGNoYW5nZSAoaW4gUkZD IHYyKS4NCj4gDQo+IFJGQyB2MjoNCj4gICogVXNlIGFsaWdub2YgdG8gZGVyaXZlIGFsaWdubWVu dCByZXF1aXJlbWVudHMuIChNb3J0ZW4gQnLDuHJ1cCkNCj4gICogQ2hhbmdlIG5hbWUgb2YgRk9S RUFDSCB0byBtYWtlIGl0IGRpc3RpbmN0IGZyb20gPHJ0ZV9sY29yZS5oPidzDQo+ICAgICpwZXIt RUFMLXRocmVhZCogUlRFX0xDT1JFX0ZPUkVBQ0goKS4gKE1vcnRlbiBCcsO4cnVwKQ0KPiAgKiBB bGxvdyB1c2VyLXNwZWNpZmllZCBhbGlnbm1lbnQsIGJ1dCBsaW1pdCBtYXggdG8gY2FjaGUgbGlu ZSBzaXplLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWF0dGlhcyBSw7ZubmJsb20gPG1hdHRpYXMu cm9ubmJsb21AZXJpY3Nzb24uY29tPg0KPiBBY2tlZC1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNt YXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gLS0tDQo+ICBjb25maWcvcnRlX2NvbmZpZy5oICAgICAg ICAgICAgICAgICAgIHwgICAxICsNCj4gIGRvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgICAgICAg ICAgICAgfCAgIDEgKw0KPiAgbGliL2VhbC9jb21tb24vZWFsX2NvbW1vbl9sY29yZV92YXIuYyB8 ICA2OCArKysrKw0KPiAgbGliL2VhbC9jb21tb24vbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAg MSArDQo+ICBsaWIvZWFsL2luY2x1ZGUvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxICsNCj4g IGxpYi9lYWwvaW5jbHVkZS9ydGVfbGNvcmVfdmFyLmggICAgICAgfCAzNjggKysrKysrKysrKysr KysrKysrKysrKysrKysNCj4gIGxpYi9lYWwvdmVyc2lvbi5tYXAgICAgICAgICAgICAgICAgICAg fCAgIDQgKw0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA0NDQgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYi9lYWwvY29tbW9uL2VhbF9jb21tb25fbGNvcmVfdmFyLmMNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZWFsL2luY2x1ZGUvcnRlX2xjb3JlX3Zhci5oDQo+IA0KPiBk aWZmIC0tZ2l0IGEvY29uZmlnL3J0ZV9jb25maWcuaCBiL2NvbmZpZy9ydGVfY29uZmlnLmgNCj4g aW5kZXggZDc0M2E1YzNkMy4uMGRhYzMzZDNiOSAxMDA2NDQNCj4gLS0tIGEvY29uZmlnL3J0ZV9j b25maWcuaA0KPiArKysgYi9jb25maWcvcnRlX2NvbmZpZy5oDQo+IEBAIC00MSw2ICs0MSw3IEBA DQo+ICAvKiBFQUwgZGVmaW5lcyAqLw0KPiAgI2RlZmluZSBSVEVfQ0FDSEVfR1VBUkRfTElORVMg MQ0KPiAgI2RlZmluZSBSVEVfTUFYX0hFQVBTIDMyDQo+ICsjZGVmaW5lIFJURV9NQVhfTENPUkVf VkFSIDEwNDg1NzYNCj4gICNkZWZpbmUgUlRFX01BWF9NRU1TRUdfTElTVFMgMTI4DQo+ICAjZGVm aW5lIFJURV9NQVhfTUVNU0VHX1BFUl9MSVNUIDgxOTINCj4gICNkZWZpbmUgUlRFX01BWF9NRU1f TUJfUEVSX0xJU1QgMzI3NjgNCj4gZGlmZiAtLWdpdCBhL2RvYy9hcGkvZG94eS1hcGktaW5kZXgu bWQgYi9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1kDQo+IGluZGV4IDhjMWViOGZhZmEuLmEzYjgz OTE1NzAgMTAwNjQ0DQo+IC0tLSBhL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQNCj4gKysrIGIv ZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiBAQCAtOTksNiArOTksNyBAQCBUaGUgcHVibGlj IEFQSSBoZWFkZXJzIGFyZSBncm91cGVkIGJ5IHRvcGljczoNCj4gICAgW2ludGVycnVwdHNdKEBy ZWYgcnRlX2ludGVycnVwdHMuaCksDQo+ICAgIFtsYXVuY2hdKEByZWYgcnRlX2xhdW5jaC5oKSwN Cj4gICAgW2xjb3JlXShAcmVmIHJ0ZV9sY29yZS5oKSwNCj4gKyAgW2xjb3JlLXZhcmlibGVdKEBy ZWYgcnRlX2xjb3JlX3Zhci5oKSwNCj4gICAgW3Blci1sY29yZV0oQHJlZiBydGVfcGVyX2xjb3Jl LmgpLA0KPiAgICBbc2VydmljZSBjb3Jlc10oQHJlZiBydGVfc2VydmljZS5oKSwNCj4gICAgW2tl ZXBhbGl2ZV0oQHJlZiBydGVfa2VlcGFsaXZlLmgpLA0KPiBkaWZmIC0tZ2l0IGEvbGliL2VhbC9j b21tb24vZWFsX2NvbW1vbl9sY29yZV92YXIuYyBiL2xpYi9lYWwvY29tbW9uL2VhbF9jb21tb25f bGNvcmVfdmFyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4u NWMzNTNlYmQ0Ng0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2xpYi9lYWwvY29tbW9uL2VhbF9j b21tb25fbGNvcmVfdmFyLmMNCj4gQEAgLTAsMCArMSw2OCBAQA0KPiArLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMjQgRXJpY3Nz b24gQUINCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8aW50dHlwZXMuaD4NCj4gKw0KPiArI2lu Y2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gKyNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gKyNpbmNs dWRlIDxydGVfbG9nLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxydGVfbGNvcmVfdmFyLmg+DQo+ICsN Cj4gKyNpbmNsdWRlICJlYWxfcHJpdmF0ZS5oIg0KPiArDQo+ICsjZGVmaW5lIExDT1JFX0JVRkZF Ul9TSVpFIChSVEVfTUFYX0xDT1JFX1ZBUiAqIFJURV9NQVhfTENPUkUpDQo+ICsNCj4gK3N0YXRp YyB2b2lkICpsY29yZV9idWZmZXI7DQo+ICtzdGF0aWMgc2l6ZV90IG9mZnNldCA9IFJURV9NQVhf TENPUkVfVkFSOw0KPiArDQo+ICtzdGF0aWMgdm9pZCAqDQo+ICtsY29yZV92YXJfYWxsb2Moc2l6 ZV90IHNpemUsIHNpemVfdCBhbGlnbikNCj4gK3sNCj4gKwl2b2lkICpoYW5kbGU7DQo+ICsJdm9p ZCAqdmFsdWU7DQo+ICsNCj4gKwlvZmZzZXQgPSBSVEVfQUxJR05fQ0VJTChvZmZzZXQsIGFsaWdu KTsNCj4gKw0KPiArCWlmIChvZmZzZXQgKyBzaXplID4gUlRFX01BWF9MQ09SRV9WQVIpIHsNCj4g KwkJbGNvcmVfYnVmZmVyID0gYWxpZ25lZF9hbGxvYyhSVEVfQ0FDSEVfTElORV9TSVpFLA0KPiAr CQkJCQkgICAgIExDT1JFX0JVRkZFUl9TSVpFKTsNCg0KSG1tLi4uIGRvIEkgZ2V0IGl0IHJpZ2h0 OiBpZiBvZmZzZXQgaXMgPD0gdGhlbiBSVEVfTUFYX0xDT1JFX1ZBUiwgIGFuZCAgb2Zmc2V0ICsg c2l6ZSA+IFJURV9NQVhfTENPUkVfVkFSDQp3ZSBzaW1wbHkgb3ZlcndyaXRlIGxjb3JlX2J1ZmZl ciB3aXRoIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIgb2YgdGhlIHNhbWUgc2l6ZT8NCkkgdW5kZXJz dGFuZCB0aGF0IHlvdSBleHBlY3QgaXQganVzdCBuZXZlciB0byBoYXBwZW4gKHRvdGFsIHNpemUg b2YgYWxsIGxjb3JlIHZhcnMgbmV2ZXIgZXhjZWVkIDFNQiksIGJ1dCBzdGlsbA0KSSB0aGluayB3 ZSBuZWVkIHRvIGhhbmRsZSBpdCBpbiBhIHNvbWUgYmV0dGVyIHdheSB0aGVuIGp1c3QgaWdub3Jp bmcgc3VjaCBwb3NzaWJpbGl0eS4uLg0KTWlnaHQgYmUgUlRFX1ZFUklGWSgpIGF0IGxlYXN0PyAg IA0KDQpBcyBhIG1vcmUgZ2VuZXJpYyBxdWVzdGlvbiAtIGRvIHdlIG5lZWQgdG8gc3VwcG9ydCBM Q09SRV9WQVIgZm9yIGRsb3BlbigpcyB0aGF0IGNvdWxkIGhhcHBlbiBhZnRlciBydGVfZWFsX2lu aXQoKQ0KaXMgY2FsbGVkIGFuZCBMQ09SRSB0aHJlYWRzIHdlcmUgY3JlYXRlZD8NCkJlY2F1c2Us IGlmIG5vLCB0aGVuIHdlIHByb2JhYmx5IGNhbiBtYWtlIHRoaXMgY29uc3RydWN0aW9uIG11Y2gg bW9yZSBmbGV4aWJsZToNCm9uZSBidWZmZXIgcGVyIExDT1JFLCBhbGxvY2F0ZSBvbiBkZW1hbmQs IGV0Yy4gDQoNCj4gKwkJUlRFX1ZFUklGWShsY29yZV9idWZmZXIgIT0gTlVMTCk7DQo+ICsNCj4g KwkJb2Zmc2V0ID0gMDsNCj4gKwl9DQo+ICsNCj4gKwloYW5kbGUgPSBSVEVfUFRSX0FERChsY29y ZV9idWZmZXIsIG9mZnNldCk7DQo+ICsNCj4gKwlvZmZzZXQgKz0gc2l6ZTsNCj4gKw0KPiArCVJU RV9MQ09SRV9WQVJfRk9SRUFDSF9WQUxVRSh2YWx1ZSwgaGFuZGxlKQ0KPiArCQltZW1zZXQodmFs dWUsIDAsIHNpemUpOw0KPiArDQo+ICsJRUFMX0xPRyhERUJVRywgIkFsbG9jYXRlZCAlIlBSSXVQ VFIiIGJ5dGVzIG9mIHBlci1sY29yZSBkYXRhIHdpdGggYSAiDQo+ICsJCSIlIlBSSXVQVFIiLWJ5 dGUgYWxpZ25tZW50Iiwgc2l6ZSwgYWxpZ24pOw0KPiArDQo+ICsJcmV0dXJuIGhhbmRsZTsNCj4g K30NCj4gKw0KPiArdm9pZCAqDQo+ICtydGVfbGNvcmVfdmFyX2FsbG9jKHNpemVfdCBzaXplLCBz aXplX3QgYWxpZ24pDQo+ICt7DQo+ICsJLyogSGF2aW5nIHRoZSBwZXItbGNvcmUgYnVmZmVyIHNp emUgYWxpZ25lZCBvbiBjYWNoZSBsaW5lcw0KPiArCSAqIGFzc3VyZXMgYXMgd2VsbCBhcyBoYXZp bmcgdGhlIGJhc2UgcG9pbnRlciBhbGlnbmVkIG9uIGNhY2hlDQo+ICsJICogc2l6ZSBhc3N1cmVz IHRoYXQgYWxpZ25lZCBvZmZzZXRzIGFsc28gdHJhbnNsYXRlIHRvIGFsaXBnbmVkDQo+ICsJICog cG9pbnRlcnMgYWNyb3NzIGFsbCB2YWx1ZXMuDQo+ICsJICovDQo+ICsJUlRFX0JVSUxEX0JVR19P TihSVEVfTUFYX0xDT1JFX1ZBUiAlIFJURV9DQUNIRV9MSU5FX1NJWkUgIT0gMCk7DQo+ICsJUlRF X0FTU0VSVChhbGlnbiA8PSBSVEVfQ0FDSEVfTElORV9TSVpFKTsNCj4gKwlSVEVfQVNTRVJUKHNp emUgPD0gUlRFX01BWF9MQ09SRV9WQVIpOw0KPiArDQo+ICsJLyogJzAnIG1lYW5zIGFza2luZyBm b3Igd29yc3QtY2FzZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzICovDQo+ICsJaWYgKGFsaWduID09 IDApDQo+ICsJCWFsaWduID0gYWxpZ25vZihtYXhfYWxpZ25fdCk7DQo+ICsNCj4gKwlSVEVfQVNT RVJUKHJ0ZV9pc19wb3dlcl9vZl8yKGFsaWduKSk7DQo+ICsNCj4gKwlyZXR1cm4gbGNvcmVfdmFy X2FsbG9jKHNpemUsIGFsaWduKTsNCj4gK30NCg==