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 D134943D04; Wed, 20 Mar 2024 15:18:21 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5BC71402B9; Wed, 20 Mar 2024 15:18:21 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 4C3E74029F for ; Wed, 20 Mar 2024 15:18:19 +0100 (CET) Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4V09Z05K4Yz6K9Fs; Wed, 20 Mar 2024 22:14:00 +0800 (CST) Received: from frapeml100006.china.huawei.com (unknown [7.182.85.201]) by mail.maildlp.com (Postfix) with ESMTPS id 89560140B63; Wed, 20 Mar 2024 22:18:18 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100006.china.huawei.com (7.182.85.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 20 Mar 2024 15:18:18 +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; Wed, 20 Mar 2024 15:18:18 +0100 From: Konstantin Ananyev To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "dev@dpdk.org" CC: =?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/AetggAF6k4CAABlX4A== Date: Wed, 20 Mar 2024 14:18:17 +0000 Message-ID: <48b2385d5abf4347b60da265f99f4fcb@huawei.com> References: <20240225150330.517225-2-mattias.ronnblom@ericsson.com> <20240228100928.524277-1-mattias.ronnblom@ericsson.com> <20240228100928.524277-2-mattias.ronnblom@ericsson.com> <039528986a1741f59f625b36728e74de@huawei.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.175.247] 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 DQoNCj4gPj4gSW50cm9kdWNlIERQREsgcGVyLWxjb3JlIGlkIHZhcmlhYmxlcywgb3IgbGNvcmUg dmFyaWFibGVzIGZvciBzaG9ydC4NCj4gPj4NCj4gPj4gQW4gbGNvcmUgdmFyaWFibGUgaGFzIG9u ZSB2YWx1ZSBmb3IgZXZlcnkgY3VycmVudCBhbmQgZnV0dXJlIGxjb3JlDQo+ID4+IGlkLWVxdWlw cGVkIHRocmVhZC4NCj4gPj4NCj4gPj4gVGhlIHByaW1hcnkgPHJ0ZV9sY29yZV92YXIuaD4gdXNl IGNhc2UgaXMgZm9yIHN0YXRpY2FsbHkgYWxsb2NhdGluZw0KPiA+PiBzbWFsbCBjaHVua3Mgb2Yg b2Z0ZW4tdXNlZCBkYXRhLCB3aGljaCBpcyByZWxhdGVkIGxvZ2ljYWxseSwgYnV0IHdoZXJlDQo+ ID4+IHRoZXJlIGFyZSBwZXJmb3JtYW5jZSBiZW5lZml0cyB0byByZWFwIGZyb20gaGF2aW5nIHVw ZGF0ZXMgYmVpbmcgbG9jYWwNCj4gPj4gdG8gYW4gbGNvcmUuDQo+ID4+DQo+ID4+IExjb3JlIHZh cmlhYmxlcyBhcmUgc2ltaWxhciB0byB0aHJlYWQtbG9jYWwgc3RvcmFnZSAoVExTLCBlLmcuLCBD MTENCj4gPj4gX1RocmVhZF9sb2NhbCksIGJ1dCBkZWNvdXBsaW5nIHRoZSB2YWx1ZXMnIGxpZmUg dGltZSB3aXRoIHRoYXQgb2YgdGhlDQo+ID4+IHRocmVhZHMuDQo+ID4+DQo+ID4+IExjb3JlIHZh cmlhYmxlcyBhcmUgYWxzbyBzaW1pbGFyIGluIHRlcm1zIG9mIGZ1bmN0aW9uYWxpdHkgcHJvdmlk ZWQgYnkNCj4gPj4gRnJlZUJTRCBrZXJuZWwncyBEUENQVV8qKCkgZmFtaWx5IG9mIG1hY3JvcyBh bmQgdGhlIGFzc29jaWF0ZWQNCj4gPj4gYnVpbGQtdGltZSBtYWNoaW5lcnkuIERQQ1BVIHVzZXMg bGlua2VyIHNjcmlwdHMsIHdoaWNoIGVmZmVjdGl2ZWx5DQo+ID4+IHByZXZlbnRzIHRoZSByZXVz ZSBvZiBpdHMsIG90aGVyd2lzZSBzZWVtaW5nbHkgdmlhYmxlLCBhcHByb2FjaC4NCj4gPj4NCj4g Pj4gVGhlIGN1cnJlbnRseS1wcmV2YWlsaW5nIHdheSB0byBzb2x2ZSB0aGUgc2FtZSBwcm9ibGVt IGFzIGxjb3JlDQo+ID4+IHZhcmlhYmxlcyBpcyB0byBrZWVwIGEgbW9kdWxlJ3MgcGVyLWxjb3Jl IGRhdGEgYXMgUlRFX01BWF9MQ09SRS1zaXplZA0KPiA+PiBhcnJheSBvZiBjYWNoZS1hbGlnbmVk LCBSVEVfQ0FDSEVfR1VBUkRlZCBzdHJ1Y3RzLiBUaGUgYmVuZWZpdCBvZg0KPiA+PiBsY29yZSB2 YXJpYWJsZXMgb3ZlciB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgZGF0YSByZWxhdGVkIHRvIHRoZSBz YW1lDQo+ID4+IGxjb3JlIG5vdyBpcyBjbG9zZSAoc3BhdGlhbGx5LCBpbiBtZW1vcnkpLCByYXRo ZXIgdGhhbiBkYXRhIHVzZWQgYnkNCj4gPj4gdGhlIHNhbWUgbW9kdWxlLCB3aGljaCBpbiB0dXJu IGF2b2lkIGV4Y2Vzc2l2ZSB1c2Ugb2YgcGFkZGluZywNCj4gPj4gcG9sbHV0aW5nIGNhY2hlcyB3 aXRoIHVudXNlZCBkYXRhLg0KPiA+DQo+ID4gVGhhbmtzIGZvciB0aGUgUkZDLCB2ZXJ5IGludGVy ZXN0aW5nIG9uZS4NCj4gPiBGZXcgY29tbWVudHMvcXVlc3Rpb25zIGJlbG93Lg0KPiA+DQo+ID4N Cj4gPj4gUkZDIHY1Og0KPiA+PiAgICogSW4gRG94eWdlbiwgY29uc2lzdGVubHkgdXNlIEA8Y21k PiAoYW5kIG5vdCBcPGNtZD4pLg0KPiA+PiAgICogVGhlIFJURV9MQ09SRV9WQVJfR0VUKCkgYW5k IFNFVCgpIGNvbnZpZW5jZSBhY2Nlc3MgbWFjcm9zDQo+ID4+ICAgICBjb3ZlcmVkIGFuIHVuY29t bW9uIHVzZSBjYXNlLCB3aGVyZSB0aGUgbGNvcmUgdmFsdWUgaXMgb2YgYQ0KPiA+PiAgICAgcHJp bWl0aXZlIHR5cGUsIHJhdGhlciB0aGFuIGEgc3RydWN0LCBhbmQgaXMgdGh1cyBlbGltaW5hdGVk DQo+ID4+ICAgICBmcm9tIHRoZSBBUEkuIChNb3J0ZW4gQnLDuHJ1cCkNCj4gPj4gICAqIEluIHRo ZSB3YWtlIHVwIEdFVCgpL1NFVCgpIHJlbW92ZWFsLCByZW5hbWUgUlRFX0xDT1JFX1ZBUl9QVFIo KQ0KPiA+PiAgICAgUlRFX0xDT1JFX1ZBUl9WQUxVRSgpLg0KPiA+PiAgICogVGhlIHVuZGVyc2Nv cmVzIGFyZSByZW1vdmVkIGZyb20gX19ydGVfbGNvcmVfdmFyX2xjb3JlX3B0cigpIHRvDQo+ID4+ ICAgICBzaWduYWwgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGEgcGFydCBvZiB0aGUgcHVibGljIEFQ SS4NCj4gPj4gICAqIE1hY3JvIGFyZ3VtZW50cyBhcmUgZG9jdW1lbnRlZC4NCj4gPj4NCj4gPj4g UkZWIHY0Og0KPiA+PiAgICogUmVwbGFjZSBsYXJnZSBzdGF0aWMgYXJyYXkgd2l0aCBsaWJjIGhl YXAtYWxsb2NhdGVkIG1lbW9yeS4gT25lDQo+ID4+ICAgICBpbXBsaWNhdGlvbiBvZiB0aGlzIGNo YW5nZSBpcyB0aGVyZSBubyBsb25nZXIgZXhpc3RzIGEgZml4ZWQgdXBwZXINCj4gPj4gICAgIGJv dW5kIGZvciB0aGUgdG90YWwgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IGxjb3JlIHZhcmlhYmxl cy4NCj4gPj4gICAgIFJURV9NQVhfTENPUkVfVkFSIGhhcyBjaGFuZ2VkIG1lYW5pbmcsIGFuZCBu b3cgcmVwcmVzZW50IHRoZQ0KPiA+PiAgICAgbWF4aW11bSBzaXplIG9mIGFueSBpbmRpdmlkdWFs IGxjb3JlIHZhcmlhYmxlIHZhbHVlLg0KPiA+PiAgICogRml4IGlzc3VlcyBpbiBleGFtcGxlLiAo TW9ydGVuIEJyw7hydXApDQo+ID4+ICAgKiBJbXByb3ZlIGFjY2VzcyBtYWNybyB0eXBlIGNoZWNr aW5nLiAoTW9ydGVuIEJyw7hydXApDQo+ID4+ICAgKiBSZWZlciB0byB0aGUgbGNvcmUgdmFyaWFi bGUgaGFuZGxlIGFzICJoYW5kbGUiIGFuZCBub3QgIm5hbWUiIGluDQo+ID4+ICAgICB2YXJpb3Vz IG1hY3Jvcy4NCj4gPj4gICAqIERvY3VtZW50IGxhY2sgb2YgdGhyZWFkIHNhZmV0eSBpbiBydGVf bGNvcmVfdmFyX2FsbG9jKCkuDQo+ID4+ICAgKiBQcm92aWRlIEFQSS1sZXZlbCBhc3N1cmFuY2Ug dGhlIGxjb3JlIHZhcmlhYmxlIGhhbmRsZSBpcw0KPiA+PiAgICAgYWx3YXlzIG5vbi1OVUxMLCB0 byBhbGwgYXBwbGljYXRpb25zIHRvIHVzZSBOVUxMIHRvIG1lYW4NCj4gPj4gICAgICJub3QgeWV0 IGFsbG9jYXRlZCIuDQo+ID4+ICAgKiBOb3RlIHplcm8tc2l6ZWQgYWxsb2NhdGlvbnMgYXJlIG5v dCBhbGxvd2VkLg0KPiA+PiAgICogR2l2ZSBBUEktbGV2ZWwgZ3VhcmFudGVlIHRoZSBsY29yZSB2 YXJpYWJsZSB2YWx1ZXMgYXJlIHplcm9lZC4NCj4gPj4NCj4gPj4gUkZDIHYzOg0KPiA+PiAgICog UmVwbGFjZSB1c2Ugb2YgR0NDLXNwZWNpZmljIGFsaWdub2YoPGV4cHJlc3Npb24+KSB3aXRoIGFs aWdub2YoPHR5cGU+KS4NCj4gPj4gICAqIFVwZGF0ZSBleGFtcGxlIHRvIHJlZmxlY3QgRk9SRUFD SCBtYWNybyBuYW1lIGNoYW5nZSAoaW4gUkZDIHYyKS4NCj4gPj4NCj4gPj4gUkZDIHYyOg0KPiA+ PiAgICogVXNlIGFsaWdub2YgdG8gZGVyaXZlIGFsaWdubWVudCByZXF1aXJlbWVudHMuIChNb3J0 ZW4gQnLDuHJ1cCkNCj4gPj4gICAqIENoYW5nZSBuYW1lIG9mIEZPUkVBQ0ggdG8gbWFrZSBpdCBk aXN0aW5jdCBmcm9tIDxydGVfbGNvcmUuaD4ncw0KPiA+PiAgICAgKnBlci1FQUwtdGhyZWFkKiBS VEVfTENPUkVfRk9SRUFDSCgpLiAoTW9ydGVuIEJyw7hydXApDQo+ID4+ICAgKiBBbGxvdyB1c2Vy LXNwZWNpZmllZCBhbGlnbm1lbnQsIGJ1dCBsaW1pdCBtYXggdG8gY2FjaGUgbGluZSBzaXplLg0K PiA+Pg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYXR0aWFzIFLDtm5uYmxvbSA8bWF0dGlhcy5yb25u YmxvbUBlcmljc3Nvbi5jb20+DQo+ID4+IEFja2VkLWJ5OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21h cnRzaGFyZXN5c3RlbXMuY29tPg0KPiA+PiAtLS0NCj4gPj4gICBjb25maWcvcnRlX2NvbmZpZy5o ICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gPj4gICBkb2MvYXBpL2RveHktYXBpLWluZGV4 Lm1kICAgICAgICAgICAgIHwgICAxICsNCj4gPj4gICBsaWIvZWFsL2NvbW1vbi9lYWxfY29tbW9u X2xjb3JlX3Zhci5jIHwgIDY4ICsrKysrDQo+ID4+ICAgbGliL2VhbC9jb21tb24vbWVzb24uYnVp bGQgICAgICAgICAgICB8ICAgMSArDQo+ID4+ICAgbGliL2VhbC9pbmNsdWRlL21lc29uLmJ1aWxk ICAgICAgICAgICB8ICAgMSArDQo+ID4+ICAgbGliL2VhbC9pbmNsdWRlL3J0ZV9sY29yZV92YXIu aCAgICAgICB8IDM2OCArKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+PiAgIGxpYi9lYWwv dmVyc2lvbi5tYXAgICAgICAgICAgICAgICAgICAgfCAgIDQgKw0KPiA+PiAgIDcgZmlsZXMgY2hh bmdlZCwgNDQ0IGluc2VydGlvbnMoKykNCj4gPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2Vh bC9jb21tb24vZWFsX2NvbW1vbl9sY29yZV92YXIuYw0KPiA+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWIvZWFsL2luY2x1ZGUvcnRlX2xjb3JlX3Zhci5oDQo+ID4+DQo+ID4+IGRpZmYgLS1naXQg YS9jb25maWcvcnRlX2NvbmZpZy5oIGIvY29uZmlnL3J0ZV9jb25maWcuaA0KPiA+PiBpbmRleCBk NzQzYTVjM2QzLi4wZGFjMzNkM2I5IDEwMDY0NA0KPiA+PiAtLS0gYS9jb25maWcvcnRlX2NvbmZp Zy5oDQo+ID4+ICsrKyBiL2NvbmZpZy9ydGVfY29uZmlnLmgNCj4gPj4gQEAgLTQxLDYgKzQxLDcg QEANCj4gPj4gICAvKiBFQUwgZGVmaW5lcyAqLw0KPiA+PiAgICNkZWZpbmUgUlRFX0NBQ0hFX0dV QVJEX0xJTkVTIDENCj4gPj4gICAjZGVmaW5lIFJURV9NQVhfSEVBUFMgMzINCj4gPj4gKyNkZWZp bmUgUlRFX01BWF9MQ09SRV9WQVIgMTA0ODU3Ng0KPiA+PiAgICNkZWZpbmUgUlRFX01BWF9NRU1T RUdfTElTVFMgMTI4DQo+ID4+ICAgI2RlZmluZSBSVEVfTUFYX01FTVNFR19QRVJfTElTVCA4MTky DQo+ID4+ICAgI2RlZmluZSBSVEVfTUFYX01FTV9NQl9QRVJfTElTVCAzMjc2OA0KPiA+PiBkaWZm IC0tZ2l0IGEvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZCBiL2RvYy9hcGkvZG94eS1hcGktaW5k ZXgubWQNCj4gPj4gaW5kZXggOGMxZWI4ZmFmYS4uYTNiODM5MTU3MCAxMDA2NDQNCj4gPj4gLS0t IGEvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiA+PiArKysgYi9kb2MvYXBpL2RveHktYXBp LWluZGV4Lm1kDQo+ID4+IEBAIC05OSw2ICs5OSw3IEBAIFRoZSBwdWJsaWMgQVBJIGhlYWRlcnMg YXJlIGdyb3VwZWQgYnkgdG9waWNzOg0KPiA+PiAgICAgW2ludGVycnVwdHNdKEByZWYgcnRlX2lu dGVycnVwdHMuaCksDQo+ID4+ICAgICBbbGF1bmNoXShAcmVmIHJ0ZV9sYXVuY2guaCksDQo+ID4+ ICAgICBbbGNvcmVdKEByZWYgcnRlX2xjb3JlLmgpLA0KPiA+PiArICBbbGNvcmUtdmFyaWJsZV0o QHJlZiBydGVfbGNvcmVfdmFyLmgpLA0KPiA+PiAgICAgW3Blci1sY29yZV0oQHJlZiBydGVfcGVy X2xjb3JlLmgpLA0KPiA+PiAgICAgW3NlcnZpY2UgY29yZXNdKEByZWYgcnRlX3NlcnZpY2UuaCks DQo+ID4+ICAgICBba2VlcGFsaXZlXShAcmVmIHJ0ZV9rZWVwYWxpdmUuaCksDQo+ID4+IGRpZmYg LS1naXQgYS9saWIvZWFsL2NvbW1vbi9lYWxfY29tbW9uX2xjb3JlX3Zhci5jIGIvbGliL2VhbC9j b21tb24vZWFsX2NvbW1vbl9sY29yZV92YXIuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+PiBpbmRleCAwMDAwMDAwMDAwLi41YzM1M2ViZDQ2DQo+ID4+IC0tLSAvZGV2L251bGwNCj4g Pj4gKysrIGIvbGliL2VhbC9jb21tb24vZWFsX2NvbW1vbl9sY29yZV92YXIuYw0KPiA+PiBAQCAt MCwwICsxLDY4IEBADQo+ID4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xh dXNlDQo+ID4+ICsgKiBDb3B5cmlnaHQoYykgMjAyNCBFcmljc3NvbiBBQg0KPiA+PiArICovDQo+ ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPg0KPiA+PiArDQo+ID4+ICsjaW5jbHVk ZSA8cnRlX2NvbW1vbi5oPg0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9kZWJ1Zy5oPg0KPiA+PiArI2lu Y2x1ZGUgPHJ0ZV9sb2cuaD4NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9sY29yZV92YXIu aD4NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgImVhbF9wcml2YXRlLmgiDQo+ID4+ICsNCj4gPj4g KyNkZWZpbmUgTENPUkVfQlVGRkVSX1NJWkUgKFJURV9NQVhfTENPUkVfVkFSICogUlRFX01BWF9M Q09SRSkNCj4gPj4gKw0KPiA+PiArc3RhdGljIHZvaWQgKmxjb3JlX2J1ZmZlcjsNCj4gPj4gK3N0 YXRpYyBzaXplX3Qgb2Zmc2V0ID0gUlRFX01BWF9MQ09SRV9WQVI7DQo+ID4+ICsNCj4gPj4gK3N0 YXRpYyB2b2lkICoNCj4gPj4gK2xjb3JlX3Zhcl9hbGxvYyhzaXplX3Qgc2l6ZSwgc2l6ZV90IGFs aWduKQ0KPiA+PiArew0KPiA+PiArCXZvaWQgKmhhbmRsZTsNCj4gPj4gKwl2b2lkICp2YWx1ZTsN Cj4gPj4gKw0KPiA+PiArCW9mZnNldCA9IFJURV9BTElHTl9DRUlMKG9mZnNldCwgYWxpZ24pOw0K PiA+PiArDQo+ID4+ICsJaWYgKG9mZnNldCArIHNpemUgPiBSVEVfTUFYX0xDT1JFX1ZBUikgew0K PiA+PiArCQlsY29yZV9idWZmZXIgPSBhbGlnbmVkX2FsbG9jKFJURV9DQUNIRV9MSU5FX1NJWkUs DQo+ID4+ICsJCQkJCSAgICAgTENPUkVfQlVGRkVSX1NJWkUpOw0KPiA+DQo+ID4gSG1tLi4uIGRv IEkgZ2V0IGl0IHJpZ2h0OiBpZiBvZmZzZXQgaXMgPD0gdGhlbiBSVEVfTUFYX0xDT1JFX1ZBUiwg IGFuZCAgb2Zmc2V0ICsgc2l6ZSA+IFJURV9NQVhfTENPUkVfVkFSDQo+ID4gd2Ugc2ltcGx5IG92 ZXJ3cml0ZSBsY29yZV9idWZmZXIgd2l0aCBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyIG9mIHRoZSBz YW1lIHNpemU/DQo+IA0KPiBObywgaXQncyBqdXN0IHRoZSBwb2ludGVyIHRoYXQgaXMgb3Zlcndy aXR0ZW4uIFRoZSBvbGQgYnVmZmVyIHdpbGwNCj4gcmVtYWluIGluIG1lbW9yeS4NCg0KQWggb2ss IEkgbWlzc2VkIHRoYXQgeW91IGNoYW5nZWQgdGhlIGhhbmRsZSB0byBwb2ludGVyIGNvbnZlcnNp b24gaW4gbmV3IHZlcnNpb24gdG9vLg0KTm93IGhhbmRsZSBpcyBub3QganVzdCBhbiBvZmZzZXQs IGJ1dCBhbiBhY3R1YWwgcG9pbnRlciB0byBsY29yZTAgdmFyLCBzbyBhbGwgd2UgaGF2ZSBpcyB0 byBhZGQNCmxjb3JlX2lkeCBvZmZzZXQuDQpNYWtlcyBzZW5zZSwgdGhhbmtzIGZvciBjbGFyaWZ5 aW5nLg0KTEdUTSB0aGVuLg0KIA0KDQo+IA0KPiA+IEkgdW5kZXJzdGFuZCB0aGF0IHlvdSBleHBl Y3QgaXQganVzdCBuZXZlciB0byBoYXBwZW4gKHRvdGFsIHNpemUgb2YgYWxsIGxjb3JlIHZhcnMg bmV2ZXIgZXhjZWVkIDFNQiksIGJ1dCBzdGlsbA0KPiA+IEkgdGhpbmsgd2UgbmVlZCB0byBoYW5k bGUgaXQgaW4gYSBzb21lIGJldHRlciB3YXkgdGhlbiBqdXN0IGlnbm9yaW5nIHN1Y2ggcG9zc2li aWxpdHkuLi4NCj4gPiBNaWdodCBiZSBSVEVfVkVSSUZZKCkgYXQgbGVhc3Q/DQo+ID4NCj4gDQo+ IEluIHRoaXMgcmV2aXNpb24gb2YgdGhlIHBhdGNoIHNldCwgUlRFX01BWF9MQ09SRV9WQVIgZG9l cyBub3QgcmVwcmVzZW50DQo+IGFuIHVwcGVyIGJvdW5kIGZvciB0aGUgc3VtIG9mIGFsbCBsY29y ZSB2YXJpYWJsZXMnIHNpemUsIGJ1dCByYXRoZXIgb25seQ0KPiB0aGUgbWF4aW11bSBzaXplIG9m IGEgc2luZ2xlIGxjb3JlIHZhcmlhYmxlLg0KPiANCj4gVmFyaWFibGUgYWxpZ25tZW50IGFuZCBz aXplIGNvbnN0cmFpbnRzIGFyZSBSVEVfQVNTRVJUKCllZCBhdCB0aGUgcG9pbnQNCj4gb2YgYWxs b2NhdGlvbi4gT25lIGNvdWxkIGFyZ3VlIHRoZXkgc2hvdWxkIGJlIFJURV9WRVJJRlkoKS1lZCBp bnN0ZWFkLA0KPiBzaW5jZSB0aGVyZSBhcmVuJ3QgYW55IHBlcmZvcm1hbmNlIGNvbnN0cmFpbnRz Lg0KPiANCj4gPiBBcyBhIG1vcmUgZ2VuZXJpYyBxdWVzdGlvbiAtIGRvIHdlIG5lZWQgdG8gc3Vw cG9ydCBMQ09SRV9WQVIgZm9yIGRsb3BlbigpcyB0aGF0IGNvdWxkIGhhcHBlbiBhZnRlciBydGVf ZWFsX2luaXQoKQ0KPiA+IGlzIGNhbGxlZCBhbmQgTENPUkUgdGhyZWFkcyB3ZXJlIGNyZWF0ZWQ/ DQo+IA0KPiBZZXMsIGFsbG9jYXRpb25zIGFmdGVyIHJ0ZV9lYWxfaW5pdCgpIChjYXVzZWQgYnkg ZGxvcGVuKCkgb3Igb3RoZXJ3aXNlKQ0KPiBtdXN0IGJlIGFsbG93ZWQgaW1vLCBhbmQgYXJlIGFs bG93ZWQuIE90aGVyd2lzZSBhcHBsaWNhdGlvbnMgc2l0dGluZyBvbg0KPiB0b3Agb2YgRFBESyBj YW4ndCB1c2UgdGhpcyBmYWNpbGl0eS4NCj4gDQo+ID4gQmVjYXVzZSwgaWYgbm8sIHRoZW4gd2Ug cHJvYmFibHkgY2FuIG1ha2UgdGhpcyBjb25zdHJ1Y3Rpb24gbXVjaCBtb3JlIGZsZXhpYmxlOg0K PiA+IG9uZSBidWZmZXIgcGVyIExDT1JFLCBhbGxvY2F0ZSBvbiBkZW1hbmQsIGV0Yy4NCj4gPg0K PiANCj4gT24tZGVtYW5kIGFsbG9jYXRpb25zIGFyZSBhbHJlYWR5IHN1cHBvcnRlZCwgYnV0IG9u ZSBjYW4ndCBkbyBmcmVlKCkuDQo+IFRoYXQncyB3aHkgSSd2ZSBjYWxsZWQgd2hhdCB0aGlzIG1v ZHVsZSBwcm92aWRlICJzdGF0aWMgYWxsb2NhdGlvbiIsDQo+IHdoaWxlIGl0IG1heSBiZSBtb3Jl IGFwcHJvcHJpYXRlbHkgZGVzY3JpYmVkIGFzICJkeW5hbWljIGFsbG9jYXRpb24NCj4gd2l0aG91 dCBkZWFsbG9jYXRpb24iLg0KPiANCj4gIlRydWUiIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24g b2YgcGVyLWxjb3JlIG1lbW9yeSB3b3VsZCBiZSB2ZXJ5DQo+IHVzZWZ1bCwgYnV0IGlzIGFuIGVu dGlyZWx5IGRpZmZlcmVudCBiZWFzdCBpbiB0ZXJtcyBvZiBjb21wbGV4aXR5IGFuZA0KPiAoaWYg dG8gYmUgdXNhYmxlIGluIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBmYXN0IHBhdGgpIHBlcmZvcm1h bmNlDQo+IHJlcXVpcmVtZW50cy4NCj4gDQo+ICJUcnVlIiBkeW5hbWljIG1lbW9yeSBhbGxvY2F0 aW9uIHdvdWxkIGFsc28gcmVzdWx0IGluIHNvbWV0aGluZyBsZXNzDQo+IGNvbXBhY3QgKGF0IGxl YXN0IGlmIHlvdSB1c2UgdGhlIHVzdWFsIHBhdHRlcm4gd2l0aCBhIHBlci1vYmplY3QgaGVhcA0K PiBoZWFkZXIpLg0KPiANCj4gPj4gKwkJUlRFX1ZFUklGWShsY29yZV9idWZmZXIgIT0gTlVMTCk7 DQo+ID4+ICsNCj4gPj4gKwkJb2Zmc2V0ID0gMDsNCj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4gKwlo YW5kbGUgPSBSVEVfUFRSX0FERChsY29yZV9idWZmZXIsIG9mZnNldCk7DQo+ID4+ICsNCj4gPj4g KwlvZmZzZXQgKz0gc2l6ZTsNCj4gPj4gKw0KPiA+PiArCVJURV9MQ09SRV9WQVJfRk9SRUFDSF9W QUxVRSh2YWx1ZSwgaGFuZGxlKQ0KPiA+PiArCQltZW1zZXQodmFsdWUsIDAsIHNpemUpOw0KPiA+ PiArDQo+ID4+ICsJRUFMX0xPRyhERUJVRywgIkFsbG9jYXRlZCAlIlBSSXVQVFIiIGJ5dGVzIG9m IHBlci1sY29yZSBkYXRhIHdpdGggYSAiDQo+ID4+ICsJCSIlIlBSSXVQVFIiLWJ5dGUgYWxpZ25t ZW50Iiwgc2l6ZSwgYWxpZ24pOw0KPiA+PiArDQo+ID4+ICsJcmV0dXJuIGhhbmRsZTsNCj4gPj4g K30NCj4gPj4gKw0KPiA+PiArdm9pZCAqDQo+ID4+ICtydGVfbGNvcmVfdmFyX2FsbG9jKHNpemVf dCBzaXplLCBzaXplX3QgYWxpZ24pDQo+ID4+ICt7DQo+ID4+ICsJLyogSGF2aW5nIHRoZSBwZXIt bGNvcmUgYnVmZmVyIHNpemUgYWxpZ25lZCBvbiBjYWNoZSBsaW5lcw0KPiA+PiArCSAqIGFzc3Vy ZXMgYXMgd2VsbCBhcyBoYXZpbmcgdGhlIGJhc2UgcG9pbnRlciBhbGlnbmVkIG9uIGNhY2hlDQo+ ID4+ICsJICogc2l6ZSBhc3N1cmVzIHRoYXQgYWxpZ25lZCBvZmZzZXRzIGFsc28gdHJhbnNsYXRl IHRvIGFsaXBnbmVkDQo+ID4+ICsJICogcG9pbnRlcnMgYWNyb3NzIGFsbCB2YWx1ZXMuDQo+ID4+ ICsJICovDQo+ID4+ICsJUlRFX0JVSUxEX0JVR19PTihSVEVfTUFYX0xDT1JFX1ZBUiAlIFJURV9D QUNIRV9MSU5FX1NJWkUgIT0gMCk7DQo+ID4+ICsJUlRFX0FTU0VSVChhbGlnbiA8PSBSVEVfQ0FD SEVfTElORV9TSVpFKTsNCj4gPj4gKwlSVEVfQVNTRVJUKHNpemUgPD0gUlRFX01BWF9MQ09SRV9W QVIpOw0KPiA+PiArDQo+ID4+ICsJLyogJzAnIG1lYW5zIGFza2luZyBmb3Igd29yc3QtY2FzZSBh bGlnbm1lbnQgcmVxdWlyZW1lbnRzICovDQo+ID4+ICsJaWYgKGFsaWduID09IDApDQo+ID4+ICsJ CWFsaWduID0gYWxpZ25vZihtYXhfYWxpZ25fdCk7DQo+ID4+ICsNCj4gPj4gKwlSVEVfQVNTRVJU KHJ0ZV9pc19wb3dlcl9vZl8yKGFsaWduKSk7DQo+ID4+ICsNCj4gPj4gKwlyZXR1cm4gbGNvcmVf dmFyX2FsbG9jKHNpemUsIGFsaWduKTsNCj4gPj4gK30NCg==