From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id A2DAC7CE2 for ; Mon, 28 Jan 2019 19:54:28 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jan 2019 10:54:27 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,534,1539673200"; d="scan'208";a="129219754" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jan 2019 10:54:27 -0800 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 28 Jan 2019 10:54:27 -0800 Received: from fmsmsx108.amr.corp.intel.com ([169.254.9.99]) by fmsmsx117.amr.corp.intel.com ([169.254.3.160]) with mapi id 14.03.0415.000; Mon, 28 Jan 2019 10:54:26 -0800 From: "Eads, Gage" To: Ola Liljedahl , "jerinj@marvell.com" , "mczekaj@marvell.com" , "dev@dpdk.org" CC: "olivier.matz@6wind.com" , "stephen@networkplumber.org" , nd , "Richardson, Bruce" , "arybchenko@solarflare.com" , "Ananyev, Konstantin" Thread-Topic: [dpdk-dev] [PATCH v3 2/5] ring: add a non-blocking implementation Thread-Index: AQHUr0H3NsJBTf2hT0+nXGXAmKraP6W7ZOeAgABKckCAAPt7gIADjkUwgARS7wCAAIhhsA== Date: Mon, 28 Jan 2019 18:54:25 +0000 Message-ID: <9184057F7FC11744A2107296B6B8EB1E541CC312@FMSMSX108.amr.corp.intel.com> References: <20190115235227.14013-1-gage.eads@intel.com> <20190118152326.22686-1-gage.eads@intel.com> <20190118152326.22686-3-gage.eads@intel.com> <1548168583.31150.32.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CA46E@FMSMSX108.amr.corp.intel.com> <1548238575.31150.73.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CB6FE@FMSMSX108.amr.corp.intel.com> <1548671766.3076.16.camel@arm.com> In-Reply-To: <1548671766.3076.16.camel@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTJlMjZlMDktNTA4Mi00NGQxLTkxMjEtODI1M2E2ZjYxZWMzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiUXNQXC8ycHMrS1VtUW4xOHpvWmFjekxkNkV2QWFGdVBHaXJScjkrbDc4V0RcL3Q2dmlkang1Y1R1bU1QWEVLelhMIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.1.200.107] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v3 2/5] ring: add a non-blocking implementation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jan 2019 18:54:29 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT2xhIExpbGplZGFobCBb bWFpbHRvOk9sYS5MaWxqZWRhaGxAYXJtLmNvbV0NCj4gU2VudDogTW9uZGF5LCBKYW51YXJ5IDI4 LCAyMDE5IDQ6MzYgQU0NCj4gVG86IGplcmluakBtYXJ2ZWxsLmNvbTsgbWN6ZWthakBtYXJ2ZWxs LmNvbTsgRWFkcywgR2FnZQ0KPiA8Z2FnZS5lYWRzQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0K PiBDYzogb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsgc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc7 IG5kDQo+IDxuZEBhcm0uY29tPjsgUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25A aW50ZWwuY29tPjsNCj4gYXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbTsgQW5hbnlldiwgS29uc3Rh bnRpbg0KPiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtk cGRrLWRldl0gW1BBVENIIHYzIDIvNV0gcmluZzogYWRkIGEgbm9uLWJsb2NraW5nIGltcGxlbWVu dGF0aW9uDQo+IA0KPiBPbiBGcmksIDIwMTktMDEtMjUgYXQgMTc6MjEgKzAwMDAsIEVhZHMsIEdh Z2Ugd3JvdGU6DQo+ID4NCj4gPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+ID4gRnJvbTogT2xhIExpbGplZGFobCBbbWFpbHRvOk9sYS5MaWxqZWRhaGxAYXJtLmNvbV0N Cj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgSmFudWFyeSAyMywgMjAxOSA0OjE2IEFNDQo+ID4gPiBU bzogRWFkcywgR2FnZSA8Z2FnZS5lYWRzQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+ID4g Q2M6IG9saXZpZXIubWF0ekA2d2luZC5jb207IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnOyBu ZA0KPiA+ID4gPG5kQGFybS5jb20+OyBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNv bkBpbnRlbC5jb20+Ow0KPiA+ID4gYXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbTsgQW5hbnlldiwg S29uc3RhbnRpbg0KPiA+ID4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+DQo+ID4gPiBT dWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjMgMi81XSByaW5nOiBhZGQgYSBub24tYmxv Y2tpbmcNCj4gPiA+IGltcGxlbWVudGF0aW9uDQo+ID4gPg0KPiA+ID4gT24gVHVlLCAyMDE5LTAx LTIyIGF0IDIxOjMxICswMDAwLCBFYWRzLCBHYWdlIHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPiBI aSBPbGEsDQo+ID4gPiA+DQo+ID4gPiA+IDxzbmlwPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQEAgLTMzMSw2ICs0 MzMsMzE5IEBAIHZvaWQgcnRlX3JpbmdfZHVtcChGSUxFICpmLCBjb25zdCBzdHJ1Y3QNCj4gPiA+ ID4gPiA+IHJ0ZV9yaW5nICpyKTsNCj4gPiA+ID4gPiA+IMKgI2VuZGlmDQo+ID4gPiA+ID4gPiDC oCNpbmNsdWRlICJydGVfcmluZ19nZW5lcmljXzY0LmgiDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gKy8qIEBpbnRlcm5hbCAxMjgtYml0IHN0cnVjdHVyZSB1c2VkIGJ5IHRoZSBub24tYmxvY2tp bmcgcmluZw0KPiA+ID4gPiA+ID4gKyovIHN0cnVjdCBuYl9yaW5nX2VudHJ5IHsNCj4gPiA+ID4g PiA+ICsJdm9pZCAqcHRyOyAvKio8IERhdGEgcG9pbnRlciAqLw0KPiA+ID4gPiA+ID4gKwl1aW50 NjRfdCBjbnQ7IC8qKjwgTW9kaWZpY2F0aW9uIGNvdW50ZXIgKi8NCj4gPiA+ID4gPiBXaHkgbm90 IG1ha2UgJ2NudCcgdWludHB0cl90PyBUaGlzIHdheSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB3aWxs DQo+ID4gPiA+ID4gYWxzbyBiZSBzdXBwb3J0ZWQuIEkgdGhpbmsgdGhlcmUgYXJlIHNvbWUgY2xh aW1zIHRoYXQgRFBESyBzdGlsbA0KPiA+ID4gPiA+IHN1cHBvcnRzIGUuZy4NCj4gPiA+ID4gPiBB Uk12N2ENCj4gPiA+ID4gPiBhbmQgcG9zc2libHkgYWxzbyAzMi1iaXQgeDg2Pw0KPiA+ID4gPiBJ IGNob3NlIGEgNjQtYml0IG1vZGlmaWNhdGlvbiBjb3VudGVyIGJlY2F1c2UgKHByYWN0aWNhbGx5 DQo+ID4gPiA+IHNwZWFraW5nKSB0aGUgQUJBIHByb2JsZW0gd2lsbCBub3Qgb2NjdXIgd2l0aCBz dWNoIGEgbGFyZ2UgY291bnRlcg0KPiA+ID4gPiAtLSBkZWZpbml0ZWx5IG5vdCB3aXRoaW4gbXkg bGlmZXRpbWUuIFNlZSB0aGUgIkRpc2N1c3Npb24iIHNlY3Rpb24NCj4gPiA+ID4gb2YgdGhlIGNv bW1pdCBtZXNzYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KPiA+ID4gPg0KPiA+ID4gPiBXaXRo IGEgMzItYml0IGNvdW50ZXIsIHRoZXJlIGlzIGEgdmVyeSAodmVyeSkgbG93IGxpa2VsaWhvb2Qg b2YNCj4gPiA+ID4gaXQsIGJ1dCBpdCBpcyBwb3NzaWJsZS4gUGVyc29uYWxseSwgSSBkb24ndCBm ZWVsIGNvbWZvcnRhYmxlDQo+ID4gPiA+IHByb3ZpZGluZyBzdWNoIGNvZGUsIGJlY2F1c2UgYSkg SSBkb3VidCBhbGwgdXNlcnMgd291bGQgdW5kZXJzdGFuZA0KPiA+ID4gPiB0aGUgaW1wbGVtZW50 YXRpb24gd2VsbCBlbm91Z2ggdG8gZG8gdGhlIHJpc2svcmV3YXJkIGFuYWx5c2lzLCBhbmQNCj4g PiA+ID4gYikgc3VjaCBhIGJ1ZyB3b3VsZCBiZSBuZWFyIGltcG9zc2libGUgdG8gcmVwcm9kdWNl IGFuZCByb290LWNhdXNlDQo+ID4gPiA+IGlmIGl0IGRpZCBvY2N1ci4NCj4gPiA+IFdpdGggYSA2 NC1iaXQgY291bnRlciAoYW5kIDMyLWJpdCBwb2ludGVyKSwgMzItYml0IGFyY2hpdGVjdHVyZXMg KGUuZy4NCj4gPiA+IEFSTXY3YSBhbmQNCj4gPiA+IHByb2JhYmx5IHg4NiBhcyB3ZWxsKSB3b24n dCBiZSBhYmxlIHRvIHN1cHBvcnQgdGhpcyBhcyB0aGV5IGF0IGJlc3QNCj4gPiA+IHN1cHBvcnQg NjQtYml0IENBUyAoQVJNdjdhIGhhcyBMRFJFWEQvU1RSRVhEKS4gU28geW91IGFyZQ0KPiA+ID4g ZXNzZW50aWFsbHkgcHV0dGluZyBhIDY0LWJpdCAoYW5kIDEyOC1iaXQgQ0FTKSByZXF1aXJlbWVu dCBvbiB0aGUNCj4gPiA+IGltcGxlbWVudGF0aW9uLg0KPiA+ID4NCj4gPiBZZXMsIEkgYW0uIEkg dHJpZWQgdG8gbWFrZSB0aGF0IGNsZWFyIGluIHRoZSBjb3ZlciBsZXR0ZXIuDQo+ID4NCj4gPiA+ DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKy8qIFRoZSBub24tYmxvY2tpbmcgcmluZyBhbGdvcml0aG0gaXMgYmFzZWQgb24g dGhlIG9yaWdpbmFsDQo+ID4gPiA+ID4gPiArcnRlIHJpbmcgKGRlcml2ZWQNCj4gPiA+ID4gPiA+ ICsgKiBmcm9tIEZyZWVCU0QncyBidWZyaW5nLmgpIGFuZCBpbnNwaXJlZCBieSBNaWNoYWVsIGFu ZA0KPiA+ID4gPiA+ID4gK1Njb3R0J3Mgbm9uLWJsb2NraW5nDQo+ID4gPiA+ID4gPiArICogY29u Y3VycmVudCBxdWV1ZS4NCj4gPiA+ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgKiBAaW50ZXJuYWwNCj4gPiA+ID4gPiA+ICsgKsKgwqDC oEVucXVldWUgc2V2ZXJhbCBvYmplY3RzIG9uIHRoZSBub24tYmxvY2tpbmcgcmluZw0KPiA+ID4g PiA+ID4gKyhzaW5nbGUtcHJvZHVjZXIgb25seSkNCj4gPiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ ID4gKyAqIEBwYXJhbSByDQo+ID4gPiA+ID4gPiArICrCoMKgwqBBIHBvaW50ZXIgdG8gdGhlIHJp bmcgc3RydWN0dXJlLg0KPiA+ID4gPiA+ID4gKyAqIEBwYXJhbSBvYmpfdGFibGUNCj4gPiA+ID4g PiA+ICsgKsKgwqDCoEEgcG9pbnRlciB0byBhIHRhYmxlIG9mIHZvaWQgKiBwb2ludGVycyAob2Jq ZWN0cykuDQo+ID4gPiA+ID4gPiArICogQHBhcmFtIG4NCj4gPiA+ID4gPiA+ICsgKsKgwqDCoFRo ZSBudW1iZXIgb2Ygb2JqZWN0cyB0byBhZGQgaW4gdGhlIHJpbmcgZnJvbSB0aGUgb2JqX3RhYmxl Lg0KPiA+ID4gPiA+ID4gKyAqIEBwYXJhbSBiZWhhdmlvcg0KPiA+ID4gPiA+ID4gKyAqwqDCoMKg UlRFX1JJTkdfUVVFVUVfRklYRUQ6wqDCoMKgwqBFbnF1ZXVlIGEgZml4ZWQgbnVtYmVyIG9mIGl0 ZW1zDQo+ID4gPiA+ID4gPiArdG8gdGhlIHJpbmcNCj4gPiA+ID4gPiA+ICsgKsKgwqDCoFJURV9S SU5HX1FVRVVFX1ZBUklBQkxFOiBFbnF1ZXVlIGFzIG1hbnkgaXRlbXMgYXMNCj4gPiA+ID4gPiA+ ICtwb3NzaWJsZSB0byB0aGUgcmluZw0KPiA+ID4gPiA+ID4gKyAqIEBwYXJhbSBmcmVlX3NwYWNl DQo+ID4gPiA+ID4gPiArICrCoMKgwqByZXR1cm5zIHRoZSBhbW91bnQgb2Ygc3BhY2UgYWZ0ZXIg dGhlIGVucXVldWUgb3BlcmF0aW9uDQo+ID4gPiA+ID4gPiAraGFzIGZpbmlzaGVkDQo+ID4gPiA+ ID4gPiArICogQHJldHVybg0KPiA+ID4gPiA+ID4gKyAqwqDCoMKgQWN0dWFsIG51bWJlciBvZiBv YmplY3RzIGVucXVldWVkLg0KPiA+ID4gPiA+ID4gKyAqwqDCoMKgSWYgYmVoYXZpb3IgPT0gUlRF X1JJTkdfUVVFVUVfRklYRUQsIHRoaXMgd2lsbCBiZSAwIG9yIG4gb25seS4NCj4gPiA+ID4gPiA+ ICsgKi8NCj4gPiA+ID4gPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1bnNpZ25lZCBp bnQNCj4gPiA+ID4gPiA+ICtfX3J0ZV9yaW5nX2RvX25iX2VucXVldWVfc3Aoc3RydWN0IHJ0ZV9y aW5nICpyLCB2b2lkICogY29uc3QNCj4gPiA+ID4gPiA+ICpvYmpfdGFibGUsDQo+ID4gPiA+ID4g PiArCQkJwqDCoMKgwqB1bnNpZ25lZCBpbnQgbiwNCj4gPiA+ID4gPiA+ICsJCQnCoMKgwqDCoGVu dW0gcnRlX3JpbmdfcXVldWVfYmVoYXZpb3IgYmVoYXZpb3IsDQo+ID4gPiA+ID4gPiArCQkJwqDC oMKgwqB1bnNpZ25lZCBpbnQgKmZyZWVfc3BhY2UpIHsNCj4gPiA+ID4gPiA+ICsJdWludDMyX3Qg ZnJlZV9lbnRyaWVzOw0KPiA+ID4gPiA+ID4gKwlzaXplX3QgaGVhZCwgbmV4dDsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsJbiA9IF9fcnRlX3JpbmdfbW92ZV9wcm9kX2hlYWRfNjQociwg MSwgbiwgYmVoYXZpb3IsDQo+ID4gPiA+ID4gPiArCQkJCQnCoCZoZWFkLCAmbmV4dCwNCj4gPiA+ ID4gPiA+ICZmcmVlX2VudHJpZXMpOw0KPiA+ID4gPiA+ID4gKwlpZiAobiA9PSAwKQ0KPiA+ID4g PiA+ID4gKwkJZ290byBlbmQ7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCUVOUVVFVUVf UFRSU19OQihyLCAmclsxXSwgaGVhZCwgb2JqX3RhYmxlLCBuKTsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsJci0+cHJvZF82NC50YWlsICs9IG47DQo+ID4gPiA+ID4gRG9uJ3Qgd2UgbmVl ZCByZWxlYXNlIG9yZGVyIHdoZW4gKG9yIHNtcF93bWIgYmV0d2Vlbikgd3JpdGluZyBvZg0KPiA+ ID4gPiA+IHRoZSByaW5nIHBvaW50ZXJzIGFuZCB0aGUgdXBkYXRlIG9mIHRhaWw/IEJ5IHVwZGF0 aW5nIHRoZSB0YWlsDQo+ID4gPiA+ID4gcG9pbnRlciwgd2UgYXJlIHN5bmNocm9uaXNpbmcgd2l0 aCBhIGNvbnN1bWVyLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSBwcmVmZXIgdXNpbmcgX19hdG9t aWMgb3BlcmF0aW9ucyBldmVuIGZvciBsb2FkIGFuZCBzdG9yZS4gWW91DQo+ID4gPiA+ID4gY2Fu IHNlZSB3aGljaCBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IHN5bmNocm9uaXNlIHdpdGggZWFjaCBv dGhlciwgZS5nLg0KPiA+ID4gPiA+IHN0b3JlLXJlbGVhc2UgdG8gc29tZSBsb2NhdGlvbiBzeW5j aHJvbmlzZXMgd2l0aCBsb2FkLWFjcXVpcmUNCj4gPiA+ID4gPiBmcm9tIHRoZSBzYW1lIGxvY2F0 aW9uLiBJZiB5b3UgZG9uJ3Qga25vdyBob3cgZGlmZmVyZW50IHRocmVhZHMNCj4gPiA+ID4gPiBz eW5jaHJvbmlzZSB3aXRoIGVhY2ggb3RoZXIsIHlvdSBhcmUgdmVyeSBsaWtlbHkgdG8gbWFrZSBt aXN0YWtlcy4NCj4gPiA+ID4gPg0KPiA+ID4gPiBZb3UgY2FuIHRlbGwgdGhpcyBjb2RlIHdhcyB3 cml0dGVuIHdoZW4gSSB0aG91Z2h0IHg4Ni02NCB3YXMgdGhlDQo+ID4gPiA+IG9ubHkgdmlhYmxl IHRhcmdldCA6KS4gWWVzLCB5b3UgYXJlIGNvcnJlY3QuDQo+ID4gPiA+DQo+ID4gPiA+IFdpdGgg cmVnYXJkcyB0byB1c2luZyBfX2F0b21pYyBpbnRyaW5zaWNzLCBJJ20gcGxhbm5pbmcgb24gdGFr aW5nDQo+ID4gPiA+IGEgc2ltaWxhciBhcHByb2FjaCB0byB0aGUgZnVuY3Rpb25zIGR1cGxpY2F0 ZWQgaW4NCj4gPiA+ID4gcnRlX3JpbmdfZ2VuZXJpYy5oIGFuZA0KPiA+ID4gPiBydGVfcmluZ19j MTFfbWVtLmg6IG9uZSB2ZXJzaW9uIHRoYXQgdXNlcyBydGVfYXRvbWljIGZ1bmN0aW9ucw0KPiA+ ID4gPiAoYW5kIHRodXMgc3RyaWN0ZXIgbWVtb3J5IG9yZGVyaW5nKSBhbmQgb25lIHRoYXQgdXNl cyBfX2F0b21pYw0KPiA+ID4gPiBpbnRyaW5zaWNzIChhbmQgdGh1cyBjYW4gYmVuZWZpdCBmcm9t IG1vcmUgcmVsYXhlZCBtZW1vcnkgb3JkZXJpbmcpLg0KPiBGcm9tIGEgY29kZSBwb2ludCBvZiB2 aWV3LCBJIHN0cm9uZ2x5IHByZWZlciB0aGUgYXRvbWljIG9wZXJhdGlvbnMgdG8gYmUgdmlzaWJs ZQ0KPiBpbiB0aGUgdG9wIGxldmVsIGNvZGUsIG5vdCBoaWRkZW4gaW4gc3Vicm91dGluZXMuIEZv ciBjb3JyZWN0bmVzcywgaXQgaXMgdml0YWwgdGhhdA0KPiBtZW1vcnkgYWNjZXNzZXMgYXJlIHBl cmZvcm1lZCB3aXRoIHRoZSByZXF1aXJlZCBvcmRlcmluZyBhbmQgdGhhdCBhY3F1aXJlIGFuZA0K PiByZWxlYXNlIG1hdGNoZXMgdXAuIEhpZGluZyBlLmcuIGxvYWQtYWNxdWlyZSBhbmQgc3RvcmUt cmVsZWFzZSBpbiBzdWJyb3V0aW5lcyAoaW4NCj4gYSBkaWZmZXJlbnQgZmlsZSEpIG1ha2UgdGhp cyBkaWZmaWN1bHQuIFRoZXJlIGhhdmUgYWxyZWFkeSBiZWVuIHN1Y2ggYnVncyBmb3VuZCBpbg0K PiBydGVfcmluZy4NCj4gDQoNCkFmdGVyIHdvcmtpbmcgb24gdGhlIGFjcS9yZWwgb3JkZXJpbmcg dGhpcyB3ZWVrZW5kLCBJIGFncmVlLiBUaGlzJ2xsIGJlIGVhc2llci9jbGVhbmVyIGlmIHdlIGVu ZCB1cCBvbmx5IHVzaW5nIHRoZSBDMTEgdmVyc2lvbi4NCg0KPiA+ID4gV2hhdCdzIHRoZSBhZHZh bnRhZ2Ugb2YgaGF2aW5nIHR3byBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zPyBXaGF0DQo+ID4g PiBpcyB0aGUgZGlzYWR2YW50YWdlPw0KPiA+ID4NCj4gPiA+IFRoZSBleGlzdGluZyByaW5nIGJ1 ZmZlciBjb2RlIG9yaWdpbmFsbHkgaGFkIG9ubHkgdGhlICJsZWdhY3kiDQo+ID4gPiBpbXBsZW1l bnRhdGlvbg0KPiA+ID4gd2hpY2ggd2FzIGtlcHQgd2hlbiB0aGUgX19hdG9taWMgaW1wbGVtZW50 YXRpb24gd2FzIGFkZGVkLiBUaGUNCj4gPiA+IHJlYXNvbiBjbGFpbWVkIHdhcyB0aGF0IHNvbWUg b2xkZXIgY29tcGlsZXJzIGZvciB4ODYgZG8gbm90IHN1cHBvcnQNCj4gPiA+IEdDQyBfX2F0b21p YyBidWlsdGlucy4gQnV0IEkgdGhvdWdodCB0aGVyZSB3YXMgY29uc2Vuc3VzIHRoYXQgbmV3DQo+ ID4gPiBmdW5jdGlvbmFsaXR5IGNvdWxkIGhhdmUgb25seSBfX2F0b21pYyBpbXBsZW1lbnRhdGlv bnMuDQo+ID4gPg0KPiA+IFdoZW4gQ09ORklHX1JURV9SSU5HX1VTRV9DMTFfTUVNX01PREVMIHdh cyBpbnRyb2R1Y2VkLCBpdCB3YXMgbGVmdA0KPiA+IGRpc2FibGVkIGZvciB0aHVuZGVyeFsxXSBm b3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gQXNzdW1pbmcgdGhhdCBoYXNuJ3QNCj4gPiBjaGFuZ2Vk LCB0aGUgYWR2YW50YWdlIHRvIGhhdmluZyB0d28gdmVyc2lvbnMgaXMgdG8gYmVzdCBzdXBwb3J0 IGFsbCBvZiBEUERLJ3MNCj4gcGxhdGZvcm1zLg0KPiA+IFRoZSBkaXNhZHZhbnRhZ2UgaXMgb2Yg Y291cnNlIGR1cGxpY2F0ZWQgY29kZSBhbmQgdGhlIGFkZGl0aW9uYWwNCj4gPiBtYWludGVuYW5j ZSBidXJkZW4uDQo+IFRoZSBvbmx5IHdheSBJIHNlZSB0aGF0IGEgQzExIG1lbW9yeSBtb2RlbCBp bXBsZW1lbnRhdGlvbiBjYW4gYmUgc2xvd2VyDQo+IHRoYW4gdXNpbmcgc21wX3dtYi9ybWIgaXMg aWYgeW91IG5lZWQgdG8gb3JkZXIgbG9hZHMgYmVmb3JlIGEgc3luY2hyb25pemluZw0KPiBzdG9y ZSBhbmQgdGhlcmUgYXJlIGFsc28gb3V0c3RhbmRpbmcgc3RvcmVzIHdoaWNoIGRvIG5vdCByZXF1 aXJlIG9yZGVyaW5nLg0KPiBzbXBfcm1iKCkgaGFuZGxlcyB0aGlzIHdoaWxlIHN0b3JlLXJlbGVh c2Ugd2lsbCBhbHNvICh1bm5lY2Vzc2FyaWx5KSBvcmRlciB0aG9zZQ0KPiBvdXRzdGFuZGluZyBz dG9yZXMuIFRoaXMgc2l0dWF0aW9uIG9jY3VycyBlLmcuIGluIHJpbmcgYnVmZmVyIGRlcXVldWUg b3BlcmF0aW9ucw0KPiB3aGVyZSByaW5nIHNsb3RzIGFyZSByZWFkIChhbmQgcG9zc2libHkgd3Jp dHRlbiB0byB0aHJlYWQtcHJpdmF0ZSBtZW1vcnkpIGJlZm9yZQ0KPiB0aGUgcmluZyBzbG90cyBh cmUgcmVsZWFzZSAoZS5nLiB1c2luZyBDQVMtcmVsZWFzZSBvciBzdG9yZS1yZWxlYXNlKS4NCj4g DQo+IEkgaW1hZ2luZSB0aGF0IHRoZSBMU1UvY2FjaGUgc3Vic3lzdGVtIG9uIFRodW5kZXJYL09D VEVPTi1UWCBhbHNvIGhhdmUNCj4gc29tZXRoaW5nIHRvIGRvIHdpdGggdGhpcyBwcm9ibGVtLiBJ ZiB0aGVyZSBhcmUgYSBsYXJnZSBhbW91bnRzIG9mIHN0b3Jlcw0KPiBwZW5kaW5nIGluIHRoZSBs b2FkL3N0b3JlIHVuaXQsIHN0b3JlLXJlbGVhc2UgbWlnaHQgaGF2ZSB0byB3YWl0IGZvciBhIGxv bmcgdGltZQ0KPiBiZWZvcmUgdGhlIHN5bmNocm9uaXppbmcgc3RvcmUgY2FuIGNvbXBsZXRlLg0K PiANCj4gPg0KPiA+IFRoYXQgc2FpZCwgaWYgdGhlIHRodW5kZXJ4IG1haW50YWluZXJzIGFyZSBv ayB3aXRoIGl0LCBJJ20gY2VydGFpbmx5DQo+ID4gb3BlbiB0byBvbmx5IGRvaW5nIHRoZSBfX2F0 b21pYyB2ZXJzaW9uLiBOb3RlIHRoYXQgZXZlbiBpbiB0aGUNCj4gPiBfX2F0b21pYyB2ZXJzaW9u LCBiYXNlZCBvbiBIb25uYXBhJ3MgZmluZGluZ3NbMl0sIHVzaW5nIGEgRFBESy1kZWZpbmVkDQo+ ID4gcnRlX2F0b21pYzEyOF9jbXBzZXQoKSAod2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBz dXBwb3J0IG1hY2hpbmVzDQo+ID4gd2l0aCB3ZWFrIGNvbnNpc3RlbmN5KSBhcHBlYXJzIHRvIGJl IGEgYmV0dGVyIG9wdGlvbiB0aGFuDQo+IF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfMTYuDQo+ IF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfMTYoKSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBs b2NrLWZyZWUuIEl0IGlzIG5vdA0KPiBsb2NrLWZyZWUgb24gQVJNL0FBcmNoNjQgYW5kIHRoZSBz dXBwb3J0IGluIEdDQyBpcyBmb3JtYWxseSBicm9rZW4gKGNhbid0IHVzZQ0KPiBjbXBleGNoZzE2 YiB0byBpbXBsZW1lbnQgX19hdG9taWNfbG9hZF8xNikuDQo+IA0KPiBTbyB5ZXMsIEkgdGhpbmsg RFBESyB3aWxsIGhhdmUgdG8gZGVmaW5lIGFuZCBpbXBsZW1lbnQgdGhlIDEyOC1iaXQgYXRvbWlj DQo+IGNvbXBhcmUgYW5kIGV4Y2hhbmdlIG9wZXJhdGlvbiAod2hhdGV2ZXIgaXQgd2lsbCBiZSBj YWxsZWQpLiBGb3IgY29tcGF0aWJpbGl0eQ0KPiB3aXRoIEFSTXY4LjAsIHdlIGNhbid0IHJlcXVp cmUgdGhlICJvbGQiIHZhbHVlIHJldHVybmVkIGJ5IGEgZmFpbGVkIGNvbXBhcmUtDQo+IGV4Y2hh bmdlIG9wZXJhdGlvbiB0byBiZSByZWFkIGF0b21pY2FsbHkgKExEWFAgZG9lcyBub3QgZ3VhcmFu dGVlZCBhdG9taWNpdHkNCj4gYnkgaXRzZWxmKS4gQnV0IHRoaXMgaXMgc2VsZG9tIGEgcHJvYmxl bSwgbWFueSBkZXNpZ25zIHJlYWQgdGhlIG1lbW9yeSBsb2NhdGlvbg0KPiB1c2luZyB0d28gc2Vw YXJhdGUgNjQtYml0IGxvYWRzIChzbyBub3QgYXRvbWljKSBhbnl3YXksIGl0IGlzIGEgc3VjY2Vz c2Z1bCBhdG9taWMNCj4gY29tcGFyZSBleGNoYW5nZSBvcGVyYXRpb24gd2hpY2ggcHJvdmlkZXMg YXRvbWljaXR5Lg0KPiANCg0KT2suIEkgYWdyZWUsIEkgZG9uJ3QgZXhwZWN0IHRoYXQgdG8gYmUg YSBwcm9ibGVtLiBUaGUgMTI4LWJpdCBDQVMgcGF0Y2ggSSBqdXN0IHN1Ym1pdHRlZFsxXSAod2hp Y2ggd2FzIGRldmVsb3BlZCBiZWZvcmUgcmVhZGluZyB0aGlzKSB3aWxsIGhhdmUgdG8gYmUgY2hh bmdlZC4NCg0KWzFdIGh0dHA6Ly9tYWlscy5kcGRrLm9yZy9hcmNoaXZlcy9kZXYvMjAxOS1KYW51 YXJ5LzEyNDE1OS5odG1sDQoNClRoYW5rcywNCkdhZ2UNCg0KPC9zbmlwPg0K