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 66B8D46121; Fri, 24 Jan 2025 12:47:36 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2155A40E49; Fri, 24 Jan 2025 12:47:36 +0100 (CET) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id E594740E48 for ; Fri, 24 Jan 2025 12:47:33 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id BD7162091D; Fri, 24 Jan 2025 12:47:33 +0100 (CET) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Subject: RE: [PATCH v3] mbuf: add fast free bulk and raw alloc bulk functions Content-Transfer-Encoding: base64 Date: Fri, 24 Jan 2025 12:47:32 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9F9E8@smartserver.smartshare.dk> X-MimeOLE: Produced By Microsoft Exchange V6.5 In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v3] mbuf: add fast free bulk and raw alloc bulk functions Thread-Index: AQHbbAoQJFzGMBjXn0qq7P9ITfy43rMluu8ggAAUaIA= References: <20250114162544.125448-1-mb@smartsharesystems.com> <20250121134028.20733-1-mb@smartsharesystems.com> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Slava Ovsiienko" , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "Ferruh Yigit" , "Andrew Rybchenko" , "Shahaf Shuler" , "Olivier Matz" Cc: , "Dengdui Huang" 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 PiBGcm9tOiBTbGF2YSBPdnNpaWVua28gW21haWx0bzp2aWFjaGVzbGF2b0BudmlkaWEuY29tXQ0K PiBTZW50OiBGcmlkYXksIDI0IEphbnVhcnkgMjAyNSAxMS4yMw0KPiANCj4gQWNrZWQtYnk6IFZp YWNoZXNsYXYgT3ZzaWllbmtvIDx2aWFjaGVzbGF2b0BudmlkaWEuY29tPg0KPiANCj4gUFMuIEl0 IHNlZW1zIHdlIHNob3VsZCBjb25zaWRlciByZXBsYWNpbmcgdGhlIHJ0ZV9tZW1wb29sX3B1dF9i dWxrKCkNCj4gd2l0aCB0aGUgbmV3IHdyYXBwZXIgcnRlX21idWZfZmFzdF9mcmVlX2J1bGsoKSBp biB0aGUgZHJpdmVycy4NCg0KQWdyZWUuIEFuZCB0aGUgaW5kaXZpZHVhbCBkcml2ZXJzIHNob3Vs ZCBiZSBjYXJlZnVsbHkgdGVzdGVkIC0gd2l0aCBSVEVfRU5BQkxFX0FTU0VSVCBhbmQgUlRFX0xJ QlJURV9NQlVGX0RFQlVHIGVuYWJsZWQgLSBieSB0aGUgZGV2ZWxvcGVycyB1cGRhdGluZyB0aGVp ciBkcml2ZXJzLg0KSSB0aGluayBpdCB3aWxsIGJlIGVhc2llciBmb3IgdGhlIGRyaXZlciBkZXZl bG9wZXJzIGlmIHdlIG1lcmdlIHRoaXMgcGF0Y2ggc3RhbmQtYWxvbmUgZmlyc3QuDQoNCj4gDQo+ ID4gRnJvbTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPiBT ZW50OiBUdWVzZGF5LCBKYW51YXJ5IDIxLCAyMDI1IDM6NDAgUE0NCj4gPg0KPiA+IFdoZW4gcHV0 dGluZyBhbiBtYnVmIGJhY2sgaW50byBpdHMgbWVtcG9vbCwgdGhlcmUgYXJlIGNlcnRhaW4NCj4g cmVxdWlyZW1lbnRzDQo+ID4gdG8gdGhlIG1idWYuIFNwZWNpZmljYWxseSwgc29tZSBvZiBpdHMg ZmllbGRzIG11c3QgYmUgaW5pdGlhbGl6ZWQuDQo+ID4NCj4gPiBUaGVzZSByZXF1aXJlbWVudHMg YXJlIGluIGZhY3QgaW52YXJpYW50cyBhYm91dCBmcmVlIG1idWZzLCBoZWxkIGluDQo+ID4gbWVt cG9vbHMsIGFuZCB0aHVzIGFsc28gYXBwbHkgd2hlbiBhbGxvY2F0aW5nIGFuIG1idWYgZnJvbSBh IG1lbXBvb2wuDQo+ID4gV2l0aCB0aGlzIGluIG1pbmQsIHRoZSBhZGRpdGlvbmFsIGFzc2VydGlv bnMgaW4gcnRlX21idWZfcmF3X2ZyZWUoKQ0KPiB3ZXJlDQo+ID4gbW92ZWQgdG8gX19ydGVfbWJ1 Zl9yYXdfc2FuaXR5X2NoZWNrKCkuDQo+ID4gRnVydGhlcm1vcmUsIHRoZSBhc3NlcnRpb24gcmVn YXJkaW5nIHBpbm5lZCBleHRlcm5hbCBidWZmZXIgd2FzDQo+IGVuaGFuY2VkOyBpdA0KPiA+IG5v dyBhbHNvIGFzc2VydHMgdGhhdCB0aGUgcmVmZXJlbmNlZCBwaW5uZWQgZXh0ZXJuYWwgYnVmZmVy IGhhcw0KPiByZWZjbnQgPT0gMS4NCj4gPg0KPiA+IFRoZSBkZXNjcmlwdGlvbiBvZiBSVEVfRVRI X1RYX09GRkxPQURfTUJVRl9GQVNUX0ZSRUUgd2FzIHVwZGF0ZWQgdG8NCj4gPiBpbmNsdWRlIHRo ZSByZW1haW5pbmcgcmVxdWlyZW1lbnRzLCB3aGljaCB3ZXJlIG1pc3NpbmcgaGVyZS4NCj4gPg0K PiA+IEFuZCBmaW5hbGx5Og0KPiA+IEEgbmV3IHJ0ZV9tYnVmX2Zhc3RfZnJlZV9idWxrKCkgaW5s aW5lIGZ1bmN0aW9uIHdhcyBhZGRlZCBmb3IgdGhlDQo+IGJlbmVmaXQgb2YNCj4gPiBldGhkZXYg ZHJpdmVycyBzdXBwb3J0aW5nIGZhc3QgcmVsZWFzZSBvZiBtYnVmcy4NCj4gPiBJdCBhc3NlcnRz IHRoZXNlIHJlcXVpcmVtZW50cyBhbmQgdGhhdCB0aGUgbWJ1ZnMgYmVsb25nIHRvIHRoZQ0KPiBz cGVjaWZpZWQNCj4gPiBtZW1wb29sLCBhbmQgdGhlbiBjYWxscyBydGVfbWVtcG9vbF9wdXRfYnVs aygpLg0KPiA+DQo+ID4gRm9yIHN5bW1ldHJ5LCBhIG5ldyBydGVfbWJ1Zl9yYXdfYWxsb2NfYnVs aygpIGlubGluZSBmdW5jdGlvbiB3YXMNCj4gYWxzbw0KPiA+IGFkZGVkLg0KPiA+DQo+ID4gU2ln bmVkLW9mZi1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4g PiBBY2tlZC1ieTogRGVuZ2R1aSBIdWFuZyA8aHVhbmdkZW5nZHVpQGh1YXdlaS5jb20+DQo+ID4g LS0tDQo+ID4gdjI6DQo+ID4gKiBGaXhlZCBtaXNzaW5nIGlubGluZS4NCj4gPiB2MzoNCj4gPiAq IEZpeGVkIG1pc3NpbmcgZXhwZXJpbWVudGFsIHdhcm5pbmcuIChTdGVwaGVuKQ0KPiA+ICogQWRk ZWQgcmF3IGFsbG9jIGJ1bGsgZnVuY3Rpb24uDQo+ID4gLS0tDQo+ID4gIGxpYi9ldGhkZXYvcnRl X2V0aGRldi5oIHwgIDYgKystLQ0KPiA+ICBsaWIvbWJ1Zi9ydGVfbWJ1Zi5oICAgICB8IDgwDQo+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+ID4gIDIgZmlsZXMg Y2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYg LS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5o IGluZGV4DQo+ID4gMWY3MWNhZDI0NC4uZTkyNjdmY2E3OSAxMDA2NDQNCj4gPiAtLS0gYS9saWIv ZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ ID4gQEAgLTE2MTIsOCArMTYxMiwxMCBAQCBzdHJ1Y3QgcnRlX2V0aF9jb25mIHsNCj4gPiAgI2Rl ZmluZSBSVEVfRVRIX1RYX09GRkxPQURfTVVMVElfU0VHUyAgICAgICBSVEVfQklUNjQoMTUpDQo+ ID4gIC8qKg0KPiA+ICAgKiBEZXZpY2Ugc3VwcG9ydHMgb3B0aW1pemF0aW9uIGZvciBmYXN0IHJl bGVhc2Ugb2YgbWJ1ZnMuDQo+ID4gLSAqIFdoZW4gc2V0IGFwcGxpY2F0aW9uIG11c3QgZ3VhcmFu dGVlIHRoYXQgcGVyLXF1ZXVlIGFsbCBtYnVmcw0KPiBjb21lcw0KPiA+IGZyb20NCj4gPiAtICog dGhlIHNhbWUgbWVtcG9vbCBhbmQgaGFzIHJlZmNudCA9IDEuDQo+ID4gKyAqIFdoZW4gc2V0IGFw cGxpY2F0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgcGVyLXF1ZXVlIGFsbCBtYnVmcyBjb21lDQo+ ID4gKyBmcm9tIHRoZSBzYW1lIG1lbXBvb2wsDQo+ID4gKyAqIGFyZSBkaXJlY3QsIGhhdmUgcmVm Y250PTEsIG5leHQ9TlVMTCBhbmQgbmJfc2Vncz0xLCBhcyBkb25lIGJ5DQo+ID4gcnRlX3BrdG1i dWZfcHJlZnJlZV9zZWcoKS4NCj4gPiArICoNCj4gPiArICogQHNlZSBydGVfbWJ1Zl9mYXN0X2Zy ZWVfYnVsaygpDQo+ID4gICAqLw0KPiA+ICAjZGVmaW5lIFJURV9FVEhfVFhfT0ZGTE9BRF9NQlVG X0ZBU1RfRlJFRSAgIFJURV9CSVQ2NCgxNikNCj4gPiAgI2RlZmluZSBSVEVfRVRIX1RYX09GRkxP QURfU0VDVVJJVFkgICAgICAgICBSVEVfQklUNjQoMTcpDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9t YnVmL3J0ZV9tYnVmLmggYi9saWIvbWJ1Zi9ydGVfbWJ1Zi5oIGluZGV4DQo+ID4gMGQyZTBlNjRi My4uMWU0MGU3ZmNmNyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbWJ1Zi9ydGVfbWJ1Zi5oDQo+ID4g KysrIGIvbGliL21idWYvcnRlX21idWYuaA0KPiA+IEBAIC01NjgsNiArNTY4LDEwIEBAIF9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVjayhfX3J0ZV91bnVzZWQgY29uc3QNCj4gPiBzdHJ1Y3QgcnRl X21idWYgKm0pDQo+ID4gIAlSVEVfQVNTRVJUKHJ0ZV9tYnVmX3JlZmNudF9yZWFkKG0pID09IDEp Ow0KPiA+ICAJUlRFX0FTU0VSVChtLT5uZXh0ID09IE5VTEwpOw0KPiA+ICAJUlRFX0FTU0VSVCht LT5uYl9zZWdzID09IDEpOw0KPiA+ICsJUlRFX0FTU0VSVCghUlRFX01CVUZfQ0xPTkVEKG0pKTsN Cj4gPiArCVJURV9BU1NFUlQoIVJURV9NQlVGX0hBU19FWFRCVUYobSkgfHwNCj4gPiArCQkJKFJU RV9NQlVGX0hBU19QSU5ORURfRVhUQlVGKG0pICYmDQo+ID4gKwkJCXJ0ZV9tYnVmX2V4dF9yZWZj bnRfcmVhZChtLT5zaGluZm8pID09IDEpKTsNCj4gPiAgCV9fcnRlX21idWZfc2FuaXR5X2NoZWNr KG0sIDApOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtNjA2LDYgKzYxMCw0MyBAQCBzdGF0aWMgaW5s aW5lIHN0cnVjdCBydGVfbWJ1Zg0KPiA+ICpydGVfbWJ1Zl9yYXdfYWxsb2Moc3RydWN0IHJ0ZV9t ZW1wb29sICptcCkNCj4gPiAgCXJldHVybiByZXQubTsNCj4gPiAgfQ0KPiA+DQo+ID4gKy8qKg0K PiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IFRoaXMgQVBJIG1heSBj aGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQNCj4gcHJpb3INCj4gPiBub3RpY2UuDQo+ID4g KyAqDQo+ID4gKyAqIEFsbG9jYXRlIGEgYnVsayBvZiB1bmluaXRpYWxpemVkIG1idWZzIGZyb20g bWVtcG9vbCAqbXAqLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2Vk IGJ5IFBNRHMgKGVzcGVjaWFsbHkgaW4gUlggZnVuY3Rpb25zKSB0bw0KPiA+ICsgKiBhbGxvY2F0 ZSBhIGJ1bGsgb2YgdW5pbml0aWFsaXplZCBtYnVmcy4gVGhlIGRyaXZlciBpcyByZXNwb25zaWJs ZQ0KPiBvZg0KPiA+ICsgKiBpbml0aWFsaXppbmcgYWxsIHRoZSByZXF1aXJlZCBmaWVsZHMuIFNl ZSBydGVfcGt0bWJ1Zl9yZXNldCgpLg0KPiA+ICsgKiBGb3Igc3RhbmRhcmQgbmVlZHMsIHByZWZl ciBydGVfcGt0bWJ1Zl9hbGxvY19idWxrKCkuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBjYWxsZXIg Y2FuIGV4cGVjdCB0aGF0IHRoZSBmb2xsb3dpbmcgZmllbGRzIG9mIHRoZSBtYnVmDQo+ID4gK3N0 cnVjdHVyZQ0KPiA+ICsgKiBhcmUgaW5pdGlhbGl6ZWQ6IGJ1Zl9hZGRyLCBidWZfaW92YSwgYnVm X2xlbiwgcmVmY250PTEsDQo+IG5iX3NlZ3M9MSwNCj4gPiArICogbmV4dD1OVUxMLCBwb29sLCBw cml2X3NpemUuIFRoZSBvdGhlciBmaWVsZHMgbXVzdCBiZSBpbml0aWFsaXplZA0KPiA+ICsgKiBi eSB0aGUgY2FsbGVyLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gbXANCj4gPiArICogICBUaGUg bWVtcG9vbCBmcm9tIHdoaWNoIG1idWZzIGFyZSBhbGxvY2F0ZWQuDQo+ID4gKyAqIEBwYXJhbSBt YnVmcw0KPiA+ICsgKiAgIEFycmF5IG9mIHBvaW50ZXJzIHRvIG1idWZzLg0KPiA+ICsgKiBAcGFy YW0gY291bnQNCj4gPiArICogICBBcnJheSBzaXplLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAq ICAgLSAwOiBTdWNjZXNzLg0KPiA+ICsgKiAgIC0gLUVOT0VOVDogTm90IGVub3VnaCBlbnRyaWVz IGluIHRoZSBtZW1wb29sOyBubyBtYnVmcyBhcmUNCj4gcmV0cmlldmVkLg0KPiA+ICsgKi8NCj4g PiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIGlu dA0KPiA+ICtydGVfbWJ1Zl9yYXdfYWxsb2NfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLCBz dHJ1Y3QgcnRlX21idWYNCj4gPiArKiptYnVmcywgdW5zaWduZWQgaW50IGNvdW50KSB7DQo+ID4g KwlpbnQgcmMgPSBydGVfbWVtcG9vbF9nZXRfYnVsayhtcCwgKHZvaWQgKiopbWJ1ZnMsIGNvdW50 KTsNCj4gPiArCWlmIChsaWtlbHkocmMgPT0gMCkpDQo+ID4gKwkJZm9yICh1bnNpZ25lZCBpbnQg aWR4ID0gMDsgaWR4IDwgY291bnQ7IGlkeCsrKQ0KPiA+ICsJCQlfX3J0ZV9tYnVmX3Jhd19zYW5p dHlfY2hlY2sobWJ1ZnNbaWR4XSk7DQo+ID4gKwlyZXR1cm4gcmM7DQo+ID4gK30NCj4gPiArDQo+ ID4gIC8qKg0KPiA+ICAgKiBQdXQgbWJ1ZiBiYWNrIGludG8gaXRzIG9yaWdpbmFsIG1lbXBvb2wu DQo+ID4gICAqDQo+ID4gQEAgLTYyMywxMiArNjY0LDQ3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0 IHJ0ZV9tYnVmDQo+ID4gKnJ0ZV9tYnVmX3Jhd19hbGxvYyhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w KSAgc3RhdGljDQo+IF9fcnRlX2Fsd2F5c19pbmxpbmUNCj4gPiB2b2lkICBydGVfbWJ1Zl9yYXdf ZnJlZShzdHJ1Y3QgcnRlX21idWYgKm0pICB7DQo+ID4gLQlSVEVfQVNTRVJUKCFSVEVfTUJVRl9D TE9ORUQobSkgJiYNCj4gPiAtCQkgICghUlRFX01CVUZfSEFTX0VYVEJVRihtKSB8fA0KPiA+IFJU RV9NQlVGX0hBU19QSU5ORURfRVhUQlVGKG0pKSk7DQo+ID4gIAlfX3J0ZV9tYnVmX3Jhd19zYW5p dHlfY2hlY2sobSk7DQo+ID4gIAlydGVfbWVtcG9vbF9wdXQobS0+cG9vbCwgbSk7DQo+ID4gIH0N Cj4gPg0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFM OiBUaGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0DQo+IHByaW9yDQo+ ID4gbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBQdXQgYSBidWxrIG9mIG1idWZzIGFsbG9jYXRl ZCBmcm9tIHRoZSBzYW1lIG1lbXBvb2wgYmFjayBpbnRvIHRoZQ0KPiA+IG1lbXBvb2wuDQo+ID4g KyAqDQo+ID4gKyAqIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUgbWJ1ZnMgY29tZSBm cm9tIHRoZSBzcGVjaWZpZWQNCj4gPiArbWVtcG9vbCwNCj4gPiArICogYXJlIGRpcmVjdCBhbmQg cHJvcGVybHkgcmVpbml0aWFsaXplZCAocmVmY250PTEsIG5leHQ9TlVMTCwNCj4gPiArbmJfc2Vn cz0xKSwgYXMgZG9uZSBieQ0KPiA+ICsgKiBydGVfcGt0bWJ1Zl9wcmVmcmVlX3NlZygpLg0KPiA+ ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZSwgd2hl biBvcHRpbWl6YXRpb24gaXMNCj4gPiArICogcmVxdWlyZWQuIEZvciBzdGFuZGFyZCBuZWVkcywg cHJlZmVyIHJ0ZV9wa3RtYnVmX2ZyZWVfYnVsaygpLg0KPiA+ICsgKg0KPiA+ICsgKiBAc2VlIFJU RV9FVEhfVFhfT0ZGTE9BRF9NQlVGX0ZBU1RfRlJFRQ0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0g bXANCj4gPiArICogICBUaGUgbWVtcG9vbCB0byB3aGljaCB0aGUgbWJ1ZnMgYmVsb25nLg0KPiA+ ICsgKiBAcGFyYW0gbWJ1ZnMNCj4gPiArICogICBBcnJheSBvZiBwb2ludGVycyB0byBwYWNrZXQg bWJ1ZnMuDQo+ID4gKyAqICAgVGhlIGFycmF5IG11c3Qgbm90IGNvbnRhaW4gTlVMTCBwb2ludGVy cy4NCj4gPiArICogQHBhcmFtIGNvdW50DQo+ID4gKyAqICAgQXJyYXkgc2l6ZS4NCj4gPiArICov DQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGlu ZSB2b2lkDQo+ID4gK3J0ZV9tYnVmX2Zhc3RfZnJlZV9idWxrKHN0cnVjdCBydGVfbWVtcG9vbCAq bXAsIHN0cnVjdCBydGVfbWJ1Zg0KPiA+ICsqKm1idWZzLCB1bnNpZ25lZCBpbnQgY291bnQpIHsN Cj4gPiArCWZvciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IGNvdW50OyBpZHgrKykgew0K PiA+ICsJCWNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSA9IG1idWZzW2lkeF07DQo+ID4gKwkJUlRF X0FTU0VSVChtICE9IE5VTEwpOw0KPiA+ICsJCVJURV9BU1NFUlQobS0+cG9vbCA9PSBtcCk7DQo+ ID4gKwkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrKG0pOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCXJ0ZV9tZW1wb29sX3B1dF9idWxrKG1wLCAodm9pZCAqKiltYnVmcywgY291bnQpOyB9DQo+ ID4gKw0KPiA+ICAvKioNCj4gPiAgICogVGhlIHBhY2tldCBtYnVmIGNvbnN0cnVjdG9yLg0KPiA+ ICAgKg0KPiA+IC0tDQo+ID4gMi40My4wDQoNCg==