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 3EE38459B2; Mon, 16 Sep 2024 19:39:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 11B0E40ED9; Mon, 16 Sep 2024 19:39:20 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 66E6740E37 for ; Mon, 16 Sep 2024 19:39:18 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 3BFDA20E4B; Mon, 16 Sep 2024 19:39:18 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v4 1/7] eal: add static per-lcore memory allocation facility Date: Mon, 16 Sep 2024 19:39:13 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9F6EF@smartserver.smartshare.dk> In-Reply-To: <23d1b3c5828546128b9ed21e98ac1ae1@huawei.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v4 1/7] eal: add static per-lcore memory allocation facility Thread-Index: AQHbCCfu/ChzCKfo7k645pI+U0QOKbJabPRggAA+SNA= References: <20240912084429.703405-2-mattias.ronnblom@ericsson.com><20240916105210.721315-1-mattias.ronnblom@ericsson.com> <20240916105210.721315-2-mattias.ronnblom@ericsson.com> <23d1b3c5828546128b9ed21e98ac1ae1@huawei.com> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Konstantin Ananyev" , =?UTF-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , Cc: , "Stephen Hemminger" , "Konstantin Ananyev" , "David Marchand" , "Jerin Jacob" 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 PiBGcm9tOiBLb25zdGFudGluIEFuYW55ZXYgW21haWx0bzprb25zdGFudGluLmFuYW55ZXZAaHVh d2VpLmNvbV0NCj4gU2VudDogTW9uZGF5LCAxNiBTZXB0ZW1iZXIgMjAyNCAxNi4wMg0KPiANCj4g PiBJbnRyb2R1Y2UgRFBESyBwZXItbGNvcmUgaWQgdmFyaWFibGVzLCBvciBsY29yZSB2YXJpYWJs ZXMgZm9yIHNob3J0Lg0KPiA+DQo+ID4gQW4gbGNvcmUgdmFyaWFibGUgaGFzIG9uZSB2YWx1ZSBm b3IgZXZlcnkgY3VycmVudCBhbmQgZnV0dXJlIGxjb3JlDQo+ID4gaWQtZXF1aXBwZWQgdGhyZWFk Lg0KPiA+DQo+ID4gVGhlIHByaW1hcnkgPHJ0ZV9sY29yZV92YXIuaD4gdXNlIGNhc2UgaXMgZm9y IHN0YXRpY2FsbHkgYWxsb2NhdGluZw0KPiA+IHNtYWxsLCBmcmVxdWVudGx5LWFjY2Vzc2VkIGRh dGEgc3RydWN0dXJlcywgZm9yIHdoaWNoIG9uZSBpbnN0YW5jZQ0KPiA+IHNob3VsZCBleGlzdCBm b3IgZWFjaCBsY29yZS4NCj4gPg0KPiA+IExjb3JlIHZhcmlhYmxlcyBhcmUgc2ltaWxhciB0byB0 aHJlYWQtbG9jYWwgc3RvcmFnZSAoVExTLCBlLmcuLCBDMTENCj4gPiBfVGhyZWFkX2xvY2FsKSwg YnV0IGRlY291cGxpbmcgdGhlIHZhbHVlcycgbGlmZSB0aW1lIHdpdGggdGhhdCBvZiB0aGUNCj4g PiB0aHJlYWRzLg0KPiA+DQo+ID4gTGNvcmUgdmFyaWFibGVzIGFyZSBhbHNvIHNpbWlsYXIgaW4g dGVybXMgb2YgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieQ0KPiA+IEZyZWVCU0Qga2VybmVsJ3Mg RFBDUFVfKigpIGZhbWlseSBvZiBtYWNyb3MgYW5kIHRoZSBhc3NvY2lhdGVkDQo+ID4gYnVpbGQt dGltZSBtYWNoaW5lcnkuIERQQ1BVIHVzZXMgbGlua2VyIHNjcmlwdHMsIHdoaWNoIGVmZmVjdGl2 ZWx5DQo+ID4gcHJldmVudHMgdGhlIHJldXNlIG9mIGl0cywgb3RoZXJ3aXNlIHNlZW1pbmdseSB2 aWFibGUsIGFwcHJvYWNoLg0KPiA+DQo+ID4gVGhlIGN1cnJlbnRseS1wcmV2YWlsaW5nIHdheSB0 byBzb2x2ZSB0aGUgc2FtZSBwcm9ibGVtIGFzIGxjb3JlDQo+ID4gdmFyaWFibGVzIGlzIHRvIGtl ZXAgYSBtb2R1bGUncyBwZXItbGNvcmUgZGF0YSBhcyBSVEVfTUFYX0xDT1JFLXNpemVkDQo+ID4g YXJyYXkgb2YgY2FjaGUtYWxpZ25lZCwgUlRFX0NBQ0hFX0dVQVJEZWQgc3RydWN0cy4gVGhlIGJl bmVmaXQgb2YNCj4gPiBsY29yZSB2YXJpYWJsZXMgb3ZlciB0aGlzIGFwcHJvYWNoIGlzIHRoYXQg ZGF0YSByZWxhdGVkIHRvIHRoZSBzYW1lDQo+ID4gbGNvcmUgbm93IGlzIGNsb3NlIChzcGF0aWFs bHksIGluIG1lbW9yeSksIHJhdGhlciB0aGFuIGRhdGEgdXNlZCBieQ0KPiA+IHRoZSBzYW1lIG1v ZHVsZSwgd2hpY2ggaW4gdHVybiBhdm9pZCBleGNlc3NpdmUgdXNlIG9mIHBhZGRpbmcsDQo+ID4g cG9sbHV0aW5nIGNhY2hlcyB3aXRoIHVudXNlZCBkYXRhLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1i eTogTWF0dGlhcyBSw7ZubmJsb20gPG1hdHRpYXMucm9ubmJsb21AZXJpY3Nzb24uY29tPg0KPiA+ IEFja2VkLWJ5OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiAN Cj4gTEdUTSBpbiBnZW5lcmFsLCBmZXcgc21hbGwgcXVlc3Rpb25zIChtb3N0bHkgbml0cyksIHNl ZSBiZWxvdy4NCj4gDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2xpYi9lYWwvY29tbW9u L2VhbF9jb21tb25fbGNvcmVfdmFyLmMNCj4gPiBAQCAtMCwwICsxLDc4IEBADQo+ID4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29weXJpZ2h0KGMp IDIwMjQgRXJpY3Nzb24gQUINCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8aW50dHlw ZXMuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiA+ICsNCj4gPiArI2lmZGVmIFJURV9F WEVDX0VOVl9XSU5ET1dTDQo+ID4gKyNpbmNsdWRlIDxtYWxsb2MuaD4NCj4gPiArI2VuZGlmDQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Rl YnVnLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8 cnRlX2xjb3JlX3Zhci5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImVhbF9wcml2YXRlLmgiDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIExDT1JFX0JVRkZFUl9TSVpFIChSVEVfTUFYX0xDT1JFX1ZBUiAq IFJURV9NQVhfTENPUkUpDQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCAqbGNvcmVfYnVmZmVyOw0K PiA+ICtzdGF0aWMgc2l6ZV90IG9mZnNldCA9IFJURV9NQVhfTENPUkVfVkFSOw0KPiA+ICsNCj4g PiArc3RhdGljIHZvaWQgKg0KPiA+ICtsY29yZV92YXJfYWxsb2Moc2l6ZV90IHNpemUsIHNpemVf dCBhbGlnbikNCj4gPiArew0KPiA+ICsJdm9pZCAqaGFuZGxlOw0KPiA+ICsJdm9pZCAqdmFsdWU7 DQo+ID4gKw0KPiA+ICsJb2Zmc2V0ID0gUlRFX0FMSUdOX0NFSUwob2Zmc2V0LCBhbGlnbik7DQo+ ID4gKw0KPiA+ICsJaWYgKG9mZnNldCArIHNpemUgPiBSVEVfTUFYX0xDT1JFX1ZBUikgew0KPiA+ ICsjaWZkZWYgUlRFX0VYRUNfRU5WX1dJTkRPV1MNCj4gPiArCQlsY29yZV9idWZmZXIgPSBfYWxp Z25lZF9tYWxsb2MoTENPUkVfQlVGRkVSX1NJWkUsDQo+ID4gKwkJCQkJICAgICAgIFJURV9DQUNI RV9MSU5FX1NJWkUpOw0KPiA+ICsjZWxzZQ0KPiA+ICsJCWxjb3JlX2J1ZmZlciA9IGFsaWduZWRf YWxsb2MoUlRFX0NBQ0hFX0xJTkVfU0laRSwNCj4gPiArCQkJCQkgICAgIExDT1JFX0JVRkZFUl9T SVpFKTsNCj4gPiArI2VuZGlmDQo+IA0KPiBEb24ndCByZW1lbWJlciBkaWQgdGhhdCBxdWVzdGlv biBhbHJlYWR5IGFyaXNlIG9yIG5vdDoNCj4gRm9yIGRlYnVnZ2luZyBhbmQgaGVhbHRoLWNoZWNr aW5nIHB1cnBvc2VzIC0gd291bGQgaXQgbWFrZSBzZW5zZSB0byBsaW5rDQo+IGFsbA0KPiBsY29y ZV9idWZmZXIgdmFsdWVzIGludG8gYSBsaW5rZWQgbGlzdD8NCj4gU28gdXNlci9kZXZlbG9wZXIv c29tZSB0b29sIGNhbiB3YWxrIG92ZXIgaXQgdG8gY2hlY2sgdGhhdCBwcm92aWRlZA0KPiBoYW5k bGUgdmFsdWUNCj4gaXMgcmVhbGx5IGEgdmFsaWQgbGNvcmVfdmFyLCBldGMuDQoNCk5pY2UgaWRl YS4NClN1Y2ggYSBsaXN0LCBhbG9uZyB3aXRoIGFuIGFjY29tcGFueWluZyBkdW1wIGZ1bmN0aW9u IGNhbiBiZSBhZGRlZCBsYXRlci4NCg0KPiANCj4gPiArCQlSVEVfVkVSSUZZKGxjb3JlX2J1ZmZl ciAhPSBOVUxMKTsNCj4gPiArDQo+ID4gKwkJb2Zmc2V0ID0gMDsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwloYW5kbGUgPSBSVEVfUFRSX0FERChsY29yZV9idWZmZXIsIG9mZnNldCk7DQo+ID4gKw0K PiA+ICsJb2Zmc2V0ICs9IHNpemU7DQo+ID4gKw0KPiA+ICsJUlRFX0xDT1JFX1ZBUl9GT1JFQUNI X1ZBTFVFKHZhbHVlLCBoYW5kbGUpDQo+ID4gKwkJbWVtc2V0KHZhbHVlLCAwLCBzaXplKTsNCj4g PiArDQo+ID4gKwlFQUxfTE9HKERFQlVHLCAiQWxsb2NhdGVkICUiUFJJdVBUUiIgYnl0ZXMgb2Yg cGVyLWxjb3JlIGRhdGEgd2l0aA0KPiBhICINCj4gPiArCQkiJSJQUkl1UFRSIi1ieXRlIGFsaWdu bWVudCIsIHNpemUsIGFsaWduKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gaGFuZGxlOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICt2b2lkICoNCj4gPiArcnRlX2xjb3JlX3Zhcl9hbGxvYyhzaXplX3Qgc2l6 ZSwgc2l6ZV90IGFsaWduKQ0KPiA+ICt7DQo+ID4gKwkvKiBIYXZpbmcgdGhlIHBlci1sY29yZSBi dWZmZXIgc2l6ZSBhbGlnbmVkIG9uIGNhY2hlIGxpbmVzDQo+ID4gKwkgKiBhc3N1cmVzIGFzIHdl bGwgYXMgaGF2aW5nIHRoZSBiYXNlIHBvaW50ZXIgYWxpZ25lZCBvbiBjYWNoZQ0KPiA+ICsJICog c2l6ZSBhc3N1cmVzIHRoYXQgYWxpZ25lZCBvZmZzZXRzIGFsc28gdHJhbnNsYXRlIHRvIGFsaXBn bmVkDQo+ID4gKwkgKiBwb2ludGVycyBhY3Jvc3MgYWxsIHZhbHVlcy4NCj4gPiArCSAqLw0KPiA+ ICsJUlRFX0JVSUxEX0JVR19PTihSVEVfTUFYX0xDT1JFX1ZBUiAlIFJURV9DQUNIRV9MSU5FX1NJ WkUgIT0gMCk7DQo+ID4gKwlSVEVfQVNTRVJUKGFsaWduIDw9IFJURV9DQUNIRV9MSU5FX1NJWkUp Ow0KPiA+ICsJUlRFX0FTU0VSVChzaXplIDw9IFJURV9NQVhfTENPUkVfVkFSKTsNCj4gPiArDQo+ ID4gKwkvKiAnMCcgbWVhbnMgYXNraW5nIGZvciB3b3JzdC1jYXNlIGFsaWdubWVudCByZXF1aXJl bWVudHMgKi8NCj4gPiArCWlmIChhbGlnbiA9PSAwKQ0KPiA+ICsJCWFsaWduID0gYWxpZ25vZiht YXhfYWxpZ25fdCk7DQo+ID4gKw0KPiA+ICsJUlRFX0FTU0VSVChydGVfaXNfcG93ZXJfb2ZfMihh bGlnbikpOw0KPiA+ICsNCj4gPiArCXJldHVybiBsY29yZV92YXJfYWxsb2Moc2l6ZSwgYWxpZ24p Ow0KPiA+ICt9DQo+IA0KPiAuLi4uDQo+IA0KPiA+IGRpZmYgLS1naXQgYS9saWIvZWFsL2luY2x1 ZGUvcnRlX2xjb3JlX3Zhci5oDQo+IGIvbGliL2VhbC9pbmNsdWRlL3J0ZV9sY29yZV92YXIuaA0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZWMzYWI3MTRh OA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9saWIvZWFsL2luY2x1ZGUvcnRlX2xjb3Jl X3Zhci5oDQo+IA0KPiAuLi4NCj4gDQo+ID4gKy8qKg0KPiA+ICsgKiBHaXZlbiB0aGUgbGNvcmUg dmFyaWFibGUgdHlwZSwgcHJvZHVjZXMgdGhlIHR5cGUgb2YgdGhlIGxjb3JlDQo+ID4gKyAqIHZh cmlhYmxlIGhhbmRsZS4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgUlRFX0xDT1JFX1ZBUl9IQU5E TEVfVFlQRSh0eXBlKQkJXA0KPiA+ICsJdHlwZSAqDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog RGVmaW5lIGFuIGxjb3JlIHZhcmlhYmxlIGhhbmRsZS4NCj4gPiArICoNCj4gPiArICogVGhpcyBt YWNybyBkZWZpbmVzIGEgdmFyaWFibGUgd2hpY2ggaXMgdXNlZCBhcyBhIGhhbmRsZSB0byBhY2Nl c3MNCj4gPiArICogdGhlIHZhcmlvdXMgaW5zdGFuY2VzIG9mIGEgcGVyLWxjb3JlIGlkIHZhcmlh YmxlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgYWltIHdpdGggdGhpcyBtYWNybyBpcyB0byBtYWtl IGNsZWFyIGF0IHRoZSBwb2ludCBvZg0KPiA+ICsgKiBkZWNsYXJhdGlvbiB0aGF0IHRoaXMgaXMg YW4gbGNvcmUgaGFuZGxlLCByYXRoZXIgdGhhbiBhIHJlZ3VsYXINCj4gPiArICogcG9pbnRlci4N Cj4gPiArICoNCj4gPiArICogQWRkIEBiIHN0YXRpYyBhcyBhIHByZWZpeCBpbiBjYXNlIHRoZSBs Y29yZSB2YXJpYWJsZSBpcyBvbmx5IHRvIGJlDQo+ID4gKyAqIGFjY2Vzc2VkIGZyb20gYSBwYXJ0 aWN1bGFyIHRyYW5zbGF0aW9uIHVuaXQuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9MQ09S RV9WQVJfSEFORExFKHR5cGUsIG5hbWUpCVwNCj4gPiArCVJURV9MQ09SRV9WQVJfSEFORExFX1RZ UEUodHlwZSkgbmFtZQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEFsbG9jYXRlIHNwYWNlIGZv ciBhbiBsY29yZSB2YXJpYWJsZSwgYW5kIGluaXRpYWxpemUgaXRzIGhhbmRsZS4NCj4gPiArICoN Cj4gPiArICogVGhlIHZhbHVlcyBvZiB0aGUgbGNvcmUgdmFyaWFibGUgYXJlIGluaXRpYWxpemVk IHRvIHplcm8uDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJfQUxMT0NfU0la RV9BTElHTihoYW5kbGUsIHNpemUsIGFsaWduKQlcDQo+ID4gKwloYW5kbGUgPSBydGVfbGNvcmVf dmFyX2FsbG9jKHNpemUsIGFsaWduKQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEFsbG9jYXRl IHNwYWNlIGZvciBhbiBsY29yZSB2YXJpYWJsZSwgYW5kIGluaXRpYWxpemUgaXRzIGhhbmRsZSwN Cj4gPiArICogd2l0aCB2YWx1ZXMgYWxpZ25lZCBmb3IgYW55IHR5cGUgb2Ygb2JqZWN0Lg0KPiA+ ICsgKg0KPiA+ICsgKiBUaGUgdmFsdWVzIG9mIHRoZSBsY29yZSB2YXJpYWJsZSBhcmUgaW5pdGlh bGl6ZWQgdG8gemVyby4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgUlRFX0xDT1JFX1ZBUl9BTExP Q19TSVpFKGhhbmRsZSwgc2l6ZSkJXA0KPiA+ICsJUlRFX0xDT1JFX1ZBUl9BTExPQ19TSVpFX0FM SUdOKGhhbmRsZSwgc2l6ZSwgMCkNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBBbGxvY2F0ZSBz cGFjZSBmb3IgYW4gbGNvcmUgdmFyaWFibGUgb2YgdGhlIHNpemUgYW5kIGFsaWdubWVudA0KPiBy ZXF1aXJlbWVudHMNCj4gPiArICogc3VnZ2VzdGVkIGJ5IHRoZSBoYW5kbGUgcG9pbnRlciB0eXBl LCBhbmQgaW5pdGlhbGl6ZSBpdHMgaGFuZGxlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgdmFsdWVz IG9mIHRoZSBsY29yZSB2YXJpYWJsZSBhcmUgaW5pdGlhbGl6ZWQgdG8gemVyby4NCj4gPiArICov DQo+ID4gKyNkZWZpbmUgUlRFX0xDT1JFX1ZBUl9BTExPQyhoYW5kbGUpCQkJCQlcDQo+ID4gKwlS VEVfTENPUkVfVkFSX0FMTE9DX1NJWkVfQUxJR04oaGFuZGxlLCBzaXplb2YoKihoYW5kbGUpKSwJ XA0KPiA+ICsJCQkJICAgICAgIGFsaWdub2YodHlwZW9mKCooaGFuZGxlKSkpKQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIEFsbG9jYXRlIGFuIGV4cGxpY2l0bHktc2l6ZWQsIGV4cGxpY2l0bHkt YWxpZ25lZCBsY29yZSB2YXJpYWJsZSBieQ0KPiA+ICsgKiBtZWFucyBvZiBhIEByZWYgUlRFX0lO SVQgY29uc3RydWN0b3IuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSB2YWx1ZXMgb2YgdGhlIGxjb3Jl IHZhcmlhYmxlIGFyZSBpbml0aWFsaXplZCB0byB6ZXJvLg0KPiA+ICsgKi8NCj4gPiArI2RlZmlu ZSBSVEVfTENPUkVfVkFSX0lOSVRfU0laRV9BTElHTihuYW1lLCBzaXplLCBhbGlnbikJCVwNCj4g PiArCVJURV9JTklUKHJ0ZV9sY29yZV92YXJfaW5pdF8gIyMgbmFtZSkJCQkJXA0KPiA+ICsJewkJ CQkJCQkJXA0KPiA+ICsJCVJURV9MQ09SRV9WQVJfQUxMT0NfU0laRV9BTElHTihuYW1lLCBzaXpl LCBhbGlnbik7CVwNCj4gPiArCX0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBBbGxvY2F0ZSBh biBleHBsaWNpdGx5LXNpemVkIGxjb3JlIHZhcmlhYmxlIGJ5IG1lYW5zIG9mIGEgQHJlZg0KPiA+ ICsgKiBSVEVfSU5JVCBjb25zdHJ1Y3Rvci4NCj4gPiArICoNCj4gPiArICogVGhlIHZhbHVlcyBv ZiB0aGUgbGNvcmUgdmFyaWFibGUgYXJlIGluaXRpYWxpemVkIHRvIHplcm8uDQo+ID4gKyAqLw0K PiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJfSU5JVF9TSVpFKG5hbWUsIHNpemUpCQlcDQo+ID4g KwlSVEVfTENPUkVfVkFSX0lOSVRfU0laRV9BTElHTihuYW1lLCBzaXplLCAwKQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIEFsbG9jYXRlIGFuIGxjb3JlIHZhcmlhYmxlIGJ5IG1lYW5zIG9mIGEg QHJlZiBSVEVfSU5JVA0KPiBjb25zdHJ1Y3Rvci4NCj4gPiArICoNCj4gPiArICogVGhlIHZhbHVl cyBvZiB0aGUgbGNvcmUgdmFyaWFibGUgYXJlIGluaXRpYWxpemVkIHRvIHplcm8uDQo+ID4gKyAq Lw0KPiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJfSU5JVChuYW1lKQkJCQkJXA0KPiA+ICsJUlRF X0lOSVQocnRlX2xjb3JlX3Zhcl9pbml0XyAjIyBuYW1lKQkJCQlcDQo+ID4gKwl7CQkJCQkJCQlc DQo+ID4gKwkJUlRFX0xDT1JFX1ZBUl9BTExPQyhuYW1lKTsJCQkJXA0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIEdldCB2b2lkIHBvaW50ZXIgdG8gbGNvcmUgdmFyaWFibGUgaW5z dGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkDQo+ID4gKyAqIGxjb3JlIGlkLg0KPiA+ICsgKg0KPiA+ ICsgKiBAcGFyYW0gbGNvcmVfaWQNCj4gPiArICogICBUaGUgbGNvcmUgaWQgc3BlY2lmeWluZyB3 aGljaCBvZiB0aGUgQGMgUlRFX01BWF9MQ09SRSB2YWx1ZQ0KPiA+ICsgKiAgIGluc3RhbmNlcyBz aG91bGQgYmUgYWNjZXNzZWQuIFRoZSBsY29yZSBpZCBuZWVkIG5vdCBiZSB2YWxpZA0KPiA+ICsg KiAgIChlLmcuLCBtYXkgYmUgQHJlZiBMQ09SRV9JRF9BTlkpLCBidXQgaW4gc3VjaCBhIGNhc2Us IHRoZQ0KPiBwb2ludGVyDQo+ID4gKyAqICAgaXMgYWxzbyBub3QgdmFsaWQgKGFuZCB0aHVzIHNo b3VsZCBub3QgYmUgZGVyZWZlcmVuY2VkKS4NCj4gPiArICogQHBhcmFtIGhhbmRsZQ0KPiA+ICsg KiAgIFRoZSBsY29yZSB2YXJpYWJsZSBoYW5kbGUuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5s aW5lIHZvaWQgKg0KPiA+ICtydGVfbGNvcmVfdmFyX2xjb3JlX3B0cih1bnNpZ25lZCBpbnQgbGNv cmVfaWQsIHZvaWQgKmhhbmRsZSkNCj4gPiArew0KPiA+ICsJcmV0dXJuIFJURV9QVFJfQUREKGhh bmRsZSwgbGNvcmVfaWQgKiBSVEVfTUFYX0xDT1JFX1ZBUik7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBHZXQgcG9pbnRlciB0byBsY29yZSB2YXJpYWJsZSBpbnN0YW5jZSB3aXRo IHRoZSBzcGVjaWZpZWQgbGNvcmUNCj4gaWQuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBsY29y ZV9pZA0KPiA+ICsgKiAgIFRoZSBsY29yZSBpZCBzcGVjaWZ5aW5nIHdoaWNoIG9mIHRoZSBAYyBS VEVfTUFYX0xDT1JFIHZhbHVlDQo+ID4gKyAqICAgaW5zdGFuY2VzIHNob3VsZCBiZSBhY2Nlc3Nl ZC4gVGhlIGxjb3JlIGlkIG5lZWQgbm90IGJlIHZhbGlkDQo+ID4gKyAqICAgKGUuZy4sIG1heSBi ZSBAcmVmIExDT1JFX0lEX0FOWSksIGJ1dCBpbiBzdWNoIGEgY2FzZSwgdGhlDQo+IHBvaW50ZXIN Cj4gPiArICogICBpcyBhbHNvIG5vdCB2YWxpZCAoYW5kIHRodXMgc2hvdWxkIG5vdCBiZSBkZXJl ZmVyZW5jZWQpLg0KPiA+ICsgKiBAcGFyYW0gaGFuZGxlDQo+ID4gKyAqICAgVGhlIGxjb3JlIHZh cmlhYmxlIGhhbmRsZS4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgUlRFX0xDT1JFX1ZBUl9MQ09S RV9WQUxVRShsY29yZV9pZCwgaGFuZGxlKQkJCVwNCj4gPiArCSgodHlwZW9mKGhhbmRsZSkpcnRl X2xjb3JlX3Zhcl9sY29yZV9wdHIobGNvcmVfaWQsIGhhbmRsZSkpDQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogR2V0IHBvaW50ZXIgdG8gbGNvcmUgdmFyaWFibGUgaW5zdGFuY2Ugb2YgdGhlIGN1 cnJlbnQgdGhyZWFkLg0KPiA+ICsgKg0KPiA+ICsgKiBNYXkgb25seSBiZSB1c2VkIGJ5IEVBTCB0 aHJlYWRzIGFuZCByZWdpc3RlcmVkIG5vbi1FQUwgdGhyZWFkcy4NCj4gPiArICovDQo+ID4gKyNk ZWZpbmUgUlRFX0xDT1JFX1ZBUl9WQUxVRShoYW5kbGUpIFwNCj4gPiArCVJURV9MQ09SRV9WQVJf TENPUkVfVkFMVUUocnRlX2xjb3JlX2lkKCksIGhhbmRsZSkNCj4gDQo+IFdvdWxkIGl0IG1ha2Ug c2Vuc2UgdG8gY2hlY2sgdGhhdCBydGVfbGNvcmVfaWQoKSAhPSAgTENPUkVfSURfQU5ZPw0KPiBB ZnRlciBhbGwgaWYgcGVvcGxlIGRvIG5vdCB3YW50IHRoaXMgZXh0cmEgY2hlY2ssIHRoZXkgY2Fu IHByb2JhYmx5IHVzZQ0KPiBSVEVfTENPUkVfVkFSX0xDT1JFX1ZBTFVFKHJ0ZV9sY29yZV9pZCgp LCBoYW5kbGUpDQo+IGV4cGxpY2l0bHkuDQoNCk5vdCBnZW5lcmFsbHkuIEkgcHJlZmVyIGtlZXBp bmcgaXQgYnJpZWYuDQpXZSBjb3VsZCBhZGQgYSBfU0FGRSB2YXJpYW50IHdpdGggdGhpcyBleHRy YSBjaGVjaywgbGlrZSBMSVNUX0ZPUkVBQ0ggaGFzIExJU1RfRk9SRUFDSF9TQUZFIChhbHRob3Vn aCBmb3IgYSBkaWZmZXJlbnQgcHVycG9zZSkuDQoNCkNvbWUgdG8gdGhpbmsgb2YgaXQ6IEluIHRo ZSBuYW1lIG9mIGJyZXZpdHksIGNvbnNpZGVyIHJlbmFtaW5nIFJURV9MQ09SRV9WQVJfVkFMVUUg dG8gUlRFX0xDT1JFX1ZBUi4gKEFuZCBSVEVfTENPUkVfVkFSX0ZPUkVBQ0hfVkFMVUUgdG8gUlRF X0xDT1JFX1ZBUl9GT1JFQUNILikgV2Ugd2FudCB0byBzZWUgdGhlc2UgZXZlcnl3aGVyZSBpbiB0 aGUgY29kZS4NCg0KPiANCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBJdGVyYXRlIG92ZXIgZWFj aCBsY29yZSBpZCdzIHZhbHVlIGZvciBhbiBsY29yZSB2YXJpYWJsZS4NCj4gPiArICoNCj4gPiAr ICogQHBhcmFtIHZhbHVlDQo+ID4gKyAqICAgQSBwb2ludGVyIHN1Y2Nlc3NpdmVseSBzZXQgdG8g cG9pbnQgdG8gbGNvcmUgdmFyaWFibGUgdmFsdWUNCj4gPiArICogICBjb3JyZXNwb25kaW5nIHRv IGV2ZXJ5IGxjb3JlIGlkICh1cCB0byBAYyBSVEVfTUFYX0xDT1JFKS4NCj4gPiArICogQHBhcmFt IGhhbmRsZQ0KPiA+ICsgKiAgIFRoZSBsY29yZSB2YXJpYWJsZSBoYW5kbGUuDQo+ID4gKyAqLw0K PiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJfRk9SRUFDSF9WQUxVRSh2YWx1ZSwgaGFuZGxlKQkJ CVwNCj4gPiArCWZvciAodW5zaWduZWQgaW50IGxjb3JlX2lkID0JCQkJCVwNCj4gPiArCQkgICAg ICgoKHZhbHVlKSA9IFJURV9MQ09SRV9WQVJfTENPUkVfVkFMVUUoMCwgaGFuZGxlKSksIDApOw0K PiBcDQo+ID4gKwkgICAgIGxjb3JlX2lkIDwgUlRFX01BWF9MQ09SRTsJCQkJCVwNCj4gPiArCSAg ICAgbGNvcmVfaWQrKywgKHZhbHVlKSA9IFJURV9MQ09SRV9WQVJfTENPUkVfVkFMVUUobGNvcmVf aWQsDQo+IGhhbmRsZSkpDQo+IA0KPiBNaWdodCBiZSBhIGJpdCBiZXR0ZXIgKGFuZCBzYWZlcikg dG8gbWFrZSBsY29yZV9pZCBhIG1hY3JvIHBhcmFtZXRlcj8NCj4gSS5FLjoNCj4gZGVmaW5lIFJU RV9MQ09SRV9WQVJfRk9SRUFDSF9WQUxVRSh2YWx1ZSwgaGFuZGxlLCBsY29yZV9pZCkgXA0KPiBm b3IgKChsY29yZV9pZCkgPSAuLi4NCg0KVGhlIHNhbWUgdGhvdWdodCBoYXZlIHN0cnVjayBtZSwg c28gSSBjaGVja2VkIHRoZSBzY29wZSBvZiBsY29yZV9pZC4NClRoZSBzY29wZSBvZiBsY29yZV9p ZCByZW1haW5zIGxpbWl0ZWQgdG8gdGhlIGZvciBsb29wLCBpLmUuIGl0IGlzIGF2YWlsYWJsZSBp bnNpZGUgdGhlIGZvciBsb29wLCBidXQgbm90IGFmdGVyIGl0Lg0KSU1PIHRoaXMgc3VmZmljZXMs IGFuZCBsY29yZV9pZCBkb2Vzbid0IG5lZWQgdG8gYmUgYSBtYWNybyBwYXJhbWV0ZXIuDQpNYXli ZSByZW5hbWluZyBsY29yZV9pZCB0byBfbGNvcmVfaWQgd291bGQgYmUgYW4gaW1wcm92ZW1lbnQs IGlmIGxjb3JlX2lkIGlzIGFscmVhZHkgZGVmaW5lZCBhbmQgdXNlZCBmb3Igb3RoZXIgcHVycG9z ZXMgd2l0aGluIHRoZSBmb3IgbG9vcC4NCg0K