From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id BD626C4828F for ; Fri, 9 Feb 2024 13:04:50 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 41FCF42E64; Fri, 9 Feb 2024 14:04:49 +0100 (CET) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id B189240697 for ; Fri, 9 Feb 2024 14:04:47 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 8C2832049C; Fri, 9 Feb 2024 14:04:47 +0100 (CET) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [RFC 1/5] eal: add static per-lcore memory allocation facility X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Fri, 9 Feb 2024 14:04:43 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9F203@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC 1/5] eal: add static per-lcore memory allocation facility Thread-Index: AdpbTZbqsZLdFLJdSCaJ4dYsOVF6aQABKqbA References: <20240208181644.455233-1-mattias.ronnblom@ericsson.com> <20240208181644.455233-2-mattias.ronnblom@ericsson.com> <98CBD80474FA8B44BF855DF32C47DC35E9F200@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , Cc: "Stephen Hemminger" 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 PiBGcm9tOiBNYXR0aWFzIFLDtm5uYmxvbSBbbWFpbHRvOmhvZm9yc0BseXNhdG9yLmxpdS5zZV0N Cj4gU2VudDogRnJpZGF5LCA5IEZlYnJ1YXJ5IDIwMjQgMTIuNDYNCj4gDQo+IE9uIDIwMjQtMDIt MDkgMDk6MjUsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+PiBGcm9tOiBNYXR0aWFzIFLDtm5u YmxvbSBbbWFpbHRvOm1hdHRpYXMucm9ubmJsb21AZXJpY3Nzb24uY29tXQ0KPiA+PiBTZW50OiBU aHVyc2RheSwgOCBGZWJydWFyeSAyMDI0IDE5LjE3DQo+ID4+DQo+ID4+IEludHJvZHVjZSBEUERL IHBlci1sY29yZSBpZCB2YXJpYWJsZXMsIG9yIGxjb3JlIHZhcmlhYmxlcyBmb3Igc2hvcnQuDQo+ ID4+DQo+ID4+IEFuIGxjb3JlIHZhcmlhYmxlIGhhcyBvbmUgdmFsdWUgZm9yIGV2ZXJ5IGN1cnJl bnQgYW5kIGZ1dHVyZSBsY29yZQ0KPiA+PiBpZC1lcXVpcHBlZCB0aHJlYWQuDQo+ID4+DQo+ID4+ IFRoZSBwcmltYXJ5IDxydGVfbGNvcmVfdmFyLmg+IHVzZSBjYXNlIGlzIGZvciBzdGF0aWNhbGx5 IGFsbG9jYXRpbmcNCj4gPj4gc21hbGwgY2h1bmtzIG9mIG9mdGVuLXVzZWQgZGF0YSwgd2hpY2gg aXMgcmVsYXRlZCBsb2dpY2FsbHksIGJ1dA0KPiB3aGVyZQ0KPiA+PiB0aGVyZSBhcmUgcGVyZm9y bWFuY2UgYmVuZWZpdHMgdG8gcmVhcCBmcm9tIGhhdmluZyB1cGRhdGVzIGJlaW5nDQo+IGxvY2Fs DQo+ID4+IHRvIGFuIGxjb3JlLg0KPiA+Pg0KPiA+PiBMY29yZSB2YXJpYWJsZXMgYXJlIHNpbWls YXIgdG8gdGhyZWFkLWxvY2FsIHN0b3JhZ2UgKFRMUywgZS5nLiwgQzExDQo+ID4+IF9UaHJlYWRf bG9jYWwpLCBidXQgZGVjb3VwbGluZyB0aGUgdmFsdWVzJyBsaWZlIHRpbWUgd2l0aCB0aGF0IG9m DQo+IHRoZQ0KPiA+PiB0aHJlYWRzLg0KPiA+Pg0KPiA+PiBMY29yZSB2YXJpYWJsZXMgYXJlIGFs c28gc2ltaWxhciBpbiB0ZXJtcyBvZiBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkDQo+IGJ5DQo+ID4+ IEZyZWVCU0Qga2VybmVsJ3MgRFBDUFVfKigpIGZhbWlseSBvZiBtYWNyb3MgYW5kIHRoZSBhc3Nv Y2lhdGVkDQo+ID4+IGJ1aWxkLXRpbWUgbWFjaGluZXJ5LiBEUENQVSB1c2VzIGxpbmtlciBzY3Jp cHRzLCB3aGljaCBlZmZlY3RpdmVseQ0KPiA+PiBwcmV2ZW50cyB0aGUgcmV1c2Ugb2YgaXRzLCBv dGhlcndpc2Ugc2VlbWluZ2x5IHZpYWJsZSwgYXBwcm9hY2guDQo+ID4+DQo+ID4+IFRoZSBjdXJy ZW50bHktcHJldmFpbGluZyB3YXkgdG8gc29sdmUgdGhlIHNhbWUgcHJvYmxlbSBhcyBsY29yZQ0K PiA+PiB2YXJpYWJsZXMgaXMgdG8ga2VlcCBhIG1vZHVsZSdzIHBlci1sY29yZSBkYXRhIGFzIFJU RV9NQVhfTENPUkUtDQo+IHNpemVkDQo+ID4+IGFycmF5IG9mIGNhY2hlLWFsaWduZWQsIFJURV9D QUNIRV9HVUFSRGVkIHN0cnVjdHMuIFRoZSBiZW5lZml0IG9mDQo+ID4+IGxjb3JlIHZhcmlhYmxl cyBvdmVyIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCBkYXRhIHJlbGF0ZWQgdG8gdGhlIHNhbWUNCj4g Pj4gbGNvcmUgbm93IGlzIGNsb3NlIChzcGF0aWFsbHksIGluIG1lbW9yeSksIHJhdGhlciB0aGFu IGRhdGEgdXNlZCBieQ0KPiA+PiB0aGUgc2FtZSBtb2R1bGUsIHdoaWNoIGluIHR1cm4gYXZvaWQg ZXhjZXNzaXZlIHVzZSBvZiBwYWRkaW5nLA0KPiA+PiBwb2xsdXRpbmcgY2FjaGVzIHdpdGggdW51 c2VkIGRhdGEuDQo+ID4+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IE1hdHRpYXMgUsO2bm5ibG9tIDxt YXR0aWFzLnJvbm5ibG9tQGVyaWNzc29uLmNvbT4NCj4gPj4gLS0tDQo+ID4NCj4gPiBUaGlzIGxv b2tzIHZlcnkgcHJvbWlzaW5nLiA6LSkNCj4gPg0KPiA+IEhlcmUncyBhIGJ1bmNoIG9mIGNvbW1l bnRzLCBxdWVzdGlvbnMgYW5kIHN1Z2dlc3Rpb25zLg0KPiA+DQo+ID4NCj4gPiAqIFF1ZXN0aW9u OiBQZXJmb3JtYW5jZS4NCj4gPiBXaGF0IGlzIHRoZSBjb3N0IG9mIGFjY2Vzc2luZyBhbiBsY29y ZSB2YXJpYWJsZSB2cyBhIHZhcmlhYmxlIGluIFRMUz8NCj4gPiBJIHN1cHBvc2UgdGhlIHJlbGF0 aXZlIGNvc3QgZGltaW5pc2hlcyBpZiB0aGUgdmFyaWFibGUgaXMgYSBsYXJnZXINCj4gc3RydWN0 LCBjb21wYXJlZCB0byBhIHNpbXBsZSB1aW50NjRfdC4NCj4gPg0KPiANCj4gSW4gY2FzZSBhbGwg dGhlIHJlbGV2YW50IGRhdGEgaXMgYXZhaWxhYmxlIGluIGEgY2FjaGUgY2xvc2UgdG8gdGhlDQo+ IGNvcmUsDQo+IGJvdGggb3B0aW9ucyBjYXJyeSBxdWl0ZSBsb3cgb3ZlcmhlYWQuDQo+IA0KPiBB Y2Nlc3NpbmcgYSBsY29yZSB2YXJpYWJsZSB3aWxsIGFsd2F5cyByZXF1aXJlIGEgVExTIGxvb2t1 cCwgaW4gdGhlDQo+IGZvcm0NCj4gb2YgcmV0cmlldmluZyB0aGUgbGNvcmVfaWQgb2YgdGhlIGN1 cnJlbnQgdGhyZWFkLiBJbiB0aGF0IHNlbnNlLCB0aGVyZQ0KPiB3aWxsIGxpa2VseSBiZSBhIG51 bWJlciBvZiBleHRyYSBpbnN0cnVjdGlvbnMgcmVxdWlyZWQgdG8gZG8gdGhlIGxjb3JlDQo+IHZh cmlhYmxlIGFkZHJlc3MgbG9va3VwIChpLmUuLCBkb2luZyB0aGUgbG9hZCBmcm9tIHJ0ZV9sY29y ZV92YXIgdGFibGUNCj4gYmFzZWQgb24gdGhlIGxjb3JlX2lkIHlvdSBqdXN0IGxvb2tlZCB1cCwg YW5kIGFkZGluZyB0aGUgdmFyaWFibGUncw0KPiBvZmZzZXQpLg0KPiANCj4gQSBUTFMgbG9va3Vw IHdpbGwgaW5jdXIgYW4gZXh0cmEgb3ZlcmhlYWQgb2YgbGVzcyB0aGFuIGEgY2xvY2sgY3ljbGUs DQo+IGNvbXBhcmVkIHRvIGFjY2Vzc2luZyBhIG5vbi1UTFMgc3RhdGljIHZhcmlhYmxlLCBpbiBj YXNlIHN0YXRpYyBsaW5raW5nDQo+IGlzIHVzZWQuIEZvciBzaGFyZWQgb2JqZWN0cywgVExTIGlz IG11Y2ggbW9yZSBleHBlbnNpdmUgKHNvbWV0aGluZw0KPiBvZnRlbg0KPiB2aXNpYmxlIGluIGR5 bmFtaWNhbGx5IGxpbmtlZCBEUERLIGFwcCBmbGFtZSBncmFwaHMsIGluIHRoZSBmb3JtIG9mIHRo ZQ0KPiBfX3Rsc19hZGRyIHN5bWJvbCkuIFRoZW4geW91IG5lZWQgdG8gYWRkIH4zIGNjL2FjY2Vz cy4gVGhpcyBvbiBhIG1pY3JvDQo+IGJlbmNobWFyayBydW5uaW5nIG9uIGEgeDg2XzY0IFJhcHRv ciBMYWtlIFAtY29yZS4NCj4gDQo+IChUbyB2aXNpYWxpemUgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl biBzaGFyZWQgb2JqZWN0IGFuZCBub3QsIG9uZSBjYW4gdXNlDQo+IENvbXBpbGVyIEV4cGxvcmVy IGFuZCAtZlBJQyB2ZXJzdXMgLWZQSUUuKQ0KPiANCj4gVGhpbmdzIGdldCBtb3JlIGNvbXBsaWNh dGVkIGlmIHlvdSBhY2Nlc3MgdGhlIHNhbWUgdmFyaWFibGUgaW4gdGhlIHNhbWUNCj4gc2VjdGlv biBjb2RlLCBzaW5jZSB0aGVuIGl0IGNhbiBiZSBsZWZ0IG9uIHRoZSBzdGFjay9pbiBhIHJlZ2lz dGVyIGJ5DQo+IHRoZSBjb21waWxlciwgZXNwZWNpYWxseSBpZiBMVE8gaXMgdXNlZC4gSW4gb3Ro ZXIgd29yZHMsIGlmIHlvdSBkbw0KPiBydGVfbGNvcmVfaWQoKSBzZXZlcmFsIHRpbWVzIGluIGEg cm93LCBvbmx5IHRoZSBmaXJzdCBvbmUgd2lsbCBjb3N0IHlvdQ0KPiBhbnl0aGluZy4gVGhpcyBo YXBwZW5zIGZhaXJseSBvZnRlbiBpbiBEUERLLCB3aXRoIHJ0ZV9sY29yZV9pZCgpLg0KPiANCj4g RmluYWxseSwgaWYgeW91IGRvIHNvbWV0aGluZyBsaWtlDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGli L2VhbC9jb21tb24vcnRlX3JhbmRvbS5jIGIvbGliL2VhbC9jb21tb24vcnRlX3JhbmRvbS5jDQo+ IGluZGV4IGFmOWZmZmQ4MWIuLmE2NWMzMGQyN2UgMTAwNjQ0DQo+IC0tLSBhL2xpYi9lYWwvY29t bW9uL3J0ZV9yYW5kb20uYw0KPiArKysgYi9saWIvZWFsL2NvbW1vbi9ydGVfcmFuZG9tLmMNCj4g QEAgLTEyNSwxNCArMTI1LDcgQEAgX19ydGVfcmFuZF9sZnNyMjU4KHN0cnVjdCBydGVfcmFuZF9z dGF0ZSAqc3RhdGUpDQo+ICAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUNCj4gICBzdHJ1Y3Qg cnRlX3JhbmRfc3RhdGUgKl9fcnRlX3JhbmRfZ2V0X3N0YXRlKHZvaWQpDQo+ICAgew0KPiAtICAg ICAgIHVuc2lnbmVkIGludCBpZHg7DQo+IC0NCj4gLSAgICAgICBpZHggPSBydGVfbGNvcmVfaWQo KTsNCj4gLQ0KPiAtICAgICAgIGlmICh1bmxpa2VseShpZHggPT0gTENPUkVfSURfQU5ZKSkNCj4g LSAgICAgICAgICAgICAgIHJldHVybiAmdW5yZWdpc3RlcmVkX3JhbmRfc3RhdGU7DQo+IC0NCj4g LSAgICAgICByZXR1cm4gUlRFX0xDT1JFX1ZBUl9QVFIocmFuZF9zdGF0ZSk7DQo+ICsgICAgICAg cmV0dXJuICZ1bnJlZ2lzdGVyZWRfcmFuZF9zdGF0ZTsNCj4gICB9DQo+IA0KPiAgIHVpbnQ2NF90 DQo+IA0KPiAuLi5hbmQgcmUtcnVuIHRoZSByYW5kX3BlcmZfYXV0b3Rlc3QsIGF0IGxlYXN0IEkg c2VlIG5vIGRpZmZlcmVuY2UgYXQNCj4gYWxsIChpbiBhIHN0YXRpY2FsbHkgbGlua2VkIGJ1aWxk KS4gQm90aCByZXN1bHRzIGluIHJ0ZV9yYW5kKCkgdXNpbmcNCj4gfjExDQo+IGNjL2NhbGwuIFdo YXQgdGhhdCBzdWdnZXN0cyBpcyB0aGF0IFRMUyBvdmVyaGVhZCBpcyB2ZXJ5IHNtYWxsLCBhbmQN Cj4gdGhhdA0KPiBhbnkgZXh0cmEgaW5zdHJ1Y3Rpb25zIHJlcXVpcmVkIGJ5IGxjb3JlIHZhcmlh YmxlcyBkb2Vzbid0IGFkZCBtdWNoLCBpZg0KPiBhbnl0aGluZyBhdCBhbGwsIGF0IGxlYXN0IGlu IHRoaXMgcGFydGljdWxhciBjYXNlLg0KDQpFeGNlbGxlbnQuIFRoYW5rIHlvdSBmb3IgYSB0aG9y b3VnaCBhbmQgZGV0YWlsZWQgYW5zd2VyLCBNYXR0aWFzLg0KDQo+IA0KPiA+IFNvbWUgb2YgbXkg c3VnZ2VzdGlvbnMgYmVsb3cgbWlnaHQgYWxzbyBhZmZlY3QgcGVyZm9ybWFuY2UuDQo+ID4NCj4g Pg0KPiA+ICogQWR2YW50YWdlOiBQcm92aWRlcyBkaXJlY3QgYWNjZXNzIHRvIHdvcmtlciB0aHJl YWQgdmFyaWFibGVzLg0KPiA+IFdpdGggdGhlIGN1cnJlbnQgYWx0ZXJuYXRpdmUgKHRocmVhZC1s b2NhbCBzdG9yYWdlKSwgdGhlIG1haW4gdGhyZWFkDQo+IGNhbm5vdCBhY2Nlc3MgdGhlIFRMUyB2 YXJpYWJsZXMgb2YgdGhlIHdvcmtlciB0aHJlYWRzLA0KPiA+IHVubGVzcyB3b3JrZXIgdGhyZWFk cyBwdWJsaXNoIGdsb2JhbCBhY2Nlc3MgcG9pbnRlcnMuDQo+ID4gTGNvcmUgdmFyaWFibGVzIG9m IGFueSBsY29yZSB0aHJlYWQgY2FuIGJlIGRpcmVjY3RseSBhY2Nlc3NlZCBieSBhbnkNCj4gdGhy ZWFkLCB3aGljaCBzaW1wbGlmaWVzIGNvZGUuDQo+ID4NCj4gPg0KPiA+ICogQWR2YW50YWdlOiBS b2FkbWFwIHRvd2FyZHMgaHVnZW1lbS4NCj4gPiBJdCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBsY29y ZSB2YXJpYWJsZSBtZW1vcnkgd2FzIGFsbG9jYXRlZCBpbg0KPiBodWdlbWVtLCB0byByZWR1Y2Ug VExCIG1pc3Nlcy4NCj4gPiBUaGUgY3VycmVudCBhbHRlcm5hdGl2ZSAodGhyZWFkLWxvY2FsIHN0 b3JhZ2UpIGlzIGFsc28gbm90IHVzaW5nDQo+IGh1Z2VtZW50LCBzbyBub3QgYSBkZWdyYWRhdGlv bi4NCj4gPg0KPiANCj4gSSBhZ3JlZSwgYnV0IHRoZSB0aGluZyBpcyBpdCdzIGhhcmQgdG8gZmln dXJlIG91dCBob3cgbXVjaCBtZW1vcnkgaXMNCj4gcmVxdWlyZWQgZm9yIHRoZXNlIGtpbmQgb2Yg dmFyaWFibGVzLCBnaXZlbiBob3cgRFBESyBpcyBidWlsdCBhbmQNCj4gbGlua2VkLiBJbiBhbiBP UyBrZXJuZWwsIHlvdSBjYW4ganVzdCB0YWtlIGFsbCB0aGUgc3ltYm9scywgcHV0IHRoZW0gaW4N Cj4gYSBzcGVjaWFsIHNlY3Rpb24sIGFuZCBzaXplIHRoYXQgc2VjdGlvbi4gU3VjaCBhIHRoaW5n IGNhbid0IGVhc2lseSBiZQ0KPiBkb25lIHdpdGggRFBESywgc2luY2Ugc2hhcmVkIG9iamVjdCBi dWlsZHMgYXJlIHN1cHBvcnRlZCwgcGx1cyB0aGF0DQo+IHRoaXMNCj4gZmFjaWxpdHkgc2hvdWxk IGJlIGF2YWlsYWJsZSBub3Qgb25seSB0byBEUERLIG1vZHVsZXMsIGJ1dCBhbHNvIHRoZQ0KPiBh cHBsaWNhdGlvbiwgc28gcmVseWluZyBvbiBsaW5rZXIgc2NyaXB0cyBpc24ndCByZWFsbHkgZmVh c2libGUgKG5vdA0KPiBwcm9iYWJseSBub3QgZXZlbiBmZWFzaWJsZSBmb3IgRFBESyBpdHNlbGYp Lg0KPiANCj4gSW4gdGhhdCBzY2VuYXJpbywgeW91IHdhbnQgdG8gc2l6ZSB1cCB0aGUgcGVyLWxj b3JlIGJ1ZmZlciB0byBiZSBzbw0KPiBsYXJnZSwgeW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJv dXQgb3ZlcnJ1bnMuIFRoYXQgd2lsbCB3YXN0ZSBtZW1vcnkuDQo+IElmIHlvdSB1c2UgaHVnZSBw YWdlIG1lbW9yeSwgcGFnaW5nIGNhbid0IGhlbHAgeW91IHRvIGF2b2lkDQo+IHByZS1hbGxvY2F0 aW5nIGFjdHVhbCBwaHlzaWNhbCBtZW1vcnkuDQoNCkdvb2QgcG9pbnQuDQpJIGhhZCBub3RpY2Vk IHRoYXQgUlRFX01BWF9MQ09SRV9WQVIgd2FzIDEgTUIgKHBlciBSVEVfTUFYX0xDT1JFKSwgYnV0 IEkgaGFkbid0IGNvbnNpZGVyZWQgaG93IHBhZ2luZyBoZWxwcyB1cyB1c2UgbGVzcyBwaHlzaWNh bCBtZW1vcnkgdGhhbiB0aGF0Lg0KDQo+IA0KPiBUaGF0IHNhaWQsIGV2ZW4gbGFyZ2UgKGJ5IHN0 YXRpYyBwZXItbGNvcmUgZGF0YSBzdGFuZGFyZHMpIGJ1ZmZlcnMgYXJlDQo+IHBvdGVudGlhbGx5 IHNtYWxsIGVub3VnaCBub3QgdG8gZ3JvdyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IGEN Cj4gRFBESw0KPiBwcm9jZXNzIHRvbyBtdWNoLiBZb3UgbmVlZCB0byBwcm92aXNpb24gZm9yIFJU RV9NQVhfTENPUkUgb2YgdGhlbQ0KPiB0aG91Z2guDQo+IA0KPiBUaGUgdmFsdWUgb2YgbGNvcmUg dmFyaWFibGVzIHNob3VsZCBiZSBzbWFsbCwgYW5kIHRodXMgaW5jdXIgZmV3IFRMQg0KPiBtaXNz ZXMsIHNvIHlvdSBtYXkgbm90IGdhaW4gbXVjaCBmcm9tIGh1Z2UgcGFnZXMuIEluIG15IHdvcmxk LCBpdCdzDQo+IG1vcmUNCj4gYWJvdXQgImZpdHRpbmcgb2Z0ZW4tdXNlZCBwZXItbGNvcmUgZGF0 YSBpbnRvIEwxIG9yIEwyIENQVSBjYWNoZXMiLA0KPiByYXRoZXIgdGhhbiB0aGUgZWFzaWVyICJm aXR0aW5nIG9mdGVuLXVzZWQgcGVyLWxjb3JlIGRhdGEgaW50byBhDQo+IHdvcmtpbmcNCj4gc2V0 IHNpemUgcmVhc29uYWJseSBleHBlY3RlZCB0byBiZSBjb3ZlcmVkIGJ5IGhhcmR3YXJlIFRMQi9j YWNoZXMiLg0KDQpZZXMsIEkgc3VwcG9zZSB0aGF0IGxjb3JlIHZhcmlhYmxlcyBhcmUgaW50ZW5k ZWQgdG8gYmUgc21hbGwsIGFuZCBsYXJnZSBwZXItbGNvcmUgc3RydWN0dXJlcyBzaG91bGQga2Vl cCBmb2xsb3dpbmcgdGhlIGN1cnJlbnQgZGVzaWduIHBhdHRlcm5zIGZvciBhbGxvY2F0aW9uIGFu ZCBhY2Nlc3MuDQoNClBlcmhhcHMgdGhpcyBndWlkZWxpbmUgaXMgd29ydGggbWVudGlvbmluZyBp biB0aGUgZG9jdW1lbnRhdGlvbi4NCg0KPiANCj4gPiBMY29yZSB2YXJpYWJsZXMgYXJlIGF2YWls YWJsZSB2ZXJ5IGVhcmx5IGF0IHN0YXJ0dXAsIHNvIEkgZ3Vlc3MgdGhlDQo+IFJURSBtZW1vcnkg YWxsb2NhdG9yIGlzIG5vdCB5ZXQgYXZhaWxhYmxlLg0KPiA+IEh1Z2VtZW0gY291bGQgYmUgYWxs b2NhdGVkIHVzaW5nIE8vUyBhbGxvY2F0aW9uLCBzbyB0aGVyZSBpcyBhDQo+IHBvc3NpYmxlIHJv YWQgdG93YXJkcyB1c2luZyBodWdlbWVtLg0KPiA+DQo+IA0KPiBXaXRoIHRoZSBjdXJyZW50IGRl c2lnbiwgdGhhdCB0cnVlLiBJJ20gbm90IHN1cmUgaXQncyBhIHN0cmljdA0KPiByZXF1aXJlbWVu dCB0aG91Z2gsIGJ1dCBpdCBkb2VzIG1ha2VzIHRoaW5ncyBzaW1wbGVyLg0KPiANCj4gPiBFaXRo ZXIgd2F5LCB1c2luZyBodWdlbWVudCB3b3VsZCByZXF1aXJlIG9uZSBtb3JlIGluZGlyZWN0aW9u ICh0aGUNCj4gcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIGh1Z2VtZW0pLg0KPiA+IEkgZG9uJ3Qg a25vdyB3aGljaCBoYXMgYmV0dGVyIHBlcmZvcm1hbmNlLCB1c2luZyBodWdlbWVtIG9yIGF2b2lk aW5nDQo+IHRoZSBhZGRpdGlvbmFsIHBvaW50ZXIgZGVyZWZlcmVuY2luZy4NCj4gPg0KPiA+DQo+ ID4gKiBTdWdnZXN0aW9uOiBDb25zaWRlciBhZGRpbmcgYW4gZW50cnkgZm9yIHVucmVnaXN0ZXJl ZCBub24tRUFMDQo+IHRocmVhZHMuDQo+ID4gUGxlYXNlIGNvbnNpZGVyIG1ha2luZyByb29tIGZv ciBvbmUgbW9yZSBlbnRyeSwgc2hhcmVkIGJ5IGFsbA0KPiB1bnJlZ2lzdGVyZWQgbm9uLUVBTCB0 aHJlYWRzLCBpLmUuDQo+ID4gbWFraW5nIHRoZSBhcnJheSBzaXplIFJURV9NQVhfTENPUkUgKyAx IGFuZCBpbmRleGluZyBieQ0KPiAocnRlX2xjb3JlX2lkKCkgPCBSVEVfTUFYX0xDT1JFID8gcnRl X2xjb3JlX2lkKCkgOiBSVEVfTUFYX0xDT1JFKS4NCj4gPg0KPiA+IEl0IHdvdWxkIGJlIGNvbnZl bmllbnQgZm9yIHRoZSB1c2UgY2FzZXMgd2hlcmUgYSB2YXJpYWJsZSBzaGFyZWQgYnkNCj4gdGhl IHVucmVnaXN0ZXJlZCBub24tRUFMIHRocmVhZHMgZG9uJ3QgbmVlZCBzcGVjaWFsIHRyZWF0bWVu dC4NCj4gPg0KPiANCj4gSSB0aG91Z2h0IGFib3V0IHRoaXMsIGJ1dCBpdCB3b3VsZCByZXF1aXJl IGEgY29uZGl0aW9uYWwgaW4gdGhlIGxvb2t1cA0KPiBtYWNybywgYXMgeW91IHNob3cuIE1vcmUg aW1wb3J0YW50bHksIGl0IHdvdWxkIG1ha2UgdGhlIHdob2xlDQo+IDxydGVfbGNvcmVfdmFyLmg+ IHRoaW5nIGxlc3MgZWxlZ2FudCBhbmQgaGFyZGVyIHRvIHVuZGVyc3RhbmQuIEl0J3MgYmFkDQo+ IGVub3VnaCB0aGF0ICJwZXItbGNvcmUiIGlzIGFjdHVhbGx5ICJwZXItbGNvcmUgaWQiIChvciB0 aGUgZXF1aXZhbGVudA0KPiAicGVyLUVBTCB0aHJlYWQgYW5kIHVucmVnaXN0ZXJlZCBFQUwtdGhy ZWFkIikuIEFkZGluZyBhICJidHcgaXQncyA8d2hhdA0KPiBJIHNhaWQgYmVmb3JlPiArIDEiIGlz IG5vdCBhbiBpbXByb3ZlbWVudC4NCg0KV2UgY291bGQgcHJvbW90ZSAib25lIG1vcmUgZW50cnkg Zm9yIHVucmVnaXN0ZXJlZCBub24tRUFMIHRocmVhZHMiIGRlc2lnbiBwYXR0ZXJuIChmb3IgcmVs ZXZhbnQgdXNlIGNhc2VzIG9ubHkhKSBieSBleHRlbmRpbmcgRUFMIHdpdGggb25lIG1vcmUgVExT IHZhcmlhYmxlLCBtYWludGFpbmVkIGxpa2UgX3RocmVhZF9pZCwgYnV0IHNldCB0byBSVEVfTUFY X0xDT1JFIHdoZW4gX3RyZWFkX2lkIGlzIHNldCB0byAtMToNCg0KKysrIGVhbF9jb21tb25fdGhy ZWFkLmM6DQogIFJURV9ERUZJTkVfUEVSX0xDT1JFKGludCwgX3RocmVhZF9pZCkgPSAtMTsNCisg UlRFX0RFRklORV9QRVJfTENPUkUoaW50LCBfdGhyZWFkX2lkeCkgPSBSVEVfTUFYX0xDT1JFOw0K DQphbmQNCg0KKysrIHJ0ZV9sY29yZS5oOg0Kc3RhdGljIGlubGluZSB1bnNpZ25lZA0KcnRlX2xj b3JlX2lkKHZvaWQpDQp7DQoJcmV0dXJuIFJURV9QRVJfTENPUkUoX2xjb3JlX2lkKTsNCn0NCisg c3RhdGljIGlubGluZSB1bnNpZ25lZA0KKyBydGVfbGNvcmVfaWR4KHZvaWQpDQorIHsNCisgCXJl dHVybiBSVEVfUEVSX0xDT1JFKF9sY29yZV9pZHgpOw0KKyB9DQoNClRoYXQgd291bGQgZWxpbWlu YXRlIHRoZSAocnRlX2xjb3JlX2lkKCkgPCBSVEVfTUFYX0xDT1JFID8gcnRlX2xjb3JlX2lkKCkg OiBSVEVfTUFYX0xDT1JFKSBjb25kaXRpb25hbCwgYWxzbyB3aGVyZSBjdXJyZW50bHkgdXNlZC4N Cg0KPiANCj4gQnV0IHVzZWZ1bD8gU3VyZS4NCj4gDQo+IEkgdGhpbmsgeW91IG1heSBzdGlsbCBu ZWVkIG90aGVyIGRhdGEgZm9yIGRlYWxpbmcgd2l0aCB1bnJlZ2lzdGVyZWQNCj4gdGhyZWFkcywg Zm9yIGV4YW1wbGUgYSBtdXRleCBvciBzcGluIGxvY2sgdG8gZGVhbCB3aXRoIGNvbmN1cnJlbmN5 DQo+IGlzc3VlcyB0aGF0IGFyaXNlcyB3aXRoIHNoYXJlZCBkYXRhLg0KDQpBZGRpbmcgdGhlIGV4 dHJhIGVudHJ5IGlzIG9ubHkgZm9yIHRoZSBiZW5lZml0IG9mIHVzZSBjYXNlcyB3aGVyZSBzcGVj aWFsIGhhbmRsaW5nIGlzIG5vdCByZXF1aXJlZC4gSXQgd2lsbCBtYWtlIHRoZSBjb2RlIGZvciB0 aG9zZSB1c2UgY2FzZXMgbXVjaCBjbGVhbmVyLiBJIHRoaW5rIGl0IGlzIHVzZWZ1bC4NCg0KVXNl IGNhc2VzIHJlcXVpcmluZyBzcGVjaWFsIGhhbmRsaW5nIHNob3VsZCBzdGlsbCBkbyB0aGUgc3Bl Y2lhbCBoYW5kbGluZyB0aGV5IGRvIHRvZGF5Lg0KDQo+IA0KPiBUaGVyZSBtYXkgYWxzbyBiZSBj YXNlcyB3ZXJlIHlvdSBhcmUgYmVzdCBvZmYgYnkgc2ltcGx5IGRpc2FsbG93aW5nDQo+IHVucmVn aXN0ZXJlZCB0aHJlYWRzIGZyb20gY2FsbGluZyBpbnRvIHRoYXQgQVBJLg0KPiANCj4gPiBPYnZp b3VzbHksIHRoaXMgbWlnaHQgYWZmZWN0IHBlcmZvcm1hbmNlLg0KPiA+IElmIHRoZSBwZXJmb3Jt YW5jZSBjb3N0IGlzIG5vdCBuZWdsaWdibGUsIHRoZSBhZGR0aW9uYWwgZW50cnkgKGFuZA0KPiBp bmRleGluZyBicmFuY2gpIGNvdWxkIGJlIGRpc2FibGVkIGF0IGJ1aWxkIHRpbWUuDQo+ID4NCj4g Pg0KPiA+ICogU3VnZ2VzdGlvbjogRG8gbm90IGZpeCB0aGUgYWxpZ25tZW50IGF0IDE2IGJ5dGUu DQo+ID4gUGFzcyBhbiBhbGlnbm1lbnQgcGFyYW1ldGVyIHRvIHJ0ZV9sY29yZV92YXJfYWxsb2Mo KSBhbmQgdXNlDQo+IGFsaWdub2YoKSB3aGVuIGNhbGxpbmcgaXQ6DQo+ID4NCj4gPiArI2luY2x1 ZGUgPHN0ZGFsaWduLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJfQUxMT0Mo bmFtZSkJCQlcDQo+ID4gKwluYW1lID0gcnRlX2xjb3JlX3Zhcl9hbGxvYyhzaXplb2YoKihuYW1l KSksIGFsaWdub2YoKihuYW1lKSkpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9MQ09SRV9WQVJf QUxMT0NfU0laRV9BTElHTihuYW1lLCBzaXplLCBhbGlnbm1lbnQpCVwNCj4gPiArCW5hbWUgPSBy dGVfbGNvcmVfdmFyX2FsbG9jKHNpemUsIGFsaWdubWVudCkNCj4gPiArDQo+ID4gKyNkZWZpbmUg UlRFX0xDT1JFX1ZBUl9BTExPQ19TSVpFKG5hbWUsIHNpemUpCVwNCj4gPiArCW5hbWUgPSBydGVf bGNvcmVfdmFyX2FsbG9jKHNpemUsIFJURV9MQ09SRV9WQVJfQUxJR05NRU5UX0RFRkFVTFQpDQo+ ID4gKw0KPiA+ICsgKysrIC9jY29uZmlnL3J0ZV9jb25maWcuaA0KPiA+ICsjZGVmaW5lIFJURV9M Q09SRV9WQVJfQUxJR05NRU5UX0RFRkFVTFQgMTYNCj4gPg0KPiA+DQo+IA0KPiBUaGF0IHNlZW1z IGxpa2UgYSB2ZXJ5IGdvb2QgaWRlYS4gSSdsbCBsb29rIGludG8gaXQuDQo+IA0KPiA+ICogQ29u Y2VybjogUlRFX0xDT1JFX1ZBUl9GT1JFQUNIKCkgcmVzZW1ibGVzIFJURV9MQ09SRV9GT1JFQUNI KCksIGJ1dA0KPiBiZWhhdmVzIGRpZmZlcmVudGx5Lg0KPiA+DQo+ID4+ICsvKioNCj4gPj4gKyAq IEl0ZXJhdGUgb3ZlciBlYWNoIGxjb3JlIGlkJ3MgdmFsdWUgZm9yIGEgbGNvcmUgdmFyaWFibGUu DQo+ID4+ICsgKi8NCj4gPj4gKyNkZWZpbmUgUlRFX0xDT1JFX1ZBUl9GT1JFQUNIKHZhciwgbmFt ZSkJCQkJXA0KPiA+PiArCWZvciAodW5zaWduZWQgaW50IGxjb3JlX2lkID0JCQkJCVwNCj4gPj4g KwkJICAgICAoKCh2YXIpID0gUlRFX0xDT1JFX1ZBUl9MQ09SRV9QVFIoMCwgbmFtZSkpLCAwKTsJ XA0KPiA+PiArCSAgICAgbGNvcmVfaWQgPCBSVEVfTUFYX0xDT1JFOwkJCQkJXA0KPiA+PiArCSAg ICAgbGNvcmVfaWQrKywgKHZhcikgPSBSVEVfTENPUkVfVkFSX0xDT1JFX1BUUihsY29yZV9pZCwg bmFtZSkpDQo+ID4+ICsNCj4gPg0KPiA+IFRoZSBtYWNybyBuYW1lIFJURV9MQ09SRV9WQVJfRk9S RUFDSCgpIHJlc2VtYmxlcw0KPiBSVEVfTENPUkVfRk9SRUFDSChpKSwgd2hpY2ggb25seSBpdGVy YXRlcyBvbiBydW5uaW5nIGNvcmVzLg0KPiA+IFlvdSBtaWdodCB3YW50IHRvIGdpdmUgaXQgYSBu YW1lIHRoYXQgZGlmZmVycyBtb3JlLg0KPiA+DQo+IA0KPiBUcnVlLg0KPiANCj4gTWF5YmUgUlRF X0xDT1JFX1ZBUl9GT1JFQUNIX1ZBTFVFKCkgaXMgYmV0dGVyPyBTdGlsbCByb29tIGZvcg0KPiBj b25mdXNpb24sDQo+IGZvciBzdXJlLg0KPiANCj4gQmVpbmcgY29uc2lzdGVudCB3aXRoIDxydGVf bGNvcmUuaD4gaXMgbm90IHNvIGVhc3ksIHNpbmNlIGl0J3Mgbm90IGV2ZW4NCj4gY29uc2lzdGVu dCB3aXRoIGl0c2VsZi4gRm9yIGV4YW1wbGUsIHJ0ZV9sY29yZV9jb3VudCgpIHJldHVybnMgdGhl DQo+IG51bWJlciBvZiBsY29yZXMgKEVBTCB0aHJlYWRzKSAqcGx1cyB0aGUgbnVtYmVyIG9mIHJl Z2lzdGVyZWQgbm9uLUVBTA0KPiB0aHJlYWRzKiwgYW5kIFJURV9MQ09SRV9GT1JFQUNIKCkgZ2l2 ZSBhIGRpZmZlcmVudCBjb3VudC4gOikNCg0KTmFtaW5nIGlzIGhhcmQuIEkgZG9uJ3QgaGF2ZSBh IGdvb2QgbmFtZSwgYW5kIGNhbiBvbmx5IG9mZmVyIGluc3BpcmF0aW9uLi4uDQoNCjxydGVfbGNv cmUuaD4gaGFzIFJURV9MQ09SRV9GT1JFQUNIKCkgYW5kIGl0cyBSVEVfTENPUkVfRk9SRUFDSF9X T1JLRVIoKSB2YXJpYW50IHdpdGggX1dPUktFUiBhcHBlbmRlZC4NCg0KUGVyaGFwcyBSVEVfTENP UkVfVkFSX0ZPUkVBQ0hfQUxMKCksIHdpdGggX0FMTCBhcHBlbmRlZCB0byBpbmRpY2F0ZSBhIHZh cmlhbnQuDQoNCj4gDQo+ID4gSWYgaXQgd2Fzbid0IGZvciBBUEkgYnJlYWthZ2UsIEkgd291bGQg c3VnZ2VzdCByZW5hbWluZw0KPiBSVEVfTENPUkVfRk9SRUFDSCgpIGluc3RlYWQsIGJ1dCB0aGF0 J3Mgbm90IHJlYWxpc3RpYy4gOy0pDQo+ID4NCj4gPiBTbWFsbCBkZXRhaWw6ICJ2YXIiIGlzIGEg cG9pbnRlciwgc28gY29uc2lkZXIgcmVuYW1pbmcgaXQgdG8gInB0ciINCj4gYW5kIGFkZGluZyBf UFRSIHRvIHRoZSBtYWNybyBuYW1lLg0KPiANCj4gVGhlICJ2YXIiIG5hbWUgY29tZXMgZnJvbSBo b3cgPHN5cy9xdWV1ZS5oPiBuYW1lcyB0aGluZ3MuIEkgdGhpbmsgSSBoYWQNCj4gaXQgYXMgInB0 ciIgaW5pdGlhbGx5LiBJJ2xsIGNoYW5nZSBpdCBiYWNrLg0KDQpUaGFua3MuDQoNCj4gDQo+IFRo YW5rcyBhIGxvdCBNb3J0ZW4uDQo=