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 DBB5845B12; Fri, 11 Oct 2024 10:09:48 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 71BAF4028B; Fri, 11 Oct 2024 10:09:48 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 41D4E400D5 for ; Fri, 11 Oct 2024 10:09:46 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 15EE1203F3; Fri, 11 Oct 2024 10:09:46 +0200 (CEST) Subject: RE: [PATCH v9 1/7] eal: add static per-lcore memory allocation facility Date: Fri, 11 Oct 2024 10:09:43 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9F7BB@smartserver.smartshare.dk> Content-class: urn:content-classes:message In-Reply-To: <1829355.yIU609i1g2@thomas> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v9 1/7] eal: add static per-lcore memory allocation facility Thread-Index: Adsbo69k9i/9IoaMTtaGEbLEdZemtgABXC+A References: <20241010141349.813088-2-mattias.ronnblom@ericsson.com> <20241010142205.813134-1-mattias.ronnblom@ericsson.com> <20241010142205.813134-2-mattias.ronnblom@ericsson.com> <1829355.yIU609i1g2@thomas> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= X-MimeOLE: Produced By Microsoft Exchange V6.5 To: "Thomas Monjalon" , =?UTF-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= Cc: , , "Stephen Hemminger" , "Konstantin Ananyev" , "David Marchand" , "Jerin Jacob" , "Luka Jankovic" , =?UTF-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "Konstantin Ananyev" , "Chengwen Feng" 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 TWF0dGlhcywNClBsZWFzZSBub3RlIHRoYXQgbW9zdCBvZiBUaG9tYXMnIHF1ZXN0aW9ucyBhcmUg aW4gdGhlIGludGVyZXN0IG9mIHRoZSBnZW5lcmFsIHB1YmxpYywgY29uc2lkZXJlZCByZXF1ZXN0 cyBmb3IgZnVydGhlciBkb2N1bWVudGF0aW9uLg0KDQoNCj4gRG8geW91IGhhdmUgYmVuY2htYXJr cyByZXN1bHRzIG9mIHRoZSBtb2R1bGVzIHVzaW5nIHN1Y2ggdmFyaWFibGVzDQo+IChwb3dlciwg cmFuZG9tLCBzZXJ2aWNlKT8NCj4gSXQgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gY29tcGFyZSB0 aW1lIGVmZmljaWVuY3kgYW5kIG1lbW9yeSB1c2FnZQ0KPiBiZWZvcmUvYWZ0ZXIsIHdpdGggZGlm ZmVyZW50IG51bWJlciBvZiB0aHJlYWRzLg0KDQpJTU8sIHRoZSBtYWluIGJlbmVmaXQgaXMgdGhl IHJlZHVjdGlvbiBvZiB3YXN0ZSBvZiBDUFUgZGF0YSBjYWNoZSAobm8gbmVlZCBmb3IgUlRFX0NB Q0hFX0dVQVJEIGZpbGxlcnMgaW4gcGVyLWxjb3JlIGRhdGEgc3RydWN0dXJlcykuDQoNCk1hdHRp YXMsDQpUaGUgUE1VIGNvdW50ZXJzIGxpYnJhcnkgaXMgdG9vIG5ldywgc28gSSBzdXBwb3NlIHlv dSBjYW5ub3QgeWV0IG1lYXN1cmUgdGhlIHByaW1hcnkgYmVuZWZpdCwgYnV0IG9ubHkgZGVyaXZl ZCBiZW5lZml0cy4NCklmIHlvdSBoYXZlIGFueSBraW5kIG9mIHBlcmYgZGF0YSwgcGxlYXNlIHBy b3ZpZGUgdGhlbS4NCg0KDQo+ID4gTGNvcmUgdmFyaWFibGVzIGFyZSBzaW1pbGFyIHRvIHRocmVh ZC1sb2NhbCBzdG9yYWdlIChUTFMsIGUuZy4sIEMxMQ0KPiA+IF9UaHJlYWRfbG9jYWwpLCBidXQg ZGVjb3VwbGluZyB0aGUgdmFsdWVzJyBsaWZlIHRpbWUgd2l0aCB0aGF0IG9mIHRoZQ0KPiA+IHRo cmVhZHMuDQo+IA0KPiBJbiB3aGljaCBzaXR1YXRpb24gd2UgbmVlZCB2YWx1ZXMgb2YgYSBkZWFk IHRocmVhZD8NCg0KVmFsdWVzIG9mIGRlYWQgdGhyZWFkcyBpcyBub3QgdGhlIGlzc3VlIGhlcmUu DQpUaGlzIGlzOg0KMS4gVExTIHZhcmlhYmxlcyBhcmUgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXpl ZCB3aGVuIEFOWSB0aHJlYWQgaXMgY3JlYXRlZCwgc28gdXNpbmcgVExTIGZvciB2YXJpYWJsZXMg aW5jcmVhc2VzIHRoZSBjb3N0IG9mIGNyZWF0aW5nIG5ldyB0aHJlYWRzLiBUaGlzIGlzIHJlbGV2 YW50IGZvciBhcHBsaWNhdGlvbnMgdGhhdCBmcmVxdWVudGx5IGNyZWF0ZSAoYW5kIGRlc3Ryb3kp IHNob3J0LWxpdmVkIHRocmVhZHMuDQoyLiBUTFMgdmFyaWFibGVzIHVzZXMgbWVtb3J5IGZvciBB TEwgdGhyZWFkcywgcmVnYXJkbGVzcyBpZiB0aG9zZSB0aHJlYWRzIHVzZSB0aGUgVExTIHZhcmlh YmxlcyBvciBub3QuIFRoaXMgaW5jcmVhc2VzIHRoZSBtZW1vcnkgZm9vdHByaW50IGZvciBhcHBs aWNhdGlvbnMgdGhhdCBjcmVhdGUgbWFueSAobG9uZyBsaXZlZCkgdGhyZWFkcy4NCg0KTWF0dGlh czoNClRob21hcycgcXVlc3Rpb24gbWlnaHQgc3RpbGwgYmUgcmVsZXZhbnQuLi4NCklzIHRoZXJl IGFueSBzaXR1YXRpb24gd2hlcmUgdGhlIHZhbHVlcyBvZiB0aGUgbGNvcmUgdmFyaWFibGVzIGFy ZSByZWxldmFudCBhZnRlciB0aGUgdGhyZWFkIGlzIGRlYWQ/DQoNCj4gPiArVmFyaWFibGVzIHdp dGggdGhyZWFkLWxvY2FsIHN0b3JhZ2UgYXJlIGFsbG9jYXRlZCBhdCB0aGUgdGltZSBvZg0KPiA+ ICt0aHJlYWQgY3JlYXRpb24sIGFuZCBleGlzdHMgdW50aWwgdGhlIHRocmVhZCB0ZXJtaW5hdGVz LCBmb3IgZXZlcnkNCj4gPiArdGhyZWFkIGluIHRoZSBwcm9jZXNzLiBPbmx5IHZlcnkgc21hbGwg b2JqZWN0IHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4NCj4gPiArVExTLCBzaW5jZSBsYXJnZSBUTFMg b2JqZWN0cyBzaWduaWZpY2FudGx5IHNsb3dzIGRvd24gdGhyZWFkDQo+IGNyZWF0aW9uDQo+ID4g K2FuZCBtYXkgbmVlZGxlc3NseSBpbmNyZWFzZSBtZW1vcnkgZm9vdHByaW50IGZvciBhcHBsaWNh dGlvbiB0aGF0DQo+IG1ha2UNCj4gPiArZXh0ZW5zaXZlIHVzZSBvZiB1bnJlZ2lzdGVyZWQgdGhy ZWFkcy4NCj4gDQo+IEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb24gd2l0aCBub24tRFBE SyB0aHJlYWRzLg0KDQpUaGUgcmVsYXRpb25zaGlwIGhlcmUgaXMgdGhlIHNhbWUgYXMgSSBkZXNj cmliZWQgYWJvdmU6IFVzaW5nIFRMUyBmb3IgRFBESyB0aHJlYWRzIGFsc28gaGF2ZSBhIGNvc3Qg Zm9yIG5vbi1EUERLIHRocmVhZHMuDQoNCg0KPiBbLi4uXQ0KPiA+ICsjZGVmaW5lIExDT1JFX0JV RkZFUl9TSVpFIChSVEVfTUFYX0xDT1JFX1ZBUiAqIFJURV9NQVhfTENPUkUpDQo+IA0KPiBXaXRo ICNkZWZpbmUgUlRFX01BWF9MQ09SRV9WQVIgMTA0ODU3NiwNCj4gTENPUkVfQlVGRkVSX1NJWkUg Y2FuIGJlIDEwME1CLCByaWdodD8NCg0KTWF0dGlhczoNCllvdSBzaG91bGQgZG9jdW1lbnQgd2hh dCB5b3UgaGF2ZSBleHBsYWluZWQuLi4NClRoaXMgaHVnZSBhbW91bnQgb2YgbWVtb3J5IGlzIG5v dCByZWFsbHkgY29uc3VtZWQsIGJ1dCByZWxpZXMgb24gcGFnaW5nOyBpdCBpcyBvbmx5IGEgbGFy Z2UgdmlydHVhbCBhZGRyZXNzIHNwYWNlLg0KVGhpcyBhbHNvIG1ha2VzIGl0IHNvbWV3aGF0IGFk dmFudGFnZW91cyB0aGF0IHRoZSBsY29yZSB2YXJpYWJsZXMgZG9uJ3QgdXNlIGh1Z2VwYWdlcy4N Cg0KPiA+ICtzdGF0aWMgc2l6ZV90IG9mZnNldCA9IFJURV9NQVhfTENPUkVfVkFSOw0KPiANCj4g QSBjb21tZW50IG1heSBiZSB1c2VmdWwgZm9yIHRoaXMgdmFsdWU6IGl0IHRyaWdnZXJzIHRoZSBm aXJzdCBhbGxvYz8NCg0KTWF0dGlhczoNCklmIHlvdSByZWNhbGwsIEkgYWxzbyBoYWQgYSBoYXJk IHRpbWUgdW5kZXJzdGFuZGluZyB0aGlzIGRlc2lnbiAoaW5zdGVhZCBvZiBzaW1wbHkgY29tcGFy aW5nIGxjb3JlX2J1ZmZlciB0byBOVUxMKS4NClBsZWFzZSBhZGQgYSBjb21tZW50IHRoYXQgdGhp cyBub3Qgb25seSB0cmlnZ2VycyB0aGUgZmlyc3QgYWxsb2NhdGlvbiwgYnV0IGFsc28gYWRkaXRp b25hbCBhbGxvY2F0aW9ucywgaWYgdXNpbmcgYSBsb3Qgb2YgbWVtb3J5IGZvciBsY29yZSB2YXJp YWJsZXMuDQoNCj4gDQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCAqDQo+ID4gK2xjb3JlX3Zhcl9h bGxvYyhzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWduKQ0KPiA+ICt7DQo+ID4gKwl2b2lkICpoYW5k bGU7DQo+ID4gKwl1bnNpZ25lZCBpbnQgbGNvcmVfaWQ7DQo+ID4gKwl2b2lkICp2YWx1ZTsNCj4g PiArDQo+ID4gKwlvZmZzZXQgPSBSVEVfQUxJR05fQ0VJTChvZmZzZXQsIGFsaWduKTsNCj4gPiAr DQo+ID4gKwlpZiAob2Zmc2V0ICsgc2l6ZSA+IFJURV9NQVhfTENPUkVfVkFSKSB7DQo+ID4gKyNp ZmRlZiBSVEVfRVhFQ19FTlZfV0lORE9XUw0KPiA+ICsJCWxjb3JlX2J1ZmZlciA9IF9hbGlnbmVk X21hbGxvYyhMQ09SRV9CVUZGRVJfU0laRSwNCj4gPiArCQkJCQkgICAgICAgUlRFX0NBQ0hFX0xJ TkVfU0laRSk7DQo+ID4gKyNlbHNlDQo+ID4gKwkJbGNvcmVfYnVmZmVyID0gYWxpZ25lZF9hbGxv YyhSVEVfQ0FDSEVfTElORV9TSVpFLA0KPiA+ICsJCQkJCSAgICAgTENPUkVfQlVGRkVSX1NJWkUp Ow0KPiA+ICsjZW5kaWYNCj4gPiArCQlSVEVfVkVSSUZZKGxjb3JlX2J1ZmZlciAhPSBOVUxMKTsN Cj4gDQo+IFBsZWFzZSBubyBwYW5pYyBpbiBhIGxpYi4NCj4gWW91IGNhbiByZXR1cm4gTlVMTC4N Cg0KSSBhZ3JlZSB3aXRoIE1hdHRpYXMgZGVzaWduIGhlcmUuDQpMY29yZSB2YXJpYWJsZXMgYXJl IGxpa2UgUlRFX1BFUl9MQ09SRSB2YXJpYWJsZXMgYW5kIHNpbXBsZSAic3RhdGljIiB2YXJpYWJs ZXMuDQpJZiB0aGUgc3lzdGVtIGRvZXMgbm90IGhhdmUgZW5vdWdoIG1lbW9yeSBmb3IgdGhvc2Us IHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5vdCBiZSBhYmxlIHRvIGRlYWwgd2l0aCBpdC4NClBhbmlj IGVhcmx5IChpbiB0aGlzIGxpYikgaXMgdGhlIGNvcnJlY3Qgd2F5IHRvIGRlYWwgd2l0aCBpdC4N Cg0KDQo+ID4gKy8qKg0KPiA+ICsgKiBAZmlsZQ0KPiA+ICsgKg0KPiA+ICsgKiBSVEUgTGNvcmUg dmFyaWFibGVzDQo+IA0KPiBQbGVhc2UgZG9uJ3Qgc2F5ICJSVEUiLCBpdCBpcyBqdXN0IGEgcHJl Zml4Lg0KPiBZb3UgY2FuIHJlcGxhY2UgaXQgd2l0aCAiRFBESyIgaWYgeW91IHJlYWxseSB3YW50 IHRvIGJlIHNwZWNpZmljLg0KDQpUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5czoNCiJJbnRyb2R1Y2Ug RFBESyBwZXItbGNvcmUgaWQgdmFyaWFibGVzLCBvciBsY29yZSB2YXJpYWJsZXMgZm9yIHNob3J0 LiINCg0KVXNlIG9uZSBvZiB0aGUgdHdvIGhlcmUuDQpJIHBlcnNvbmFsbHkgcHJlZmVyIHRoZSBz aG9ydCB2YXJpYW50LCAiTGNvcmUgdmFyaWFibGVzIiwgYmVjYXVzZSB0aGF0IGlzIHRoZSB0ZXJt IHdlIGFyZSBnb2luZyB0byB1c2UgaW4gY29udmVyc2F0aW9ucyBvbiB0aGUgbWFpbGluZyBsaXN0 LCBkb2N1bWVudGF0aW9uIGV0Yy4NClRoZSBsb25nIHZhcmlhbnQgaXMgbWFpbmx5IGludGVuZGVk IGZvciBleHBsYWluaW5nIHRoZSBsaWJyYXJ5IGl0c2VsZi4NCg0KDQo+ID4gKyAqIExjb3JlIHZh cmlhYmxlcyBjYW5ub3QgYW5kIG5lZWQgbm90IGJlIGZyZWVkLg0KPiANCj4gSSdtIGN1cmlvdXMg YWJvdXQgdGhhdC4NCj4gSWYgRUFMIGlzIGNsb3NlZCwgYW5kIHRoZSBhcHBsaWNhdGlvbiBjb250 aW51ZXMgaXRzIGxpZmUsDQo+IHRoZW4gd2Ugd2FudCBhbGwgdGhpcyBtZW1vcnkgdG8gYmUgY2xl YW5lZCBhcyB3ZWxsLg0KPiBEbyB5b3Uga25vdyBydGVfZWFsX2NsZWFudXAoKT8NCg0KR29vZCBj YXRjaCwgVGhvbWFzISBJIG1pc3NlZCB0aGF0IGluIG15IHJldmlldy4NCk1hdHRpYXMsIGl0IHNl ZW1zIHlvdSBuZWVkIGEgY2hhaW5lZCBsaXN0IG9mIGxjb3JlX2J1ZmZlciBhbGxvY2F0aW9ucyBm b3IgdGhpcy4NCg0KDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBzaXplIG9mIGFuIGxjb3JlIHZhcmlh YmxlJ3MgdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIERQREsNCj4gDQo+IHNpemUgb2YgdmFy aWFibGUsIG5vdCBzaXplIG9mIHZhbHVlDQoNCkluaXRpYWxseSwgSSB0aG91Z2h0IHRoZSBzYW1l IGFzIFRob21hcy4uLg0KSXQgaXMgY29uZnVzaW5nIGNvbnNpZGVyaW5nIHRoZSBoYW5kbGUgdGhl IHZhcmlhYmxlLCBhbmQgaXRzIGluc3RhbmNlcyBoYXZpbmcgdmFsdWVzLg0KDQpIb3dldmVyLCBk dXJpbmcgdGhlIHJldmlldywgTWF0dGlhcyBjb252aW5jZWQgbWUgb2YgaXRzIGNvcnJlY3RuZXNz Lg0KDQpBbmQgYnkgdGhlIHdheSwgUlRFX1BFUl9MQ09SRSBhbHNvIGRvZXMgaXQ6DQpodHRwczov L2VsaXhpci5ib290bGluLmNvbS9kcGRrL3YyNC4wNy9zb3VyY2UvbGliL2VhbC9pbmNsdWRlL3J0 ZV9wZXJfbGNvcmUuaCNMNDgNCg0KDQo+IA0KPiA+ICsgKiBidWlsZC10aW1lIGNvbnN0YW50IEBj IFJURV9NQVhfTENPUkVfVkFSLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgbGNvcmUgdmFyaWFibGUg YXJlIHN0b3JlZCBpbiBhIHNlcmllcyBvZiBsY29yZSBidWZmZXJzLCB3aGljaA0KPiANCj4gdmFy aWFibGUqcyoNCj4gDQo+ID4gKyAqIGFyZSBhbGxvY2F0ZWQgZnJvbSB0aGUgbGliYyBoZWFwLiBI ZWFwIGFsbG9jYXRpb24gZmFpbHVyZXMgYXJlDQo+ID4gKyAqIHRyZWF0ZWQgYXMgZmF0YWwuDQo+ IA0KPiBXaHkgbm90IGhhbmRsaW5nIGFzIGFuIGVycm9yLCBzbyB0aGUgYXBwIGhhcyBhIGNoYW5j ZSB0byBjbGVhbnVwIGJlZm9yZQ0KPiBjcmFzaD8NCg0KQmVjYXVzZSBhbGxvY2F0aW9uIGZhaWx1 cmVzIG9mIHNpbWlsYXIgdmFyaWFibGUgdHlwZXMgKFJURV9QRVJfTENPUkUgYW5kICJzdGF0aWMi KSBhbHNvIGRvbid0IG9mZmVyIGEgY2hhbmNlIHRvIGNsZWFudXAuIEp1c3QgZm9sbG93aW5nIHRo ZSBzYW1lIGRlc2lnbiBwYXR0ZXJuLg0KDQoNCj4gPiArc3RhdGljIGlubGluZSB2b2lkICoNCj4g PiArcnRlX2xjb3JlX3Zhcl9sY29yZV9wdHIodW5zaWduZWQgaW50IGxjb3JlX2lkLCB2b2lkICpo YW5kbGUpDQo+IA0KPiBXaGF0IGEgbG9uZyBuYW1lIQ0KPiBXaGF0IGFib3V0IHJ0ZV9sY29yZV92 YXIoKSA/DQoNCisxDQoNCg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gbGNvcmVfaWQNCj4gPiAr ICogICBUaGUgbGNvcmUgaWQgc3BlY2lmeWluZyB3aGljaCBvZiB0aGUgQGMgUlRFX01BWF9MQ09S RSB2YWx1ZQ0KPiA+ICsgKiAgIGluc3RhbmNlcyBzaG91bGQgYmUgYWNjZXNzZWQuIFRoZSBsY29y ZSBpZCBuZWVkIG5vdCBiZSB2YWxpZA0KPiA+ICsgKiAgIChlLmcuLCBtYXkgYmUgQHJlZiBMQ09S RV9JRF9BTlkpLCBidXQgaW4gc3VjaCBhIGNhc2UsIHRoZQ0KPiBwb2ludGVyDQo+ID4gKyAqICAg aXMgYWxzbyBub3QgdmFsaWQgKGFuZCB0aHVzIHNob3VsZCBub3QgYmUgZGVyZWZlcmVuY2VkKS4N Cj4gPiArICogQHBhcmFtIGhhbmRsZQ0KPiA+ICsgKiAgIFRoZSBsY29yZSB2YXJpYWJsZSBoYW5k bGUuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJfTENPUkVfVkFMVUUobGNv cmVfaWQsIGhhbmRsZSkNCg0KSSBob3BlIHRvIHNlZSBhIGxvdCBvZiB0aGVzZSBpbiB0aGUgY29k ZSwgc28ga2VlcGluZyBpdCBzaG9ydCB3b3VsZCBiZSBnb29kLg0KDQpTdWdnZXN0Og0KUlRFX0xD T1JFX1ZBUl9MQ09SRShsY29yZV9pZCwgaGFuZGxlKQ0KDQo+IAlcDQo+ID4gKwkoKHR5cGVvZiho YW5kbGUpKXJ0ZV9sY29yZV92YXJfbGNvcmVfcHRyKGxjb3JlX2lkLCBoYW5kbGUpKQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIEdldCBwb2ludGVyIHRvIGxjb3JlIHZhcmlhYmxlIGluc3RhbmNl IG9mIHRoZSBjdXJyZW50IHRocmVhZC4NCj4gPiArICoNCj4gPiArICogTWF5IG9ubHkgYmUgdXNl ZCBieSBFQUwgdGhyZWFkcyBhbmQgcmVnaXN0ZXJlZCBub24tRUFMIHRocmVhZHMuDQo+ID4gKyAq Lw0KPiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJfVkFMVUUoaGFuZGxlKSBcDQo+IA0KPiBSVEVf TENPUkVfVkFSX0xPQ0FMPw0KDQpTYW1lIGNvbW1lbnQgYXMgYWJvdmUsIGxldCdzIGtlZXAgdGhl c2UgcG9wdWxhciBvbmVzIHNob3J0Og0KUlRFX0xDT1JFX1ZBUihoYW5kbGUpDQoNCj4gDQo+ID4g KwlSVEVfTENPUkVfVkFSX0xDT1JFX1ZBTFVFKHJ0ZV9sY29yZV9pZCgpLCBoYW5kbGUpDQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogSXRlcmF0ZSBvdmVyIGVhY2ggbGNvcmUgaWQncyB2YWx1ZSBm b3IgYW4gbGNvcmUgdmFyaWFibGUuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBsY29yZV9pZA0K PiA+ICsgKiAgIEFuIDxjb2RlPnVuc2lnbmVkIGludDwvY29kZT4gdmFyaWFibGUgc3VjY2Vzc2l2 ZWx5IHNldCB0byB0aGUNCj4gPiArICogICBsY29yZSBpZCBvZiBldmVyeSB2YWxpZCBsY29yZSBp ZCAodXAgdG8gQGMgUlRFX01BWF9MQ09SRSkuDQo+ID4gKyAqIEBwYXJhbSB2YWx1ZQ0KPiA+ICsg KiAgIEEgcG9pbnRlciB2YXJpYWJsZSBzdWNjZXNzaXZlbHkgc2V0IHRvIHBvaW50IHRvIGxjb3Jl IHZhcmlhYmxlDQo+ID4gKyAqICAgdmFsdWUgaW5zdGFuY2Ugb2YgdGhlIGN1cnJlbnQgbGNvcmUg aWQgYmVpbmcgcHJvY2Vzc2VkLg0KPiA+ICsgKiBAcGFyYW0gaGFuZGxlDQo+ID4gKyAqICAgVGhl IGxjb3JlIHZhcmlhYmxlIGhhbmRsZS4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgUlRFX0xDT1JF X1ZBUl9GT1JFQUNIX1ZBTFVFKGxjb3JlX2lkLCB2YWx1ZSwgaGFuZGxlKQ0KPiAJXA0KPiANCj4g UlRFX0xDT1JFX1ZBUl9GT1JFQUNIPw0KDQpHZW5lcmFsbHksIGdldCByaWQgb2YgdGhlIF9WQUxV RSBwb3N0Zml4Lg0KUlRFX1BFUl9MQ09SRSgpIGRvZXNuJ3QgaGF2ZSBhIF9WQUxVRSBwb3N0Zml4 LCBldmVuIHRob3VnaCBpdHMgZGVzY3JpcHRpb24gcmVmZXJzIHRvIHRoZSB2YXJpYWJsZSdzIHZh bHVlLg0KDQo=