From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ola Liljedahl Subject: Re: [PATCH v3 1/3] ring: read tail using atomic load Date: Mon, 8 Oct 2018 10:25:45 +0000 Message-ID: References: <1555626C-F2B8-44EB-98A3-79B1F7002587@arm.com> <60055965-A7C8-4E9F-8668-0AE1DCE57515@arm.com> <20181006074126.GA16715@jerin> <20181007040243.GA1850@jerin> <7A156041-23EC-4CCB-B129-3607AF34A992@arm.com> <20181008060629.GA5228@jerin> <063A95EC-CFC1-42F7-B864-DFB9C6718AC8@arm.com> <20181008100004.GB11081@jerin> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev@dpdk.org" , Honnappa Nagarahalli , "Ananyev, Konstantin" , "Gavin Hu (Arm Technology China)" , Steve Capper , nd , "stable@dpdk.org" To: Jerin Jacob Return-path: In-Reply-To: <20181008100004.GB11081@jerin> Content-Language: en-US Content-ID: <1BED3D31541CDF47B96D60F07F836C0B@eurprd08.prod.outlook.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCu+7v09uIDA4LzEwLzIwMTgsIDEyOjAwLCAiSmVyaW4gSmFjb2IiIDxqZXJpbi5qYWNvYkBj YXZpdW1uZXR3b3Jrcy5jb20+IHdyb3RlOg0KDQogICAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCiAgICA+IERhdGU6IE1vbiwgOCBPY3QgMjAxOCAwOToyMjowNSArMDAwMA0KICAgID4gRnJv bTogT2xhIExpbGplZGFobCA8T2xhLkxpbGplZGFobEBhcm0uY29tPg0KICAgID4gVG86IEplcmlu IEphY29iIDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQogICAgPiBDQzogImRldkBk cGRrLm9yZyIgPGRldkBkcGRrLm9yZz4sIEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQogICAgPiAgPEhv bm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+LCAiQW5hbnlldiwgS29uc3RhbnRpbiINCiAgICA+ ICA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4sICJHYXZpbiBIdSAoQXJtIFRlY2hub2xv Z3kgQ2hpbmEpIg0KICAgID4gIDxHYXZpbi5IdUBhcm0uY29tPiwgU3RldmUgQ2FwcGVyIDxTdGV2 ZS5DYXBwZXJAYXJtLmNvbT4sIG5kIDxuZEBhcm0uY29tPiwNCiAgICA+ICAic3RhYmxlQGRwZGsu b3JnIiA8c3RhYmxlQGRwZGsub3JnPg0KICAgID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAxLzNd IHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0KICAgID4gdXNlci1hZ2VudDogTWlj cm9zb2Z0LU1hY091dGxvb2svMTAuMTEuMC4xODA5MDkNCiAgICA+IA0KICAgID4gRXh0ZXJuYWwg RW1haWwNCiAgICA+IA0KICAgID4gT24gMDgvMTAvMjAxOCwgMDg6MDYsICJKZXJpbiBKYWNvYiIg PGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4gd3JvdGU6DQogICAgPiANCiAgICA+ICAg ICAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KICAgID4gICAgID4gRGF0ZTogU3VuLCA3IE9j dCAyMDE4IDIwOjQ0OjU0ICswMDAwDQogICAgPiAgICAgPiBGcm9tOiBPbGEgTGlsamVkYWhsIDxP bGEuTGlsamVkYWhsQGFybS5jb20+DQogICAgPiAgICAgPiBUbzogSmVyaW4gSmFjb2IgPGplcmlu LmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCiAgICA+ICAgICA+IENDOiAiZGV2QGRwZGsub3Jn IiA8ZGV2QGRwZGsub3JnPiwgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCiAgICA+ICAgICA+ICA8SG9u bmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT4sICJBbmFueWV2LCBLb25zdGFudGluIg0KICAgID4g ICAgID4gIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPiwgIkdhdmluIEh1IChBcm0gVGVj aG5vbG9neSBDaGluYSkiDQogICAgPiAgICAgPiAgPEdhdmluLkh1QGFybS5jb20+LCBTdGV2ZSBD YXBwZXIgPFN0ZXZlLkNhcHBlckBhcm0uY29tPiwgbmQgPG5kQGFybS5jb20+LA0KICAgID4gICAg ID4gICJzdGFibGVAZHBkay5vcmciIDxzdGFibGVAZHBkay5vcmc+DQogICAgPiAgICAgPiBTdWJq ZWN0OiBSZTogW1BBVENIIHYzIDEvM10gcmluZzogcmVhZCB0YWlsIHVzaW5nIGF0b21pYyBsb2Fk DQogICAgPiAgICAgPiB1c2VyLWFnZW50OiBNaWNyb3NvZnQtTWFjT3V0bG9vay8xMC4xMS4wLjE4 MDkwOQ0KICAgID4gICAgID4NCiAgICA+IA0KICAgID4gDQogICAgPiAgICAgQ291bGQgeW91IHBs ZWFzZSBmaXggdGhlIGVtYWlsIGNsaWVudCBmb3IgaW5saW5lIHJlcGx5Lg0KICAgID4gU29ycnkg dGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgcG9zc2libGUgd2l0aCBPdXRsb29rIGZvciBNYWMgMTYg b3IgT2ZmaWNlMzY1LiBUaGUgb2ZmaWNpYWwgT2ZmaWNlMzY1L091dGxvb2sNCiAgICA+IGRvY3Vt ZW50YXRpb24gZG9lc24ndCBtYXRjaCB0aGUgYWN0dWFsIHVzZXIgaW50ZXJmYWNlLi4uDQogICAg PiANCiAgICA+IA0KICAgID4gDQogICAgPiAgICAgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2Mv aHRtbC92NC4xOS1yYzcvcHJvY2Vzcy9lbWFpbC1jbGllbnRzLmh0bWwNCiAgICA+IA0KICAgID4g DQogICAgPiAgICAgPg0KICAgID4gICAgID4gT24gMDcvMTAvMjAxOCwgMDY6MDMsICJKZXJpbiBK YWNvYiIgPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4gd3JvdGU6DQogICAgPiAgICAg Pg0KICAgID4gICAgID4gICAgIEluIGFybTY0IGNhc2UsIGl0IHdpbGwgaGF2ZSBBVE9NSUNfUkVM QVhFRCBmb2xsb3dlZCBieSBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpIG9mIHJ0ZV9wYXVz ZSgpLg0KICAgID4gICAgID4gICAgIEkgd291bGQgbid0IGhhdmUgYW55IGlzc3VlLCBpZiB0aGUg Z2VuZXJhdGVkIGNvZGUgY29kZSBpcyBzYW1lIG9yIGJldHRlciB0aGFuIHRoZSBleGl0aW5nIGNh c2UuIGJ1dCBpdCBub3QgdGhlIGNhc2UsIFJpZ2h0Pw0KICAgID4gICAgID4gVGhlIGV4aXN0aW5n IGNhc2UgaXMgYWN0dWFsbHkgbm90IGludGVyZXN0aW5nIChJTU8pIGFzIGl0IGV4cG9zZXMgdW5k ZWZpbmVkIGJlaGF2aW91ciB3aGljaCBhbGxvd3MgdGhlIGNvbXBpbGVyIHRvIGRvIGFueXRoaW5n LiBCdXQgeW91IHNlZW0gdG8gYmUgc2F0aXNmaWVkIHdpdGggIndvcmtzIGZvciBtZSwgcmlnaHQg aGVyZSByaWdodCBub3ciLiBJIHRoaW5rIHRoZSBjb3N0IG9mIGF2b2lkaW5nIHVuZGVmaW5lZCBi ZWhhdmlvdXIgaXMgYWNjZXB0YWJsZSAoYWN0dWFsbHkgSSBkb24ndCB0aGluayBpdCBldmVuIHdp bGwgYmUgbm90aWNlYWJsZSkuDQogICAgPiANCiAgICA+ICAgICBJIGFtIG5vdCBjb252aW5jZWQg YmVjYXVzZSBvZiB1c2Ugb2Ygdm9sYXRpbGUgaW4gaGVhZCBhbmQgdGFpbCBpbmRleGVzLg0KICAg ID4gICAgIEZvciBtZSB0aGF0IGJyaW5ncyB0aGUgZGVmaW5lZCBiZWhhdmlvci4NCiAgICA+IEFz IGxvbmcgYXMgeW91IGRvbid0IG1peCBpbiBDMTEgYXRvbWljIGFjY2Vzc2VzIChqdXN0IHVzZSAi cGxhaW4iIGFjY2Vzc2VzIHRvIHZvbGF0aWxlIG9iamVjdHMpLA0KICAgID4gaXQgaXMgQUZBSUsg ZGVmaW5lZCBiZWhhdmlvdXIgKGJ1dCBub3QgbmVjZXNzYXJpbHkgdXNpbmcgYXRvbWljIGxvYWRz IGFuZCBzdG9yZXMpLiBCdXQgSSBxdW90ZWQNCiAgICA+IHRoZSBDMTEgc3BlYyB3aGVyZSBpdCBl eHBsaWNpdGx5IG1lbnRpb25zIHRoYXQgbWl4aW5nIGF0b21pYyBhbmQgbm9uLWF0b21pYyBhY2Nl c3NlcyB0byB0aGUgc2FtZQ0KICAgID4gb2JqZWN0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIuIERv bid0IGFyZ3VlIHdpdGggbWUsIGFyZ3VlIHdpdGggdGhlIEMxMSBzcGVjLg0KICAgID4gSWYgeW91 IHdhbnQgdG8gZGlzb2JleSB0aGUgc3BlYywgdGhpcyBzaG91bGQgYXQgbGVhc3QgYmUgY2FsbGVk IG91dCBmb3IgaW4gdGhlIGNvZGUgd2l0aCBhIGNvbW1lbnQuDQogICAgDQogICAgVGhhdCdzIGJv aWxzIGRvd24gb25seSBvbmUgcXVlc3Rpb24sIHNob3VsZCB3ZSBmb2xsb3cgQzExIHNwZWM/IFdo eSBub3Qgb25seSB0YWtlIGxvYWQNCiAgICBhY3F1aXJlIGFuZCBzdG9yZSByZWxlYXNlIHNlbWFu dGljcyBvbmx5IGp1c3QgbGlrZSBMaW51eCBrZXJuZWwgYW5kIEZyZWVCU0QuDQpBbmQgaW50cm9k dWNlIGV2ZW4gbW9yZSB1bmRlZmluZWQgYmVoYXZpb3VyPw0KDQogICAgRG9lcyBub3QgbG9vayBs aWtlIEMxMSBtZW1vcnkgbW9kZWwgaXMgc3VwZXIgZWZmaWNpZW50IGluIHRlcm0gb2YgZ2NjDQog ICAgaW1wbGVtZW50YXRpb24uDQpZb3UgYXJlIG1ha2luZyBhIGNoaWNrZW4gb3V0IG9mIGEgZmVh dGhlci4NCg0KSSB0aGluayB0aGlzICJwcm9ibGVtIiB3aXRoIG9uZSBhZGRpdGlvbmFsIEFERCBp bnN0cnVjdGlvbiB3aWxsIG9ubHkgY29uY2VybiBfX2F0b21pY19sb2FkX24oX19BVE9NSUNfUkVM QVhFRCkgYW5kIF9fYXRvbWljX3N0b3JlX24oX19BVE9NSUNfUkVMQVhFRCkgYmVjYXVzZSB0aGUg Y29tcGlsZXIgc2VwYXJhdGVzIHRoZSBhZGRyZXNzIGdlbmVyYXRpb24gKGFkZCBvZmZzZXQgb2Yg c3RydWN0IG1lbWJlcikgZnJvbSB0aGUgbG9hZCBvciBzdG9yZSBpdHNlbGYuIEZvciBvdGhlciBh dG9taWMgb3BlcmF0aW9ucyBhbmQgbWVtb3J5IG9yZGVyaW5ncyAoZS5nLiBfX2F0b21pY19sb2Fk X24oX19BVE9NSUNfQUNRVUlSRSksIHRoZSBleHRyYSBBREQgaW5zdHJ1Y3Rpb24gd2lsbCBiZSBp bmNsdWRlZCBhbnl3YXkgKGFzIGxvbmcgYXMgd2UgYWNjZXNzIGEgbm9uLWZpcnN0IHN0cnVjdCBt ZW1iZXIpIGJlY2F1c2UgZS5nLiBMREFSIG9ubHkgYWNjZXB0cyBhIGJhc2UgcmVnaXN0ZXIgd2l0 aCBubyBvZmZzZXQuDQoNCkkgc3VnZ2VzdCBtaW5pbWlzaW5nIHRoZSBpbXBvc2VkIG1lbW9yeSBv cmRlcmluZ3MgY2FuIGhhdmUgYSBtdWNoIGxhcmdlciAocG9zaXRpdmUpIGVmZmVjdCBvbiBwZXJm b3JtYW5jZSBjb21wYXJlZCB0byBhdm9pZGluZyBvbmUgQUREIGluc3RydWN0aW9uIChtZW1vcnkg YWNjZXNzZXMgYXJlIG11Y2ggc2xvd2VyIHRoYW4gQ1BVIEFMVSBpbnN0cnVjdGlvbnMpLg0KVXNp bmcgQzExIG1lbW9yeSBtb2RlbCBhbmQgaWRlbnRpZnlpbmcgZXhhY3RseSB3aGljaCBvYmplY3Rz IGFyZSB1c2VkIGZvciBzeW5jaHJvbmlzYXRpb24gYW5kIHdoZXRoZXIgKGFueSkgdXBkYXRlcyB0 byBzaGFyZWQgbWVtb3J5IGFyZSBhY3F1aXJlZCBvciByZWxlYXNlZCAobm8gdXBkYXRlcyB0byBz aGFyZWQgbWVtb3J5IG1lYW5zIHJlbGF4ZWQgb3JkZXIgY2FuIGJlIHVzZWQpIHdpbGwgcHJvdmlk ZSBtYXhpbXVtIGZyZWVkb20gdG8gdGhlIGNvbXBpbGVyIGFuZCBoYXJkd2FyZSB0byBnZXQgdGhl IGJlc3QgcmVzdWx0Lg0KDQpUaGUgRnJlZUJTRCBhbmQgRFBESyByaW5nIGJ1ZmZlcnMgc2hvdyBz b21lIGZ1bmRhbWVudGFsIG1pc3VuZGVyc3RhbmRpbmdzIGhlcmUuIEluc3RlYWQgZXhjZXNzaXZl IG9yZGVyaW5ncyBhbmQgZXhwbGljaXQgYmFycmllcnMgaGF2ZSBiZWVuIHVzZWQgYXMgYmFuZC1h aWRzLCB3aXRoIHVua25vd24gZWZmZWN0cyBvbiBwZXJmb3JtYW5jZS4NCg0KICAgIA0KICAgID4g DQogICAgPiANCiAgICA+ICAgICBUaGF0IHRoZSByZWFzb24gd2h5IEkgc2hhcmVkDQogICAgPiAg ICAgdGhlIGdlbmVyYXRlZCBhc3NlbWJseSBjb2RlLiBJZiB5b3UgdGhpbmsgb3RoZXIgd2F5LCBQ aWNrIGFueSBjb21waWxlcg0KICAgID4gICAgIGFuZCBzZWUgZ2VuZXJhdGVkIG91dHB1dC4NCiAg ICA+IFRoaXMgaXMgd2hhdCBvbmUgY29tcGlsZXIgZm9yIG9uZSBhcmNoaXRlY3R1cmUgZ2VuZXJh dGVzIHRvZGF5LiBUaGVzZSB0aGluZ3MgY2hhbmdlLiBPdGhlciB0aGluZ3MNCiAgICA+IHRoYXQg dXNlZCB0byB3b3JrIG9yIHdvcmtlZCBmb3Igc29tZSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgaGFz IHN0b3BwZWQgd29ya2luZyBpbiBuZXdlciB2ZXJzaW9ucyBvZg0KICAgID4gdGhlIGNvbXBpbGVy Lg0KICAgID4gDQogICAgPiANCiAgICA+ICAgICBBbmQNCiAgICA+IA0KICAgID4gICAgIEZyZWVi c2QgaW1wbGVtZW50YXRpb24gb2YgcmluZyBidWZmZXIoV2hpY2ggRFBESyBkZXJpdmVkIGZyb20p LCBEb24ndCBoYXZlDQogICAgPiAgICAgc3VjaCBsb2dpYywgU2VlIGh0dHBzOi8vZ2l0aHViLmNv bS9mcmVlYnNkL2ZyZWVic2QvYmxvYi9tYXN0ZXIvc3lzL3N5cy9idWZfcmluZy5oI0wxMDgNCiAg ICA+IEl0IGxvb2tzIGxpa2UgRnJlZUJTRCB1c2VzIHNvbWUga2luZCBvZiBDMTEgYXRvbWljIG1l bW9yeSBtb2RlbC1pbnNwaXJlZCBBUEkgYWx0aG91Z2ggSSBkb24ndCBzZWUNCiAgICA+IGV4YWN0 bHkgaG93IGUuZy4gYXRvbWljX3N0b3JlX3JlbF9pbnQoKSBpcyBpbXBsZW1lbnRlZC4gVGhlIGNv ZGUgYWxzbyBtaXhlcyBpbiBleHBsaWNpdCBiYXJyaWVycw0KICAgID4gc28gZGVmaW5pdGl2ZWx5 IG5vdCBwdXJlIEMxMSBtZW1vcnkgbW9kZWwgdXNhZ2UuIEFuZCBmaW5hbGx5LCBpdCBkb2Vzbid0 IGVzdGFibGlzaCB0aGUgcHJvcGVyDQogICAgPiBsb2FkLWFjcXVpcmUvc3RvcmUtcmVsZWFzZSBy ZWxhdGlvbnNoaXBzIChlLmcuIHN0b3JlLXJlbGVhc2UgY29uc190YWlsIHJlcXVpcmVzIGEgbG9h ZC1hY3F1aXJlIGNvbnNfdGFpbCwNCiAgICA+IHNhbWUgZm9yIHByb2RfdGFpbCkuDQogICAgPiAN CiAgICA+ICIqIG11bHRpLXByb2R1Y2VyIHNhZmUgbG9jay1mcmVlIHJpbmcgYnVmZmVyIGVucXVl dWUiDQogICAgPiBUaGUgY29tbWVudCBpcyBhbHNvIHdyb25nLiBUaGlzIGRlc2lnbiBpcyBub3Qg bG9jay1mcmVlLCBob3cgY291bGQgaXQgYmUgd2hlbiB0aGVyZSBpcyBzcGlubmluZw0KICAgID4g KHdhaXRpbmcpIGZvciBvdGhlciB0aHJlYWRzIGluIHRoZSBjb2RlPyBJZiBhIHRocmVhZCBtdXN0 IHdhaXQgZm9yIG90aGVyIHRocmVhZHMsIHRoZW4gYnkgZGVmaW5pdGlvbg0KICAgID4gdGhlIGRl c2lnbiBpcyBibG9ja2luZy4NCiAgICA+IA0KICAgID4gU28geW91IGFyZSBzYXlpbmcgdGhhdCBi ZWNhdXNlIEZyZWVCU0QgaXMgZG9pbmcgaXQgd3JvbmcsIERQREsgY2FuIGFsc28gZG8gaXQgd3Jv bmc/DQogICAgPiANCiAgICA+IA0KICAgID4gICAgIFNlZSBiZWxvdyB0b28uDQogICAgPiANCiAg ICA+ICAgICA+DQogICAgPiAgICAgPiBTa2lwcGluZyB0aGUgY29tcGlsZXIgbWVtb3J5IGJhcnJp ZXIgaW4gcnRlX3BhdXNlKCkgcG90ZW50aWFsbHkgYWxsb3dzIGZvciBvcHRpbWlzYXRpb25zIHRo YXQgcHJvdmlkZSBtdWNoIG1vcmUgYmVuZWZpdCwgZS5nLiBoaWRpbmcgc29tZSBjYWNoZSBtaXNz IGxhdGVuY3kgZm9yIGxhdGVyIGxvYWRzLiBUaGUgRFBESyByaW5nIGJ1ZmZlciBpbXBsZW1lbnRh dGlvbiBpcyBkZWZpbmVkIHNvIHRvIGVuYWJsZSBpbmxpbmluZyBvZiBlbnF1ZXVlL2RlcXVldWUg ZnVuY3Rpb25zIGludG8gdGhlIGNhbGxlciwgYW55IGNvZGUgY291bGQgaW1tZWRpYXRlbHkgZm9s bG93IHRoZXNlIGNhbGxzLg0KICAgID4gICAgID4NCiAgICA+ICAgICA+IEZyb20gSU5URVJOQVRJ T05BTCBTVEFOREFSRCDCqUlTTy9JRUMgSVNPL0lFQyA5ODk5OjIwMXgNCiAgICA+ICAgICA+IFBy b2dyYW1taW5nIGxhbmd1YWdlcyDigJQgQw0KICAgID4gICAgID4NCiAgICA+ICAgICA+IDUuMS4y LjQNCiAgICA+ICAgICA+IDQgVHdvIGV4cHJlc3Npb24gZXZhbHVhdGlvbnMgY29uZmxpY3QgaWYg b25lIG9mIHRoZW0gbW9kaWZpZXMgYSBtZW1vcnkgbG9jYXRpb24gYW5kIHRoZSBvdGhlciBvbmUg cmVhZHMgb3IgbW9kaWZpZXMgdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLg0KICAgID4gICAgID4N CiAgICA+ICAgICA+IDI1IFRoZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtIGNvbnRhaW5zIGEgZGF0 YSByYWNlIGlmIGl0IGNvbnRhaW5zIHR3byBjb25mbGljdGluZyBhY3Rpb25zIGluIGRpZmZlcmVu dCB0aHJlYWRzLCBhdCBsZWFzdCBvbmUgb2Ygd2hpY2ggaXMgbm90IGF0b21pYywgYW5kIG5laXRo ZXIgaGFwcGVucyBiZWZvcmUgdGhlIG90aGVyLiBBbnkgc3VjaCBkYXRhIHJhY2UgcmVzdWx0cyBp biB1bmRlZmluZWQgYmVoYXZpb3IuDQogICAgPiANCiAgICA+ICAgICBJTU8sIEJvdGggY29uZGl0 aW9uIHdpbGwgc2F0aXNmeSBpZiB0aGUgdmFyaWFibGUgaXMgdm9sYXRpbGUgYW5kIDMyYml0IHJl YWQgd2lsbCBhdG9taWMNCiAgICA+ICAgICBmb3IgMzJiIGFuZCA2NGIgbWFjaGluZXMuIElmIG5v dCwgdGhlIHByb2JsZW0gcGVyc2lzdCBmb3IgZ2VuZXJpYyBjYXNlDQogICAgPiAgICAgYXMgd2Vs bChsaWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfZ2VuZXJpYy5oKQ0KICAgID4gVGhlIHJlYWQgZnJv bSBhIHZvbGF0aWxlIG9iamVjdCBpcyBub3QgYW4gYXRvbWljIGFjY2VzcyBwZXIgdGhlIEMxMSBz cGVjLiBJdCBqdXN0IGhhcHBlbnMgdG8NCiAgICA+IGJlIHRyYW5zbGF0ZWQgdG8gYW4gaW5zdHJ1 Y3Rpb24gKG9uIHg4Ni02NCBhbmQgQUFyY2g2NC9BNjQpIHRoYXQgaW1wbGVtZW50cyBhbiBhdG9t aWMgbG9hZC4NCiAgICA+IEkgZG9uJ3QgdGhpbmsgYW55IGNvbXBpbGVyIHdvdWxkIGNoYW5nZSB0 aGlzIGNvZGUgZ2VuZXJhdGlvbiBhbmQgc3VkZGVubHkgZ2VuZXJhdGUgc29tZQ0KICAgID4gbm9u LWF0b21pYyBsb2FkIGluc3RydWN0aW9uIGZvciBhIHByb2dyYW0gdGhhdCAqb25seSogdXNlcyB2 b2xhdGlsZSB0byBkbyAiYXRvbWljIiBhY2Nlc3Nlcy4NCiAgICA+IEJ1dCBhIGZ1dHVyZSBjb21w aWxlciBjb3VsZCBkZXRlY3QgdGhlIG1peCBvZiBhdG9taWMgYW5kIG5vbi1hdG9taWMgYWNjZXNz ZXMgYW5kIG1hcmsgdGhpcw0KICAgID4gZXhwcmVzc2lvbiBhcyBjYXVzaW5nIHVuZGVmaW5lZCBi ZWhhdmlvdXIgYW5kIHRoYXQgd291bGQgaGF2ZSBjb25zZXF1ZW5jZXMgZm9yIGNvZGUgZ2VuZXJh dGlvbi4NCiAgICA+IA0KICAgID4gDQogICAgPiAgICAgSSBhZ3JlZSB3aXRoIHlvdSBvbiBDMTEg bWVtb3J5IG1vZGVsIHNlbWFudGljcyB1c2FnZS4gVGhlIHJlYXNvbiB3aHkgSQ0KICAgID4gICAg IHByb3Bvc2UgbmFtZSBmb3IgdGhlIGZpbGUgYXMgcnRlX3JpbmdfYzExX21lbS5oIGFzIERQREsg aXQgc2VsZiBkaWQgbm90DQogICAgPiAgICAgaGFkIGRlZmluaXRpb25zIGZvciBsb2FkIGFjcXVp cmUgYW5kIHN0b3JlIHJlbGVhc2Ugc2VtYW50aWNzLg0KICAgID4gICAgIEkgd2FzIGxvb2tpbmcg Zm9yIHRha2luZyBsb2FkIGFjcXVpcmUgYW5kIHN0b3JlIHJlbGVhc2Ugc2VtYW50aWNzDQogICAg PiAgICAgZnJvbSBDMTEgaW5zdGVhZCBvZiBjcmVhdGluZyBuZXcgQVBJIGxpa2UgTGludXgga2Vy bmVsIGZvciBGcmVlQlNEKEFQSXMNCiAgICA+ICAgICBsaWtlICBhdG9taWNfbG9hZF9hY3FfMzIo KSwgYXRvbWljX3N0b3JlX3JlbF8zMigpKS4gSWYgdGhlIGZpbGUgbmFtZSBpcyB5b3VyDQogICAg PiAgICAgY29uY2VybiB0aGVuIHdlIGNvdWxkIGNyZWF0ZSBuZXcgYWJzdHJhY3Rpb25zIGFzIHdl bGwuIFRoYXQgd291bGQgaGVscA0KICAgID4gICAgIGV4aXRpbmcgS05JIHByb2JsZW0gYXMgd2Vs bC4NCiAgICA+IEkgYXBwcmVjaWF0ZSB5b3VyIGVtYnJhY2Ugb2YgdGhlIEMxMSBtZW1vcnkgbW9k ZWwuIEkgdGhpbmsgaXQgaXMgYmV0dGVyIGZvciBkZXNjcmliaW5nDQogICAgPiAoYm90aCB0byB0 aGUgY29tcGlsZXIgYW5kIHRvIGh1bWFucykgd2hpY2ggYW5kIGhvdyBvYmplY3RzIGFyZSB1c2Vk IGZvciBzeW5jaHJvbmlzYXRpb24uDQogICAgPiANCiAgICA+IEhvd2V2ZXIsIEkgZG9uJ3QgdGhp bmsgYW4gQVBJIGFzIHlvdSBzdWdnZXN0IChhbmQgb3RoZXJzIGhhdmUgc3VnZ2VzdGVkIGJlZm9y ZSwgZS5nLiBhcw0KICAgID4gZG9uZSBpbiBPRFApIGlzIGEgZ29vZCBpZGVhLiBUaGVyZSBpcyBh biBpbmZpbml0ZSBhbW91bnQgb2YgcG9zc2libGUgYmFzZSB0eXBlcywgYW4NCiAgICA+IGluY3Jl YXNpbmcgbnVtYmVyIG9mIG9wZXJhdGlvbnMgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50IG1lbW9y eSBvcmRlcmluZ3MsIGEgImNvbXBsZXRlIg0KICAgID4gQVBJIHdvdWxkIGJlIHZlcnkgbGFyZ2Ug YW5kIGRpZmZpY3VsdCB0byB0ZXN0LCBhbmQgbW9zdCBtZW1iZXJzIG9mIHRoZSBBUEkgd291bGQg bmV2ZXIgYmUgdXNlZC4NCiAgICA+IEdDQyBhbmQgQ2xhbmcgYm90aCBzdXBwb3J0IHRoZSBfX2F0 b21pYyBpbnRyaW5zaWNzLiBUaGlzIEFQSSBhdm9pZHMgdGhlIHByb2JsZW1zIEkNCiAgICA+IGRl c2NyaWJlZCBhYm92ZS4gT3Igd2UgY291bGQgdXNlIHRoZSBvZmZpY2lhbCBDMTEgc3ludGF4IChz dGRhdG9taWMuaCkuIEJ1dCB0aGVuIHdlDQogICAgPiBoYXZlIHRoZSBwcm9ibGVtIHdpdGggdXNp bmcgcHJlLUMxMSBjb21waWxlcnMuLi4NCiAgICANCiAgICBJIGhhdmUgbm8gb2JqZWN0aW9uLCBp ZiBldmVyeW9uZSBhZ3JlZXMgdG8gbW92ZSBDMTEgbWVtb3J5IG1vZGVsDQogICAgd2l0aCBfX2F0 b21pYyBpbnRyaW5zaWNzLiBCdXQgaWYgd2UgbmVlZCB0byBrZWVwIGJvdGggaGF2ZSB0aGVuDQog ICAgYXRvbWljX2xvYWRfYWNxXzMyKCkga2luZCBvZiBBUEkgbWFrZSBzZW5zZS4NCiAgICANCiAg ICANCiAgICA+IA0KICAgID4gDQogICAgPiANCiAgICA+IA0KICAgID4gICAgIEkgdGhpbmssIGN1 cnJlbnRseSBpdCBtaXhlZCB1c2FnZSBiZWNhdXNlLCB0aGUgc2FtZSB2YXJpYWJsZSBkZWNsYXJh dGlvbg0KICAgID4gICAgIHVzZWQgZm9yIEMxMSB2cyBub24gQzExIHVzYWdlLklkZWFsbHkgd2Ug d29udCBuZWVkICJ2b2xhdGlsZSIgZm9yIEMxMQ0KICAgID4gICAgIGNhc2UuIEVpdGhlciB3ZSBu ZWVkIHRvIGNoYW5nZSBvbmx5IHRvIEMxMSBtb2RlIE9SIGhhdmUgQVBJcyBmb3INCiAgICA+ICAg ICBhdG9taWNfbG9hZF9hY3FfKCkgYW5kIGF0b21pY19zdG9yZV9yZWxfKCkgdG8gYWxsb3cgYm90 aCBtb2RlbHMgbGlrZQ0KICAgID4gICAgIExpbnV4IGtlcm5lbCBhbmQgRnJlZUJTRC4NCiAgICA+ IA0KICAgID4gICAgID4NCiAgICA+ICAgICA+IC0tIE9sYQ0KICAgID4gICAgID4NCiAgICA+ICAg ICA+DQogICAgPiAgICAgPg0KICAgID4gDQogICAgPiANCiAgICANCg0K