From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 539E8A0352; Thu, 14 May 2020 15:45:18 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2CEBE1D94C; Thu, 14 May 2020 15:45:18 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by dpdk.org (Postfix) with ESMTP id 2CE431D943 for ; Thu, 14 May 2020 15:45:16 +0200 (CEST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Date: Thu, 14 May 2020 15:45:13 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C60FC5@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH] ring: empty and count optimizations Thread-Index: AQHWKTus3WKEl/7imUeh4dx746rUOqimP7MAgAFBi7CAAAuaQA== References: <20200513153111.37063-1-mb@smartsharesystems.com> <20200513170812.38233-1-mb@smartsharesystems.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Ananyev, Konstantin" , , , Cc: Subject: Re: [dpdk-dev] [PATCH] ring: empty and count optimizations 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEFu YW55ZXYsDQo+IEtvbnN0YW50aW4NCj4gU2VudDogVGh1cnNkYXksIE1heSAxNCwgMjAyMCAyOjI0 IFBNDQo+IA0KPiANCj4gSGkgTW9ydGVuLA0KPiANCj4gPiBUZXN0aW5nIGlmIHRoZSByaW5nIGlz IGVtcHR5IGlzIGFzIHNpbXBsZSBhcyBjb21wYXJpbmcgdGhlIHByb2R1Y2VyDQo+IGFuZA0KPiA+ IGNvbnN1bWVyIHBvaW50ZXJzLg0KPiA+IEluIHRoZW9yeSwgdGhpcyBvcHRpbWl6YXRpb24gcmVk dWNlcyB0aGUgbnVtYmVyIG9mIHBvdGVudGlhbCBjYWNoZQ0KPiBtaXNzZXMNCj4gPiBmcm9tIDMg dG8gMiBieSBub3QgaGF2aW5nIHRvIHJlYWQgci0+bWFzayBpbiBydGVfcmluZ19jb3VudCgpLg0K PiA+DQo+ID4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGVucXVldWUgbW9yZSBlbGVtZW50cyB0aGFu IHRoZSBjYXBhY2l0eSBvZiBhDQo+IHJpbmcsDQo+ID4gc28gdGhlIGNhcGFjaXR5IGNvbXBhcmlz b24gaXMgYSBzYWZlZ3VhcmQgZm9yIG9ic2VydmVyIHRocmVhZHMgb25seS4NCj4gPiBJbnN0ZWFk IG9mIGNvbXBsZXRlbHkgcmVtb3ZpbmcgdGhlIGNvbXBhcmlzb24sIEkgaGF2ZSByZW9yZ2FuaXpl ZCBpdA0KPiB0bw0KPiA+IHJlc2VtYmxlIHRoZSBvdGhlciB0cmlncmFocHMgaW4gdGhlIHJpbmcg bGlicmFyeSBhbmQgYWRkZWQgYQ0KPiBsaWtlbHkoKS4NCj4gPg0KPiA+IFRoZSBtb2RpZmljYXRp b24gb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucyB3ZXJlIGRpc2N1c3NlZCBpbiB0aGUgUkZDDQo+IGhl cmU6DQo+ID4gaHR0cHM6Ly9tYWlscy5kcGRrLm9yZy9hcmNoaXZlcy9kZXYvMjAyMC1BcHJpbC8x NjU3NTIuaHRtbA0KPiA+DQo+ID4gQWxzbyBmaXhlZCBzb21lIGV4aXN0aW5nIGNvZGUgbm90IHBh c3NpbmcgY2hlY2twYXRjaC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE1vcnRlbiBCcsO4cnVw IDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQo+ID4gLS0tDQo+ID4gIGxpYi9saWJydGVfcmlu Zy9ydGVfcmluZy5oIHwgMzYgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tDQo+ ID4gIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmcuaCBiL2xpYi9saWJy dGVfcmluZy9ydGVfcmluZy5oDQo+ID4gaW5kZXggODZmYWVkZTgxLi4zNjQzOGQ5Y2QgMTAwNjQ0 DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nLmgNCj4gPiArKysgYi9saWIvbGli cnRlX3JpbmcvcnRlX3JpbmcuaA0KPiA+IEBAIC01NSw3ICs1NSw3IEBAIGV4dGVybiAiQyIgew0K PiA+ICAgKiAgIC0gVGhlIG1lbW9yeSBzaXplIG5lZWRlZCBmb3IgdGhlIHJpbmcgb24gc3VjY2Vz cy4NCj4gPiAgICogICAtIC1FSU5WQUwgaWYgY291bnQgaXMgbm90IGEgcG93ZXIgb2YgMi4NCj4g PiAgICovDQo+ID4gLXNzaXplX3QgcnRlX3JpbmdfZ2V0X21lbXNpemUodW5zaWduZWQgY291bnQp Ow0KPiA+ICtzc2l6ZV90IHJ0ZV9yaW5nX2dldF9tZW1zaXplKHVuc2lnbmVkIGludCBjb3VudCk7 DQo+IA0KPiBBbGwgdGhlc2UgY2hhbmdlcyB0byByZXBsYWNlICd1bnNpZ25lZCcgd2l0aCBpbnNp Z25lZCBpbnQnIC0NCj4gc2VlbXMgdG8gYmUgaXJyZWxldmFudCB0byB0aGUgcGF0Y2ggc3ViamVj dCwgc28gY2FuIHlvdQ0KPiBwdXQgdGhlbSB0byBhIHNlcGFyYXRlIHBhdGNoIGluIHRoZSBzZXJp ZXMuDQoNCldpbGwgZG8uDQoNClBlcmhhcHMgeW91IGNvdWxkIGZpbmQgYW4gaW50ZXJuIGluIElu dGVsIHRvIGZpeCBhbGwgdGhlc2UgcXVpcmtzIGluIGFuY2llbnQgRFBESyBjb2RlIHRoYXQgY2hl Y2twYXRjaCBjb21wbGFpbnMgYWJvdXQgaW4gb25lIGJpZyBwYXRjaCwgc28gd2UgZG9uJ3QgcnVu IGludG8gdGhpcyBvdmVyIGFuZCBvdmVyIGFnYWluLCB3aGVuIHN1Ym1pdHRpbmcgcGF0Y2hlcy4g Oi0pDQoNCj4gDQo+ID4gIC8qKg0KPiA+ICAgKiBJbml0aWFsaXplIGEgcmluZyBzdHJ1Y3R1cmUu DQo+ID4gQEAgLTEwOSw4ICsxMDksOCBAQCBzc2l6ZV90IHJ0ZV9yaW5nX2dldF9tZW1zaXplKHVu c2lnbmVkIGNvdW50KTsNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgIDAgb24gc3VjY2Vzcywg b3IgYSBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvci4NCj4gPiAgICovDQo+ID4gLWludCBydGVfcmlu Z19pbml0KHN0cnVjdCBydGVfcmluZyAqciwgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQNCj4g Y291bnQsDQo+ID4gLQl1bnNpZ25lZCBmbGFncyk7DQo+ID4gK2ludCBydGVfcmluZ19pbml0KHN0 cnVjdCBydGVfcmluZyAqciwgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50DQo+IGNvdW50 LA0KPiA+ICsJdW5zaWduZWQgaW50IGZsYWdzKTsNCj4gPg0KPiA+ICAvKioNCj4gPiAgICogQ3Jl YXRlIGEgbmV3IHJpbmcgbmFtZWQgKm5hbWUqIGluIG1lbW9yeS4NCj4gPiBAQCAtMTY5LDggKzE2 OSw4IEBAIGludCBydGVfcmluZ19pbml0KHN0cnVjdCBydGVfcmluZyAqciwgY29uc3QgY2hhcg0K PiAqbmFtZSwgdW5zaWduZWQgY291bnQsDQo+ID4gICAqICAgIC0gRUVYSVNUIC0gYSBtZW16b25l IHdpdGggdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cw0KPiA+ICAgKiAgICAtIEVOT01FTSAt IG5vIGFwcHJvcHJpYXRlIG1lbW9yeSBhcmVhIGZvdW5kIGluIHdoaWNoIHRvIGNyZWF0ZQ0KPiBt ZW16b25lDQo+ID4gICAqLw0KPiA+IC1zdHJ1Y3QgcnRlX3JpbmcgKnJ0ZV9yaW5nX2NyZWF0ZShj b25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjb3VudCwNCj4gPiAtCQkJCSBpbnQgc29ja2V0X2lk LCB1bnNpZ25lZCBmbGFncyk7DQo+ID4gK3N0cnVjdCBydGVfcmluZyAqcnRlX3JpbmdfY3JlYXRl KGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludA0KPiBjb3VudCwNCj4gPiArCQkJCSBpbnQg c29ja2V0X2lkLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOw0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgKiBE ZS1hbGxvY2F0ZSBhbGwgbWVtb3J5IHVzZWQgYnkgdGhlIHJpbmcuDQo+ID4gQEAgLTE5OSw3ICsx OTksNyBAQCB2b2lkIHJ0ZV9yaW5nX2R1bXAoRklMRSAqZiwgY29uc3Qgc3RydWN0IHJ0ZV9yaW5n DQo+ICpyKTsNCj4gPiAgCXVpbnQzMl90IGlkeCA9IHByb2RfaGVhZCAmIChyKS0+bWFzazsgXA0K PiA+ICAJb2JqX3R5cGUgKnJpbmcgPSAob2JqX3R5cGUgKilyaW5nX3N0YXJ0OyBcDQo+ID4gIAlp ZiAobGlrZWx5KGlkeCArIG4gPCBzaXplKSkgeyBcDQo+ID4gLQkJZm9yIChpID0gMDsgaSA8IChu ICYgKCh+KHVuc2lnbmVkKTB4MykpKTsgaSs9NCwgaWR4Kz00KSB7IFwNCj4gPiArCQlmb3IgKGkg PSAwOyBpIDwgKG4gJiB+MHgzKTsgaSArPSA0LCBpZHggKz0gNCkgeyBcDQo+ID4gIAkJCXJpbmdb aWR4XSA9IG9ial90YWJsZVtpXTsgXA0KPiA+ICAJCQlyaW5nW2lkeCsxXSA9IG9ial90YWJsZVtp KzFdOyBcDQo+ID4gIAkJCXJpbmdbaWR4KzJdID0gb2JqX3RhYmxlW2krMl07IFwNCj4gPiBAQCAt MjMwLDcgKzIzMCw3IEBAIHZvaWQgcnRlX3JpbmdfZHVtcChGSUxFICpmLCBjb25zdCBzdHJ1Y3Qg cnRlX3JpbmcNCj4gKnIpOw0KPiA+ICAJY29uc3QgdWludDMyX3Qgc2l6ZSA9IChyKS0+c2l6ZTsg XA0KPiA+ICAJb2JqX3R5cGUgKnJpbmcgPSAob2JqX3R5cGUgKilyaW5nX3N0YXJ0OyBcDQo+ID4g IAlpZiAobGlrZWx5KGlkeCArIG4gPCBzaXplKSkgeyBcDQo+ID4gLQkJZm9yIChpID0gMDsgaSA8 IChuICYgKH4odW5zaWduZWQpMHgzKSk7IGkrPTQsIGlkeCs9NCkge1wNCj4gPiArCQlmb3IgKGkg PSAwOyBpIDwgKG4gJiB+MHgzKTsgaSArPSA0LCBpZHggKz0gNCkge1wNCj4gPiAgCQkJb2JqX3Rh YmxlW2ldID0gcmluZ1tpZHhdOyBcDQo+ID4gIAkJCW9ial90YWJsZVtpKzFdID0gcmluZ1tpZHgr MV07IFwNCj4gPiAgCQkJb2JqX3RhYmxlW2krMl0gPSByaW5nW2lkeCsyXTsgXA0KPiA+IEBAIC02 ODMsMTMgKzY4MywxMyBAQCBydGVfcmluZ19yZXNldChzdHJ1Y3QgcnRlX3JpbmcgKnIpOw0KPiA+ ICAgKiBAcmV0dXJuDQo+ID4gICAqICAgVGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSByaW5n Lg0KPiA+ICAgKi8NCj4gPiAtc3RhdGljIGlubGluZSB1bnNpZ25lZA0KPiA+ICtzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGludA0KPiA+ICBydGVfcmluZ19jb3VudChjb25zdCBzdHJ1Y3QgcnRlX3Jp bmcgKnIpDQo+ID4gIHsNCj4gPiAgCXVpbnQzMl90IHByb2RfdGFpbCA9IHItPnByb2QudGFpbDsN Cj4gPiAgCXVpbnQzMl90IGNvbnNfdGFpbCA9IHItPmNvbnMudGFpbDsNCj4gPiAgCXVpbnQzMl90 IGNvdW50ID0gKHByb2RfdGFpbCAtIGNvbnNfdGFpbCkgJiByLT5tYXNrOw0KPiA+IC0JcmV0dXJu IChjb3VudCA+IHItPmNhcGFjaXR5KSA/IHItPmNhcGFjaXR5IDogY291bnQ7DQo+ID4gKwlyZXR1 cm4gbGlrZWx5KGNvdW50IDw9IHItPmNhcGFjaXR5KSA/IGNvdW50IDogci0+Y2FwYWNpdHk7DQo+ IA0KPiBIb25lc3RseSwgSSBkb24ndCBzZWUgdGhlcmUgaXMgYW55IHBvaW50IG9mIHRoYXQgY2hh bmdlOg0KPiBJIHRoaW5rIGl0IHdvdWxkbid0IGNoYW5nZSBhbnl0aGluZyBpbiB0ZXJtcyBvZiBm dW5jdGlvbmFsaXR5DQo+IG9yIHBlcmZvcm1hbmNlLg0KDQpDaGFwdGVyIDMuNC4xICJCcmFuY2gg UHJlZGljdGlvbiBPcHRpbWl6YXRpb24iIGluIHRoZSBJbnRlbCA2NCBhbmQgSUEtMzIgQXJjaGl0 ZWN0dXJlcyBPcHRpbWl6YXRpb24gUmVmZXJlbmNlIE1hbnVhbCByZWNvbW1lbmRzIHRoaXMga2lu ZCBvZiBvcHRpbWl6YXRpb24gYXMgQXNzZW1ibHkvQ29tcGlsZXIgQ29kaW5nIFJ1bGUgMywgd2hp Y2ggaXMgd2h5IEkgcmVhcnJhbmdlZCB0aGUgdHJpZ3JhcGguIEVzc2VudGlhbGx5LCB0aGVyZSBp cyBhIGxpbWl0IHRvIHRoZSBudW1iZXIgb2YgQlRCIChCcmFuY2ggVGFyZ2V0IEJ1ZmZlcikgZW50 cmllcywgc28gdGhleSBzaG91bGQgYmUgY29uc2VydmVkIGlmIHBvc3NpYmxlLg0KDQpJbiBhZGRp dGlvbiB0byB0aGF0LCBJIGhhdmUgYWRkZWQgdGhlIGxpa2VseSgpIGJlY2F1c2UgSSBjb25zaWRl ciBpdCBuZWFybHkgaW1wb3NzaWJsZSB0aGF0IHRoZSBjb3VudCB3aWxsIGV4Y2VlZCB0aGUgY2Fw YWNpdHkuDQoNCkhvd2V2ZXIsIGl0J3Mgbm90IHRoZSBmaXJzdCB0aW1lIEkgc2VlIHRoaXMga2lu ZCBvZiByZXNwb25zZSB0byBhIHN1Z2dlc3RlZCBicmFuY2ggb3B0aW1pemF0aW9uIG9uIHRoZSBE UERLIG1haWxpbmcgbGlzdC4gRXZlcnlvbmUgc2VlbSB0byB0aGluayB0aGF0IGJyYW5jaCBwcmVk aWN0aW9uIGlzIGluZmluaXRlIGFuZCBhbHdheXMgd29ya3MuIEl0IG1heSBzZWVtIGFzIGlmIGlu ZmluaXRlIG9uIHRyaXZpYWwgYXBwbGljYXRpb25zLCBidXQgQlRCIGVudHJpZXMgbWF5IGJlIGEg c2NhcmNlIHJlc291cmNlIG9uIGNvbXBsZXggYXBwbGljYXRpb25zLiBJIGFzc3VtZSBJbnRlbCdz IHJlY29tbWVuZGF0aW9ucyBhcmUgbm90IGp1c3QgZm9yIHRoZSBmdW4gb2YgaXQuDQoNCktvbnN0 YW50aW4sIHBsZWFzZSBub3RlIHRoYXQgSSdtIGxldHRpbmcgb3V0IG15IGZydXN0cmF0aW9uIGFi b3V0IHRoZSBnZW5lcmFsIG1pc2NvbmNlcHRpb24gYWJvdXQgYnJhbmNoIHByZWRpY3Rpb24gaGVy ZS4gWW91IGFyZSBkb2luZyBhIGdyZWF0IGpvYiwgc28gSSBmZWVsIGJhZCBhYm91dCByZXNwb25k aW5nIGxpa2UgdGhpcyB0byB5b3UuDQoNCj4gDQo+ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiBA QCAtNzAwLDcgKzcwMCw3IEBAIHJ0ZV9yaW5nX2NvdW50KGNvbnN0IHN0cnVjdCBydGVfcmluZyAq cikNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgIFRoZSBudW1iZXIgb2YgZnJlZSBlbnRyaWVz IGluIHRoZSByaW5nLg0KPiA+ICAgKi8NCj4gPiAtc3RhdGljIGlubGluZSB1bnNpZ25lZA0KPiA+ ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludA0KPiA+ICBydGVfcmluZ19mcmVlX2NvdW50KGNv bnN0IHN0cnVjdCBydGVfcmluZyAqcikNCj4gPiAgew0KPiA+ICAJcmV0dXJuIHItPmNhcGFjaXR5 IC0gcnRlX3JpbmdfY291bnQocik7DQo+ID4gQEAgLTczMyw3ICs3MzMsOSBAQCBydGVfcmluZ19m dWxsKGNvbnN0IHN0cnVjdCBydGVfcmluZyAqcikNCj4gPiAgc3RhdGljIGlubGluZSBpbnQNCj4g PiAgcnRlX3JpbmdfZW1wdHkoY29uc3Qgc3RydWN0IHJ0ZV9yaW5nICpyKQ0KPiA+ICB7DQo+ID4g LQlyZXR1cm4gcnRlX3JpbmdfY291bnQocikgPT0gMDsNCj4gPiArCXVpbnQzMl90IHByb2RfdGFp bCA9IHItPnByb2QudGFpbDsNCj4gPiArCXVpbnQzMl90IGNvbnNfdGFpbCA9IHItPmNvbnMudGFp bDsNCj4gPiArCXJldHVybiBjb25zX3RhaWwgPT0gcHJvZF90YWlsOw0KPiA+ICB9DQo+ID4NCj4g PiAgLyoqDQo+ID4gQEAgLTg2MCw3ICs4NjIsNyBAQCBzdHJ1Y3QgcnRlX3JpbmcgKnJ0ZV9yaW5n X2xvb2t1cChjb25zdCBjaGFyDQo+ICpuYW1lKTsNCj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAg IC0gbjogQWN0dWFsIG51bWJlciBvZiBvYmplY3RzIGVucXVldWVkLg0KPiA+ICAgKi8NCj4gPiAt c3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQNCj4gPiArc3RhdGljIF9fcnRlX2Fs d2F5c19pbmxpbmUgdW5zaWduZWQgaW50DQo+ID4gIHJ0ZV9yaW5nX21wX2VucXVldWVfYnVyc3Qo c3RydWN0IHJ0ZV9yaW5nICpyLCB2b2lkICogY29uc3QNCj4gKm9ial90YWJsZSwNCj4gPiAgCQkJ IHVuc2lnbmVkIGludCBuLCB1bnNpZ25lZCBpbnQgKmZyZWVfc3BhY2UpDQo+ID4gIHsNCj4gPiBA QCAtODgzLDcgKzg4NSw3IEBAIHJ0ZV9yaW5nX21wX2VucXVldWVfYnVyc3Qoc3RydWN0IHJ0ZV9y aW5nICpyLA0KPiB2b2lkICogY29uc3QgKm9ial90YWJsZSwNCj4gPiAgICogQHJldHVybg0KPiA+ ICAgKiAgIC0gbjogQWN0dWFsIG51bWJlciBvZiBvYmplY3RzIGVucXVldWVkLg0KPiA+ICAgKi8N Cj4gPiAtc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQNCj4gPiArc3RhdGljIF9f cnRlX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50DQo+ID4gIHJ0ZV9yaW5nX3NwX2VucXVldWVf YnVyc3Qoc3RydWN0IHJ0ZV9yaW5nICpyLCB2b2lkICogY29uc3QNCj4gKm9ial90YWJsZSwNCj4g PiAgCQkJIHVuc2lnbmVkIGludCBuLCB1bnNpZ25lZCBpbnQgKmZyZWVfc3BhY2UpDQo+ID4gIHsN Cj4gPiBAQCAtOTEwLDcgKzkxMiw3IEBAIHJ0ZV9yaW5nX3NwX2VucXVldWVfYnVyc3Qoc3RydWN0 IHJ0ZV9yaW5nICpyLA0KPiB2b2lkICogY29uc3QgKm9ial90YWJsZSwNCj4gPiAgICogQHJldHVy bg0KPiA+ICAgKiAgIC0gbjogQWN0dWFsIG51bWJlciBvZiBvYmplY3RzIGVucXVldWVkLg0KPiA+ ICAgKi8NCj4gPiAtc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQNCj4gPiArc3Rh dGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50DQo+ID4gIHJ0ZV9yaW5nX2VucXVl dWVfYnVyc3Qoc3RydWN0IHJ0ZV9yaW5nICpyLCB2b2lkICogY29uc3QgKm9ial90YWJsZSwNCj4g PiAgCQkgICAgICB1bnNpZ25lZCBpbnQgbiwgdW5zaWduZWQgaW50ICpmcmVlX3NwYWNlKQ0KPiA+ ICB7DQo+ID4gQEAgLTk1NCw3ICs5NTYsNyBAQCBydGVfcmluZ19lbnF1ZXVlX2J1cnN0KHN0cnVj dCBydGVfcmluZyAqciwgdm9pZCAqDQo+IGNvbnN0ICpvYmpfdGFibGUsDQo+ID4gICAqIEByZXR1 cm4NCj4gPiAgICogICAtIG46IEFjdHVhbCBudW1iZXIgb2Ygb2JqZWN0cyBkZXF1ZXVlZCwgMCBp ZiByaW5nIGlzIGVtcHR5DQo+ID4gICAqLw0KPiA+IC1zdGF0aWMgX19ydGVfYWx3YXlzX2lubGlu ZSB1bnNpZ25lZA0KPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQN Cj4gPiAgcnRlX3JpbmdfbWNfZGVxdWV1ZV9idXJzdChzdHJ1Y3QgcnRlX3JpbmcgKnIsIHZvaWQg KipvYmpfdGFibGUsDQo+ID4gIAkJdW5zaWduZWQgaW50IG4sIHVuc2lnbmVkIGludCAqYXZhaWxh YmxlKQ0KPiA+ICB7DQo+ID4gQEAgLTk3OSw3ICs5ODEsNyBAQCBydGVfcmluZ19tY19kZXF1ZXVl X2J1cnN0KHN0cnVjdCBydGVfcmluZyAqciwNCj4gdm9pZCAqKm9ial90YWJsZSwNCj4gPiAgICog QHJldHVybg0KPiA+ICAgKiAgIC0gbjogQWN0dWFsIG51bWJlciBvZiBvYmplY3RzIGRlcXVldWVk LCAwIGlmIHJpbmcgaXMgZW1wdHkNCj4gPiAgICovDQo+ID4gLXN0YXRpYyBfX3J0ZV9hbHdheXNf aW5saW5lIHVuc2lnbmVkDQo+ID4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHVuc2lnbmVk IGludA0KPiA+ICBydGVfcmluZ19zY19kZXF1ZXVlX2J1cnN0KHN0cnVjdCBydGVfcmluZyAqciwg dm9pZCAqKm9ial90YWJsZSwNCj4gPiAgCQl1bnNpZ25lZCBpbnQgbiwgdW5zaWduZWQgaW50ICph dmFpbGFibGUpDQo+ID4gIHsNCj4gPiBAQCAtMTAwNiw3ICsxMDA4LDcgQEAgcnRlX3Jpbmdfc2Nf ZGVxdWV1ZV9idXJzdChzdHJ1Y3QgcnRlX3JpbmcgKnIsDQo+IHZvaWQgKipvYmpfdGFibGUsDQo+ ID4gICAqIEByZXR1cm4NCj4gPiAgICogICAtIE51bWJlciBvZiBvYmplY3RzIGRlcXVldWVkDQo+ ID4gICAqLw0KPiA+IC1zdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1bnNpZ25lZA0KPiA+ICtz dGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQNCj4gPiAgcnRlX3JpbmdfZGVx dWV1ZV9idXJzdChzdHJ1Y3QgcnRlX3JpbmcgKnIsIHZvaWQgKipvYmpfdGFibGUsDQo+ID4gIAkJ dW5zaWduZWQgaW50IG4sIHVuc2lnbmVkIGludCAqYXZhaWxhYmxlKQ0KPiA+ICB7DQo+ID4gLS0N Cj4gPiAyLjE3LjENCg0K