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 AB633A00C4; Thu, 29 Sep 2022 12:52:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9E25240694; Thu, 29 Sep 2022 12:52:39 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 57D3540395 for ; Thu, 29 Sep 2022 12:52:37 +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 Subject: RE: [PATCH v2] mempool: fix get objects from mempool with cache Date: Thu, 29 Sep 2022 12:52:35 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D8736C@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D8712B@smartserver.smartshare.dk> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v2] mempool: fix get objects from mempool with cache Thread-Index: AdgYDOdJ1EuuNwntQ1+79fEKK6WFXBo67tBAFL3GKPA= References: <98CBD80474FA8B44BF855DF32C47DC35D86DB2@smartserver.smartshare.dk> <20220202081426.77975-1-mb@smartsharesystems.com> <98CBD80474FA8B44BF855DF32C47DC35D8712B@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Olivier Matz" , "Andrew Rybchenko" , "Bruce Richardson" Cc: "Jerin Jacob" , "Beilei Xing" , 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 UElORyBhZ2Fpbi4NCg0KSWYgdGhlIGV4cGxhbmF0aW9uIGFuZC9vciBkaWZmIGlzIHRvbyBsb25n d2luZGVkLCBqdXN0IGxvb2sgYXQgdGhlIHJlc3VsdGluZyBjb2RlIGluc3RlYWQgLSBpdCBpcyBj bGVhbiBhbmQgZWFzaWx5IHJlYWRhYmxlLg0KDQpUaGlzIHBhdGNoIHNob3VsZCBub3QgYmUgY29u dHJvdmVyc2lhbCwgc28gSSB3b3VsZCBsaWtlIHRvIHNlZSBpdCBtZXJnZWQgaW50byB0aGUgY29t aW5nIExUUyByZWxlYXNlLiAoVW5saWtlIG15IG90aGVyIG1lbXBvb2wgcGF0Y2ggWzNdLCB3aGlj aCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiB0aGUgbWVtcG9vbCBjYWNoZS4pDQoNClszXTogaHR0 cHM6Ly9wYXRjaHdvcmsuZHBkay5vcmcvcHJvamVjdC9kcGRrL3BhdGNoLzIwMjIwMjAyMTAzMzU0 Ljc5ODMyLTEtbWJAc21hcnRzaGFyZXN5c3RlbXMuY29tLw0KDQpNZWQgdmVubGlnIGhpbHNlbiAv IEtpbmQgcmVnYXJkcywNCi1Nb3J0ZW4gQnLDuHJ1cA0KDQo+IEZyb206IE1vcnRlbiBCcsO4cnVw IFttYWlsdG86bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tXQ0KPiBTZW50OiBXZWRuZXNkYXksIDE1 IEp1bmUgMjAyMiAyMy4xOA0KPiANCj4gK0NDOiBCZWlsZWkgWGluZyA8YmVpbGVpLnhpbmdAaW50 ZWwuY29tPiwgaTQwZSBtYWludGFpbmVyLCBtYXkgYmUNCj4gaW50ZXJlc3RlZCBpbiB0aGUgcGVy Zm9ybWFuY2UgaW1wcm92ZW1lbnRzIGFjaGlldmVkIGJ5IHRoaXMgcGF0Y2guDQo+IA0KPiA+IEZy b206IE1vcnRlbiBCcsO4cnVwIFttYWlsdG86bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tXQ0KPiA+ IFNlbnQ6IFdlZG5lc2RheSwgMiBGZWJydWFyeSAyMDIyIDA5LjE0DQo+ID4NCj4gPiBBIGZsdXNo IHRocmVzaG9sZCBmb3IgdGhlIG1lbXBvb2wgY2FjaGUgd2FzIGludHJvZHVjZWQgaW4gRFBESw0K PiB2ZXJzaW9uDQo+ID4gMS4zLCBidXQgcnRlX21lbXBvb2xfZG9fZ2VuZXJpY19nZXQoKSB3YXMg bm90IGNvbXBsZXRlbHkgdXBkYXRlZCBiYWNrDQo+ID4gdGhlbiwgYW5kIHNvbWUgaW5lZmZpY2ll bmNpZXMgd2VyZSBpbnRyb2R1Y2VkLg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgZm9s bG93aW5nIGluIHJ0ZV9tZW1wb29sX2RvX2dlbmVyaWNfZ2V0KCk6DQo+ID4NCj4gPiAxLiBUaGUg Y29kZSB0aGF0IGluaXRpYWxseSBzY3JlZW5zIHRoZSBjYWNoZSByZXF1ZXN0IHdhcyBub3QgdXBk YXRlZA0KPiA+IHdpdGggdGhlIGNoYW5nZSBpbiBEUERLIHZlcnNpb24gMS4zLg0KPiA+IFRoZSBp bml0aWFsIHNjcmVlbmluZyBjb21wYXJlZCB0aGUgcmVxdWVzdCBsZW5ndGggdG8gdGhlIGNhY2hl IHNpemUsDQo+ID4gd2hpY2ggd2FzIGNvcnJlY3QgYmVmb3JlLCBidXQgYmVjYW1lIGlycmVsZXZh bnQgd2l0aCB0aGUgaW50cm9kdWN0aW9uDQo+ID4gb2YNCj4gPiB0aGUgZmx1c2ggdGhyZXNob2xk LiBFLmcuIHRoZSBjYWNoZSBjYW4gaG9sZCB1cCB0byBmbHVzaHRocmVzaA0KPiBvYmplY3RzLA0K PiA+IHdoaWNoIGlzIG1vcmUgdGhhbiBpdHMgc2l6ZSwgc28gc29tZSByZXF1ZXN0cyB3ZXJlIG5v dCBzZXJ2ZWQgZnJvbQ0KPiB0aGUNCj4gPiBjYWNoZSwgZXZlbiB0aG91Z2ggdGhleSBjb3VsZCBi ZS4NCj4gPiBUaGUgaW5pdGlhbCBzY3JlZW5pbmcgaGFzIG5vdyBiZWVuIGNvcnJlY3RlZCB0byBt YXRjaCB0aGUgaW5pdGlhbA0KPiA+IHNjcmVlbmluZyBpbiBydGVfbWVtcG9vbF9kb19nZW5lcmlj X3B1dCgpLCB3aGljaCB2ZXJpZmllcyB0aGF0IGENCj4gY2FjaGUNCj4gPiBpcyBwcmVzZW50LCBh bmQgdGhhdCB0aGUgbGVuZ3RoIG9mIHRoZSByZXF1ZXN0IGRvZXMgbm90IG92ZXJmbG93IHRoZQ0K PiA+IG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZSBjYWNoZS4NCj4gPg0KPiA+IFRoaXMgYnVnIGNh dXNlZCBhIG1ham9yIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGluIHNjZW5hcmlvcyB3aGVyZQ0K PiB0aGUNCj4gPiBhcHBsaWNhdGlvbiBidXJzdCBsZW5ndGggaXMgdGhlIHNhbWUgYXMgdGhlIGNh Y2hlIHNpemUuIEluIHN1Y2gNCj4gY2FzZXMsDQo+ID4gdGhlIG9iamVjdHMgd2VyZSBub3QgZXZl ciBmZXRjaGVkIGZyb20gdGhlIG1lbXBvb2wgY2FjaGUsIHJlZ2FyZGxlc3MNCj4gaWYNCj4gPiB0 aGV5IGNvdWxkIGhhdmUgYmVlbi4NCj4gPiBUaGlzIHNjZW5hcmlvIG9jY3VycyBlLmcuIGlmIGFu IGFwcGxpY2F0aW9uIGhhcyBjb25maWd1cmVkIGEgbWVtcG9vbA0KPiA+IHdpdGggYSBzaXplIG1h dGNoaW5nIHRoZSBhcHBsaWNhdGlvbidzIGJ1cnN0IHNpemUuDQo+ID4NCj4gPiAyLiBUaGUgZnVu Y3Rpb24gaXMgYSBoZWxwZXIgZm9yIHJ0ZV9tZW1wb29sX2dlbmVyaWNfZ2V0KCksIHNvIGl0IG11 c3QNCj4gPiBiZWhhdmUgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGF0IGZ1bmN0 aW9uLg0KPiA+IFNwZWNpZmljYWxseSwgb2JqZWN0cyBtdXN0IGZpcnN0IGJlIHJldHVybmVkIGZy b20gdGhlIGNhY2hlLA0KPiA+IHN1YnNlcXVlbnRseSBmcm9tIHRoZSByaW5nLg0KPiA+IEFmdGVy IHRoZSBjaGFuZ2UgaW4gRFBESyB2ZXJzaW9uIDEuMywgdGhpcyB3YXMgbm90IHRoZSBiZWhhdmlv ciB3aGVuDQo+ID4gdGhlIHJlcXVlc3Qgd2FzIHBhcnRpYWxseSBzYXRpc2ZpZWQgZnJvbSB0aGUg Y2FjaGU7IGluc3RlYWQsIHRoZQ0KPiA+IG9iamVjdHMNCj4gPiBmcm9tIHRoZSByaW5nIHdlcmUg cmV0dXJuZWQgYWhlYWQgb2YgdGhlIG9iamVjdHMgZnJvbSB0aGUgY2FjaGUuDQo+ID4gVGhpcyBi dWcgZGVncmFkZWQgYXBwbGljYXRpb24gcGVyZm9ybWFuY2Ugb24gQ1BVcyB3aXRoIGEgc21hbGwg TDENCj4gPiBjYWNoZSwNCj4gPiB3aGljaCBiZW5lZml0IGZyb20gaGF2aW5nIHRoZSBob3Qgb2Jq ZWN0cyBmaXJzdCBpbiB0aGUgcmV0dXJuZWQNCj4gYXJyYXkuDQo+ID4gKFRoaXMgaXMgcHJvYmFi bHkgYWxzbyB0aGUgcmVhc29uIHdoeSB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUNCj4gb2JqZWN0 cw0KPiA+IGluIHJldmVyc2Ugb3JkZXIsIHdoaWNoIGl0IHN0aWxsIGRvZXMuKQ0KPiA+IE5vdywg YWxsIGNvZGUgcGF0aHMgZmlyc3QgcmV0dXJuIG9iamVjdHMgZnJvbSB0aGUgY2FjaGUsIHN1YnNl cXVlbnRseQ0KPiA+IGZyb20gdGhlIHJpbmcuDQo+ID4NCj4gPiBUaGUgZnVuY3Rpb24gd2FzIG5v dCBiZWhhdmluZyBhcyBkZXNjcmliZWQgKGJ5IHRoZSBmdW5jdGlvbiB1c2luZyBpdCkNCj4gPiBh bmQgZXhwZWN0ZWQgYnkgYXBwbGljYXRpb25zIHVzaW5nIGl0LiBUaGlzIGluIGl0c2VsZiBpcyBh bHNvIGEgYnVnLg0KPiA+DQo+ID4gMy4gSWYgdGhlIGNhY2hlIGNvdWxkIG5vdCBiZSBiYWNrZmls bGVkLCB0aGUgZnVuY3Rpb24gd291bGQgYXR0ZW1wdA0KPiA+IHRvIGdldCBhbGwgdGhlIHJlcXVl c3RlZCBvYmplY3RzIGZyb20gdGhlIHJpbmcgKGluc3RlYWQgb2Ygb25seSB0aGUNCj4gPiBudW1i ZXIgb2YgcmVxdWVzdGVkIG9iamVjdHMgbWludXMgdGhlIG9iamVjdHMgYXZhaWxhYmxlIGluIHRo ZSByaW5nKSwNCj4gPiBhbmQgdGhlIGZ1bmN0aW9uIHdvdWxkIGZhaWwgaWYgdGhhdCBmYWlsZWQu DQo+ID4gTm93LCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgcmVxdWVzdCBpcyBhbHdheXMgc2F0aXNm aWVkIGZyb20gdGhlDQo+IGNhY2hlLA0KPiA+IGFuZCBpZiB0aGUgc3Vic2VxdWVudCBiYWNrZmls bGluZyBvZiB0aGUgY2FjaGUgZnJvbSB0aGUgcmluZyBmYWlscywNCj4gPiBvbmx5DQo+ID4gdGhl IHJlbWFpbmluZyByZXF1ZXN0ZWQgb2JqZWN0cyBhcmUgcmV0cmlldmVkIGZyb20gdGhlIHJpbmcu DQo+ID4NCj4gPiBUaGUgZnVuY3Rpb24gd291bGQgZmFpbCBkZXNwaXRlIHRoZXJlIGFyZSBlbm91 Z2ggb2JqZWN0cyBpbiB0aGUgY2FjaGUNCj4gPiBwbHVzIHRoZSBjb21tb24gcG9vbC4NCj4gPg0K PiA+IDQuIFRoZSBjb2RlIGZsb3cgZm9yIHNhdGlzZnlpbmcgdGhlIHJlcXVlc3QgZnJvbSB0aGUg Y2FjaGUgd2FzDQo+IHNsaWdodGx5DQo+ID4gaW5lZmZpY2llbnQ6DQo+ID4gVGhlIGxpa2VseSBj b2RlIHBhdGggd2hlcmUgdGhlIG9iamVjdHMgYXJlIHNpbXBseSBzZXJ2ZWQgZnJvbSB0aGUNCj4g Y2FjaGUNCj4gPiB3YXMgdHJlYXRlZCBhcyB1bmxpa2VseS4gTm93IGl0IGlzIHRyZWF0ZWQgYXMg bGlrZWx5Lg0KPiA+IEFuZCBpbiB0aGUgY29kZSBwYXRoIHdoZXJlIHRoZSBjYWNoZSB3YXMgYmFj a2ZpbGxlZCBmaXJzdCwgbnVtYmVycw0KPiB3ZXJlDQo+ID4gYWRkZWQgYW5kIHN1YnRyYWN0ZWQg ZnJvbSB0aGUgY2FjaGUgbGVuZ3RoOyBub3cgdGhpcyBjb2RlIHBhdGggc2ltcGx5DQo+ID4gc2V0 cyB0aGUgY2FjaGUgbGVuZ3RoIHRvIGl0cyBmaW5hbCB2YWx1ZS4NCj4gPg0KPiA+IHYyIGNoYW5n ZXMNCj4gPiAtIERvIG5vdCBtb2RpZnkgZGVzY3JpcHRpb24gb2YgcmV0dXJuIHZhbHVlLiBUaGlz IGJlbG9uZ3MgaW4gYQ0KPiBzZXBhcmF0ZQ0KPiA+IGRvYyBmaXguDQo+ID4gLSBFbGFib3JhdGUg ZXZlbiBtb3JlIG9uIHdoaWNoIGJ1Z3MgdGhlIG1vZGlmaWNhdGlvbnMgZml4Lg0KPiA+DQo+ID4g U2lnbmVkLW9mZi1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4N Cj4gPiAtLS0NCj4gPiAgbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaCB8IDc1ICsrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4gLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDU0 IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xp Yi9tZW1wb29sL3J0ZV9tZW1wb29sLmggYi9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oDQo+ID4g aW5kZXggMWU3YTNjMTUyNy4uMjg5OGM2OTBiMCAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbWVtcG9v bC9ydGVfbWVtcG9vbC5oDQo+ID4gKysrIGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaA0KPiA+ IEBAIC0xNDYzLDM4ICsxNDYzLDcxIEBAIHJ0ZV9tZW1wb29sX2RvX2dlbmVyaWNfZ2V0KHN0cnVj dCBydGVfbWVtcG9vbA0KPiA+ICptcCwgdm9pZCAqKm9ial90YWJsZSwNCj4gPiAgCXVpbnQzMl90 IGluZGV4LCBsZW47DQo+ID4gIAl2b2lkICoqY2FjaGVfb2JqczsNCj4gPg0KPiA+IC0JLyogTm8g Y2FjaGUgcHJvdmlkZWQgb3IgY2Fubm90IGJlIHNhdGlzZmllZCBmcm9tIGNhY2hlICovDQo+ID4g LQlpZiAodW5saWtlbHkoY2FjaGUgPT0gTlVMTCB8fCBuID49IGNhY2hlLT5zaXplKSkNCj4gPiAr CS8qIE5vIGNhY2hlIHByb3ZpZGVkIG9yIGlmIGdldCB3b3VsZCBvdmVyZmxvdyBtZW0gYWxsb2Nh dGVkIGZvcg0KPiA+IGNhY2hlICovDQo+ID4gKwlpZiAodW5saWtlbHkoY2FjaGUgPT0gTlVMTCB8 fCBuID4gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUpKQ0KPiA+ICAJCWdvdG8gcmluZ19kZXF1 ZXVlOw0KPiA+DQo+ID4gLQljYWNoZV9vYmpzID0gY2FjaGUtPm9ianM7DQo+ID4gKwljYWNoZV9v YmpzID0gJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5dOw0KPiA+ICsNCj4gPiArCWlmIChuIDw9IGNh Y2hlLT5sZW4pIHsNCj4gPiArCQkvKiBUaGUgZW50aXJlIHJlcXVlc3QgY2FuIGJlIHNhdGlzZmll ZCBmcm9tIHRoZSBjYWNoZS4gKi8NCj4gPiArCQljYWNoZS0+bGVuIC09IG47DQo+ID4gKwkJZm9y IChpbmRleCA9IDA7IGluZGV4IDwgbjsgaW5kZXgrKykNCj4gPiArCQkJKm9ial90YWJsZSsrID0g Ki0tY2FjaGVfb2JqczsNCj4gPiArDQo+ID4gKwkJUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIGdl dF9zdWNjZXNzX2J1bGssIDEpOw0KPiA+ICsJCVJURV9NRU1QT09MX1NUQVRfQUREKG1wLCBnZXRf c3VjY2Vzc19vYmpzLCBuKTsNCj4gPg0KPiA+IC0JLyogQ2FuIHRoaXMgYmUgc2F0aXNmaWVkIGZy b20gdGhlIGNhY2hlPyAqLw0KPiA+IC0JaWYgKGNhY2hlLT5sZW4gPCBuKSB7DQo+ID4gLQkJLyog Tm8uIEJhY2tmaWxsIHRoZSBjYWNoZSBmaXJzdCwgYW5kIHRoZW4gZmlsbCBmcm9tIGl0ICovDQo+ ID4gLQkJdWludDMyX3QgcmVxID0gbiArIChjYWNoZS0+c2l6ZSAtIGNhY2hlLT5sZW4pOw0KPiA+ ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+DQo+ID4gLQkJLyogSG93IG1hbnkgZG8gd2UgcmVx dWlyZSBpLmUuIG51bWJlciB0byBmaWxsIHRoZSBjYWNoZSArDQo+ID4gdGhlIHJlcXVlc3QgKi8N Cj4gPiAtCQlyZXQgPSBydGVfbWVtcG9vbF9vcHNfZGVxdWV1ZV9idWxrKG1wLA0KPiA+IC0JCQkm Y2FjaGUtPm9ianNbY2FjaGUtPmxlbl0sIHJlcSk7DQo+ID4gKwkvKiBTYXRpc2Z5IHRoZSBmaXJz dCBwYXJ0IG9mIHRoZSByZXF1ZXN0IGJ5IGRlcGxldGluZyB0aGUgY2FjaGUuDQo+ID4gKi8NCj4g PiArCWxlbiA9IGNhY2hlLT5sZW47DQo+ID4gKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW47 IGluZGV4KyspDQo+ID4gKwkJKm9ial90YWJsZSsrID0gKi0tY2FjaGVfb2JqczsNCj4gPiArDQo+ ID4gKwkvKiBOdW1iZXIgb2Ygb2JqZWN0cyByZW1haW5pbmcgdG8gc2F0aXNmeSB0aGUgcmVxdWVz dC4gKi8NCj4gPiArCWxlbiA9IG4gLSBsZW47DQo+ID4gKw0KPiA+ICsJLyogRmlsbCB0aGUgY2Fj aGUgZnJvbSB0aGUgcmluZzsgZmV0Y2ggc2l6ZSArIHJlbWFpbmluZyBvYmplY3RzLg0KPiA+ICov DQo+ID4gKwlyZXQgPSBydGVfbWVtcG9vbF9vcHNfZGVxdWV1ZV9idWxrKG1wLCBjYWNoZS0+b2Jq cywNCj4gPiArCQkJY2FjaGUtPnNpemUgKyBsZW4pOw0KPiA+ICsJaWYgKHVubGlrZWx5KHJldCA8 IDApKSB7DQo+ID4gKwkJLyoNCj4gPiArCQkgKiBXZSBhcmUgYnVmZmVyIGNvbnN0cmFpbmVkLCBh bmQgbm90IGFibGUgdG8gYWxsb2NhdGUNCj4gPiArCQkgKiBjYWNoZSArIHJlbWFpbmluZy4NCj4g PiArCQkgKiBEbyBub3QgZmlsbCB0aGUgY2FjaGUsIGp1c3Qgc2F0aXNmeSB0aGUgcmVtYWluaW5n IHBhcnQNCj4gPiBvZg0KPiA+ICsJCSAqIHRoZSByZXF1ZXN0IGRpcmVjdGx5IGZyb20gdGhlIHJp bmcuDQo+ID4gKwkJICovDQo+ID4gKwkJcmV0ID0gcnRlX21lbXBvb2xfb3BzX2RlcXVldWVfYnVs ayhtcCwgb2JqX3RhYmxlLCBsZW4pOw0KPiA+ICAJCWlmICh1bmxpa2VseShyZXQgPCAwKSkgew0K PiA+ICAJCQkvKg0KPiA+IC0JCQkgKiBJbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHdlIGFyZSBidWZm ZXIgY29uc3RyYWluZWQsDQo+ID4gLQkJCSAqIHdoZXJlIHdlIGFyZSBub3QgYWJsZSB0byBhbGxv Y2F0ZSBjYWNoZSArIG4sIGdvIHRvDQo+ID4gLQkJCSAqIHRoZSByaW5nIGRpcmVjdGx5LiBJZiB0 aGF0IGZhaWxzLCB3ZSBhcmUgdHJ1bHkgb3V0DQo+ID4gb2YNCj4gPiAtCQkJICogYnVmZmVycy4N Cj4gPiArCQkJICogVGhhdCBhbHNvIGZhaWxlZC4NCj4gPiArCQkJICogTm8gZnVydGhlciBhY3Rp b24gaXMgcmVxdWlyZWQgdG8gcm9sbCB0aGUgZmlyc3QNCj4gPiArCQkJICogcGFydCBvZiB0aGUg cmVxdWVzdCBiYWNrIGludG8gdGhlIGNhY2hlLCBhcyBib3RoDQo+ID4gKwkJCSAqIGNhY2hlLT5s ZW4gYW5kIHRoZSBvYmplY3RzIGluIHRoZSBjYWNoZSBhcmUNCj4gPiBpbnRhY3QuDQo+ID4gIAkJ CSAqLw0KPiA+IC0JCQlnb3RvIHJpbmdfZGVxdWV1ZTsNCj4gPiArCQkJUlRFX01FTVBPT0xfU1RB VF9BREQobXAsIGdldF9mYWlsX2J1bGssIDEpOw0KPiA+ICsJCQlSVEVfTUVNUE9PTF9TVEFUX0FE RChtcCwgZ2V0X2ZhaWxfb2Jqcywgbik7DQo+ID4gKw0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ ICAJCX0NCj4gPg0KPiA+IC0JCWNhY2hlLT5sZW4gKz0gcmVxOw0KPiA+ICsJCS8qIENvbW1pdCB0 aGF0IHRoZSBjYWNoZSB3YXMgZW1wdGllZC4gKi8NCj4gPiArCQljYWNoZS0+bGVuID0gMDsNCj4g PiArDQo+ID4gKwkJUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIGdldF9zdWNjZXNzX2J1bGssIDEp Ow0KPiA+ICsJCVJURV9NRU1QT09MX1NUQVRfQUREKG1wLCBnZXRfc3VjY2Vzc19vYmpzLCBuKTsN Cj4gPiArDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gIAl9DQo+ID4NCj4gPiAtCS8qIE5vdyBmaWxs IGluIHRoZSByZXNwb25zZSAuLi4gKi8NCj4gPiAtCWZvciAoaW5kZXggPSAwLCBsZW4gPSBjYWNo ZS0+bGVuIC0gMTsgaW5kZXggPCBuOyArK2luZGV4LCBsZW4tLSwNCj4gPiBvYmpfdGFibGUrKykN Cj4gPiAtCQkqb2JqX3RhYmxlID0gY2FjaGVfb2Jqc1tsZW5dOw0KPiA+ICsJY2FjaGVfb2JqcyA9 ICZjYWNoZS0+b2Jqc1tjYWNoZS0+c2l6ZSArIGxlbl07DQo+ID4NCj4gPiAtCWNhY2hlLT5sZW4g LT0gbjsNCj4gPiArCS8qIFNhdGlzZnkgdGhlIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSByZXF1ZXN0 IGZyb20gdGhlIGZpbGxlZA0KPiA+IGNhY2hlLiAqLw0KPiA+ICsJY2FjaGUtPmxlbiA9IGNhY2hl LT5zaXplOw0KPiA+ICsJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuOyBpbmRleCsrKQ0KPiA+ ICsJCSpvYmpfdGFibGUrKyA9ICotLWNhY2hlX29ianM7DQo+ID4NCj4gPiAgCVJURV9NRU1QT09M X1NUQVRfQUREKG1wLCBnZXRfc3VjY2Vzc19idWxrLCAxKTsNCj4gPiAgCVJURV9NRU1QT09MX1NU QVRfQUREKG1wLCBnZXRfc3VjY2Vzc19vYmpzLCBuKTsNCj4gPiBAQCAtMTUwMyw3ICsxNTM2LDcg QEAgcnRlX21lbXBvb2xfZG9fZ2VuZXJpY19nZXQoc3RydWN0IHJ0ZV9tZW1wb29sDQo+ID4gKm1w LCB2b2lkICoqb2JqX3RhYmxlLA0KPiA+DQo+ID4gIHJpbmdfZGVxdWV1ZToNCj4gPg0KPiA+IC0J LyogZ2V0IHJlbWFpbmluZyBvYmplY3RzIGZyb20gcmluZyAqLw0KPiA+ICsJLyogR2V0IHRoZSBv YmplY3RzIGZyb20gdGhlIHJpbmcuICovDQo+ID4gIAlyZXQgPSBydGVfbWVtcG9vbF9vcHNfZGVx dWV1ZV9idWxrKG1wLCBvYmpfdGFibGUsIG4pOw0KPiA+DQo+ID4gIAlpZiAocmV0IDwgMCkgew0K PiA+IC0tDQo+ID4gMi4xNy4xDQo+IA0KPiBQSU5HLg0KPiANCj4gQWNjb3JkaW5nIHRvIFBhdGNo d29yayBbMV0sIHRoaXMgcGF0Y2ggcHJvdmlkZXMgdXAgdG8gMTAuOSAlIHNpbmdsZQ0KPiB0aHJl YWQgdGhyb3VnaHB1dCBpbXByb3ZlbWVudCBvbiBYTDcxMCB3aXRoIHg4NiwgYW5kIDAuNyAlIGlt cHJvdmVtZW50DQo+IHdpdGggQVJNLg0KPiANCj4gU3RpbGwgbm8gaW50ZXJlc3Q/DQo+IA0KPiBQ UzogQnJ1Y2UgcmV2aWV3ZWQgVjEgb2YgdGhpcyBwYXRjaCBbMl0sIGJ1dCBJIGRvbid0IHRoaW5r IGl0IGlzDQo+IGFwcHJvcHJpYXRlIGNvcHlpbmcgYSBSZXZpZXdlZC1ieSB0YWcgZnJvbSBvbmUg dmVyc2lvbiBvZiBhIHBhdGNoIHRvDQo+IGFub3RoZXIsIHJlZ2FyZGxlc3MgaG93IHNtYWxsIHRo ZSBjaGFuZ2VzIGFyZS4NCj4gDQo+IFsxXSBodHRwOi8vbWFpbHMuZHBkay5vcmcvYXJjaGl2ZXMv dGVzdC1yZXBvcnQvMjAyMi0NCj4gRmVicnVhcnkvMjU2NDYyLmh0bWwNCj4gWzJdIGh0dHA6Ly9p bmJveC5kcGRrLm9yZy9kZXYvWWVhRFN4aiUyRnVaMHZQTWwrQGJyaWNoYTMtDQo+IE1PQkwuZ2Vy LmNvcnAuaW50ZWwuY29tLw0KDQo=