From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 9C53E4CE4 for ; Sun, 11 Dec 2016 13:32:53 +0100 (CET) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP; 11 Dec 2016 04:32:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,332,1477983600"; d="scan'208";a="201349900" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga004.fm.intel.com with ESMTP; 11 Dec 2016 04:32:52 -0800 Received: from fmsmsx101.amr.corp.intel.com (10.18.124.199) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 11 Dec 2016 04:32:52 -0800 Received: from bgsmsx152.gar.corp.intel.com (10.224.48.50) by fmsmsx101.amr.corp.intel.com (10.18.124.199) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 11 Dec 2016 04:32:51 -0800 Received: from bgsmsx101.gar.corp.intel.com ([169.254.1.222]) by BGSMSX152.gar.corp.intel.com ([169.254.6.233]) with mapi id 14.03.0248.002; Sun, 11 Dec 2016 18:02:48 +0530 From: "Yang, Zhiyong" To: "Ananyev, Konstantin" , Thomas Monjalon CC: "dev@dpdk.org" , "yuanhan.liu@linux.intel.com" , "Richardson, Bruce" , "De Lara Guarch, Pablo" Thread-Topic: [dpdk-dev] [PATCH 1/4] eal/common: introduce rte_memset on IA platform Thread-Index: AQHSTHcq0cqfe4gXqkCtBCGLh5u1zaD0F6iAgAmXsfD//8XGgIAAXKoA//+1VQCABS9VkA== Date: Sun, 11 Dec 2016 12:32:47 +0000 Message-ID: References: <1480926387-63838-1-git-send-email-zhiyong.yang@intel.com> <1480926387-63838-2-git-send-email-zhiyong.yang@intel.com> <7223515.9TZuZb6buy@xps13> <2601191342CEEE43887BDE71AB9772583F0E55B0@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB9772583F0E568B@irsmsx105.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB9772583F0E568B@irsmsx105.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNGU0NGM0NjUtY2NiMS00ZmM5LWIzY2UtMzQ5Yzc1NWQ3NzY5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6ImFaNjdNZ3R6SmVhbnJSVVNJNWVQdlVYeDlCM3NnRFlXSktWUlVIVlNKQjg9In0= x-ctpclassification: CTP_IC x-originating-ip: [10.223.10.10] Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 1/4] eal/common: introduce rte_memset on IA platform 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: Sun, 11 Dec 2016 12:32:54 -0000 SGksIEtvbnN0YW50aW4sIEJydWNlOg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDgs IDIwMTYgNjozMSBQTQ0KPiBUbzogWWFuZywgWmhpeW9uZyA8emhpeW9uZy55YW5nQGludGVsLmNv bT47IFRob21hcyBNb25qYWxvbg0KPiA8dGhvbWFzLm1vbmphbG9uQDZ3aW5kLmNvbT4NCj4gQ2M6 IGRldkBkcGRrLm9yZzsgeXVhbmhhbi5saXVAbGludXguaW50ZWwuY29tOyBSaWNoYXJkc29uLCBC cnVjZQ0KPiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBEZSBMYXJhIEd1YXJjaCwgUGFi bG8NCj4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtk cGRrLWRldl0gW1BBVENIIDEvNF0gZWFsL2NvbW1vbjogaW50cm9kdWNlIHJ0ZV9tZW1zZXQgb24N Cj4gSUEgcGxhdGZvcm0NCj4gDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IFlhbmcsIFpoaXlvbmcNCj4gPiBTZW50OiBUaHVyc2RheSwgRGVjZW1iZXIg OCwgMjAxNiA5OjUzIEFNDQo+ID4gVG86IEFuYW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50aW4u YW5hbnlldkBpbnRlbC5jb20+OyBUaG9tYXMNCj4gPiBNb25qYWxvbiA8dGhvbWFzLm1vbmphbG9u QDZ3aW5kLmNvbT4NCj4gPiBDYzogZGV2QGRwZGsub3JnOyB5dWFuaGFuLmxpdUBsaW51eC5pbnRl bC5jb207IFJpY2hhcmRzb24sIEJydWNlDQo+ID4gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29t PjsgRGUgTGFyYSBHdWFyY2gsIFBhYmxvDQo+ID4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVs LmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUEFUQ0ggMS80XSBlYWwvY29tbW9u OiBpbnRyb2R1Y2UgcnRlX21lbXNldA0KPiA+IG9uIElBIHBsYXRmb3JtDQo+ID4NCj4gPiBIaaOs IEtvbnN0YW50aW46DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiBGcm9tOiBBbmFueWV2LCBLb25zdGFudGluDQo+ID4gPiBTZW50OiBUaHVyc2RheSwgRGVjZW1i ZXIgOCwgMjAxNiA1OjI2IFBNDQo+ID4gPiBUbzogWWFuZywgWmhpeW9uZyA8emhpeW9uZy55YW5n QGludGVsLmNvbT47IFRob21hcyBNb25qYWxvbg0KPiA+ID4gPHRob21hcy5tb25qYWxvbkA2d2lu ZC5jb20+DQo+ID4gPiBDYzogZGV2QGRwZGsub3JnOyB5dWFuaGFuLmxpdUBsaW51eC5pbnRlbC5j b207IFJpY2hhcmRzb24sIEJydWNlDQo+ID4gPiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+ OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPiA+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRl bC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUEFUQ0ggMS80XSBlYWwvY29t bW9uOiBpbnRyb2R1Y2UgcnRlX21lbXNldA0KPiA+ID4gb24gSUEgcGxhdGZvcm0NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gSGkgWmhpeW9uZywNCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEhJLCBUaG9t YXM6DQo+ID4gPiA+IAlTb3JyeSBmb3IgbGF0ZSByZXBseS4gSSBoYXZlIGJlZW4gYmVpbmcgYWx3 YXlzIGNvbnNpZGVyaW5nIHlvdXINCj4gPiA+IHN1Z2dlc3Rpb24uDQo+ID4gPiA+DQo+ID4gPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBUaG9tYXMgTW9u amFsb24gW21haWx0bzp0aG9tYXMubW9uamFsb25ANndpbmQuY29tXQ0KPiA+ID4gPiA+IFNlbnQ6 IEZyaWRheSwgRGVjZW1iZXIgMiwgMjAxNiA2OjI1IFBNDQo+ID4gPiA+ID4gVG86IFlhbmcsIFpo aXlvbmcgPHpoaXlvbmcueWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gQ2M6IGRldkBkcGRrLm9y ZzsgeXVhbmhhbi5saXVAbGludXguaW50ZWwuY29tOyBSaWNoYXJkc29uLCBCcnVjZQ0KPiA+ID4g PiA+IDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4g PiA+ID4gPiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT47IERlIExhcmEgR3VhcmNoLCBQ YWJsbw0KPiA+ID4gPiA+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+DQo+ID4gPiA+ ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIDEvNF0gZWFsL2NvbW1vbjogaW50cm9k dWNlDQo+ID4gPiBydGVfbWVtc2V0DQo+ID4gPiA+ID4gb24gSUEgcGxhdGZvcm0NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IDIwMTYtMTItMDUgMTY6MjYsIFpoaXlvbmcgWWFuZzoNCj4gPiA+ID4gPiA+ ICsjaWZuZGVmIF9SVEVfTUVNU0VUX1g4Nl82NF9IXw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSXMg dGhpcyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0byA2NC1iaXQ/DQo+ID4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4gWWVzLg0KPiA+ID4gPg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNk ZWZpbmUgcnRlX21lbXNldCBtZW1zZXQNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjZWxz ZQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkICoNCj4gPiA+ID4gPiA+ ICtydGVfbWVtc2V0KHZvaWQgKmRzdCwgaW50IGEsIHNpemVfdCBuKTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsjZW5kaWYNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IElmIEkgdW5kZXJzdGFu ZCB3ZWxsLCBydGVfbWVtc2V0IChhcyBydGVfbWVtY3B5KSBpcyB1c2luZyB0aGUNCj4gPiA+ID4g PiBtb3N0IHJlY2VudCBpbnN0cnVjdGlvbnMgYXZhaWxhYmxlIChhbmQgZW5hYmxlZCkgd2hlbiBj b21waWxpbmcuDQo+ID4gPiA+ID4gSXQgaXMgbm90IGFkYXB0aW5nIHRoZSBpbnN0cnVjdGlvbnMg dG8gdGhlIHJ1bi10aW1lIENQVS4NCj4gPiA+ID4gPiBUaGVyZSBpcyBubyBuZWVkIHRvIGRvd25n cmFkZSBhdCBydW4tdGltZSB0aGUgaW5zdHJ1Y3Rpb24gc2V0IGFzDQo+ID4gPiA+ID4gaXQgaXMg b2J2aW91c2x5IG5vdCBhIHN1cHBvcnRlZCBjYXNlLCBidXQgaXQgd291bGQgYmUgbmljZSB0byBi ZQ0KPiA+ID4gPiA+IGFibGUgdG8gdXBncmFkZSBhICJkZWZhdWx0IGNvbXBpbGF0aW9uIiBhdCBy dW4tdGltZSBhcyBpdCBpcyBkb25lIGluDQo+IHJ0ZV9hY2wuDQo+ID4gPiA+ID4gSSBleHBsYWlu IHRoaXMgY2FzZSBtb3JlIGNsZWFybHkgZm9yIHJlZmVyZW5jZToNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IFdlIGNhbiBoYXZlIEFWWDUxMiBzdXBwb3J0ZWQgaW4gdGhlIGNvbXBpbGVyIGJ1dCBkaXNh YmxlIGl0IHdoZW4NCj4gPiA+ID4gPiBjb21waWxpbmcNCj4gPiA+ID4gPiAoQ09ORklHX1JURV9N QUNISU5FPXNuYikgaW4gb3JkZXIgdG8gYnVpbGQgYSBiaW5hcnkgcnVubmluZw0KPiA+ID4gPiA+ IGFsbW9zdCBldmVyeXdoZXJlLg0KPiA+ID4gPiA+IFdoZW4gcnVubmluZyB0aGlzIGJpbmFyeSBv biBhIENQVSBoYXZpbmcgQVZYNTEyIHN1cHBvcnQsIGl0IHdpbGwNCj4gPiA+ID4gPiBub3QgYmVu ZWZpdCBvZiB0aGUgQVZYNTEyIGltcHJvdmVtZW50Lg0KPiA+ID4gPiA+IFRob3VnaCwgd2UgY2Fu IGNvbXBpbGUgYW4gQVZYNTEyIHZlcnNpb24gb2Ygc29tZSBmdW5jdGlvbnMgYW5kDQo+ID4gPiA+ ID4gdXNlIHRoZW0gb25seSBpZiB0aGUgcnVubmluZyBDUFUgaXMgY2FwYWJsZS4NCj4gPiA+ID4g PiBUaGlzIGtpbmQgb2YgbWlyYWNsZSBjYW4gYmUgYWNoaWV2ZWQgaW4gdHdvIHdheXM6DQo+ID4g PiA+ID4NCj4gPiA+ID4gPiAxLyBGb3IgZ2VuZXJpYyBDIGNvZGUgY29tcGlsZWQgd2l0aCBhIHJl Y2VudCBHQ0MsIGEgZnVuY3Rpb24gY2FuDQo+ID4gPiA+ID4gYmUgYnVpbHQgZm9yIHNldmVyYWwg Q1BVcyB0aGFua3MgdG8gdGhlIGF0dHJpYnV0ZSB0YXJnZXRfY2xvbmVzLg0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gMi8gRm9yIG1hbnVhbGx5IG9wdGltaXplZCBmdW5jdGlvbnMgdXNpbmcgQ1BVLXNw ZWNpZmljDQo+ID4gPiA+ID4gaW50cmluc2ljcyBvciBhc20sIGl0IGlzIHBvc3NpYmxlIHRvIGJ1 aWxkIHRoZW0gd2l0aCBub24tZGVmYXVsdA0KPiA+ID4gPiA+IGZsYWdzIHRoYW5rcyB0byB0aGUN Cj4gPiA+IGF0dHJpYnV0ZSB0YXJnZXQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAzLyBGb3IgbWFu dWFsbHkgb3B0aW1pemVkIGZpbGVzIHVzaW5nIENQVS1zcGVjaWZpYyBpbnRyaW5zaWNzIG9yDQo+ ID4gPiA+ID4gYXNtLCB3ZSB1c2Ugc3BlY2lmaWNzIGZsYWdzIGluIHRoZSBtYWtlZmlsZS4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IFRoZSBmdW5jdGlvbiBjbG9uZSBpbiBjYXNlIDEvIGlzIGR5bmFt aWNhbGx5IGNob3NlbiBhdCBydW4tdGltZQ0KPiA+ID4gPiA+IHRocm91Z2ggaWZ1bmMgcmVzb2x2 ZXIuDQo+ID4gPiA+ID4gVGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBpbiBjYXNlcyAyLyBhbmQgMy8g bXVzdCBjaG9zZW4gYXQNCj4gPiA+ID4gPiBydW4tdGltZSBieSBpbml0aWFsaXppbmcgYSBmdW5j dGlvbiBwb2ludGVyIHRoYW5rcyB0bw0KPiBydGVfY3B1X2dldF9mbGFnX2VuYWJsZWQoKS4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IE5vdGUgdGhhdCBydGVfaGFzaCBhbmQgc29mdHdhcmUgY3J5cHRv IFBNRHMgaGF2ZSBhIHJ1bi10aW1lDQo+ID4gPiA+ID4gY2hlY2sgd2l0aA0KPiA+ID4gPiA+IHJ0 ZV9jcHVfZ2V0X2ZsYWdfZW5hYmxlZCgpIGJ1dCBkbyBub3Qgb3ZlcnJpZGUgQ0ZMQUdTIGluIHRo ZQ0KPiBNYWtlZmlsZS4NCj4gPiA+ID4gPiBOZXh0IHN0ZXAgZm9yIHRoZXNlIGxpYnJhcmllcz8N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IEJhY2sgdG8gcnRlX21lbXNldCwgSSB0aGluayB5b3Ugc2hv dWxkIHRyeSB0aGUgc29sdXRpb24gMi8uDQo+ID4gPiA+DQo+ID4gPiA+IEkgaGF2ZSByZWFkIHRo ZSBBQ0wgY29kZSwgaWYgSSB1bmRlcnN0YW5kIHdlbGwgLCBmb3IgY29tcGxleCBhbGdvDQo+ID4g PiA+IGltcGxlbWVudGF0aW9uLCBpdCBpcyBnb29kIGlkZWEsIGJ1dCBDaG9vc2luZyBmdW5jdGlv bnMgYXQgcnVuDQo+ID4gPiA+IHRpbWUgd2lsbCBicmluZyBzb21lIG92ZXJoZWFkLiBGb3IgZnJl cXVlbnRseSAgY2FsbGVkIGZ1bmN0aW9uDQo+ID4gPiA+IFdoaWNoIGNvbnN1bWVzIHNtYWxsIGN5 Y2xlcywgdGhlIG92ZXJoZWFkIG1heWJlIGlzIG1vcmUgdGhhbiAgdGhlDQo+ID4gPiA+IGdhaW5z DQo+ID4gPiBvcHRpbWl6YXRpb25zIGJyaW5ncyBGb3IgZXhhbXBsZSwgZm9yIG1vc3QgYXBwbGlj YXRpb25zIGluIGRwZGssDQo+ID4gPiBtZW1zZXQgb25seSBzZXQgTiA9IDEwIG9yIDEyYnl0ZXMu IEl0IGNvbnN1bWVzIGZld2VyIGN5Y2xlcy4NCj4gPiA+DQo+ID4gPiBCdXQgdGhlbiB3aGF0IHRo ZSBwb2ludCB0byBoYXZlIGFuIHJ0ZV9tZW1zZXQoKSB1c2luZyB2ZWN0b3INCj4gPiA+IGluc3Ry dWN0aW9ucyBhdCBhbGw/DQo+ID4gPiBGcm9tIHdoYXQgeW91IGFyZSBzYXlpbmcgdGhlIG1vc3Qg Y29tbW9uIGNhc2UgaXMgZXZlbiBsZXNzIHRoZW4gU1NFDQo+ID4gPiByZWdpc3RlciBzaXplLg0K PiA+ID4gS29uc3RhbnRpbg0KPiA+DQo+ID4gRm9yIG1vc3QgY2FzZXMsIG1lbXNldCBpcyB1c2Vk IHN1Y2ggYXMgbWVtc2V0KGFkZHJlc3MsIDAsDQo+ID4gc2l6ZW9mKHN0cnVjdCB4eHgpKTsNCj4g DQo+IE9rIHRoZW4gSSBzdXBwb3NlIGZvciBzdWNoIGNhc2VzIHlvdSBkb24ndCBuZWVkIGFueSBz cGVjaWFsIGZ1bmN0aW9uIGFuZA0KPiBtZW1zZXQoKSB3b3VsZCBzdGlsbCBiZSB0aGUgYmVzdCBj aG9pY2UsIHJpZ2h0Pw0KPiANCg0KSW4gZmFjdCwgdGhlIGJhZCBwZXJmb3JtYW5jZSBkcm9wIGhh cyBiZWVuIGZvdW5kIG9uIElWQiwgICBQbGVhc2UgcmVmZXJlbmNlIHRvIA0KaHR0cDovL2RwZGsu b3JnL21sL2FyY2hpdmVzL2Rldi8yMDE2LU9jdG9iZXIvMDQ4NjI4Lmh0bWwNClRoZSBmb2xsb3dp bmcgY29kZSBjYXVzZSB0aGUgcGVyZiBpc3N1ZQ0KbWVtc2V0KCh2b2lkICopKHVpbnRwdHJfdCkm KHZpcnRpb19oZHItPmhkciksMCAsIGRldi0+dmhvc3RfaGxlbik7DQp2aG9zdF9obGVuIGlzIDEw IG9yIDEyIGJ5dGVzLCBTbywgZ2xpYmMgbWVtc2V0IGlzIG5vdCB1c2VkIGhlcmUuDQoNCj4gPiBU aGUgdXNlIGNhc2UgaGVyZSBpcyBzbWFsbCBieSBhY2NpZGVudCwgSSBvbmx5IGdpdmUgYW4gZXhh bXBsZSBoZXJlLg0KPiA+IGJ1dCBydGVfbWVtc2V0IGlzIGludHJvZHVjZWQgdG8gbmVlZCBjb25z aWRlciBnZW5lcmljIGNhc2UuDQo+IA0KPiBXZSBjYW4gaGF2ZSBydGVfbWVtc2V0X2h1Z2UoKSBv ciBzbyBpbnN0ZWFkLCBhbmQgZG9jdW1lbnQgdGhhdCBpdCBzaG91bGQNCj4gYmUgdXNlZCBmb3Ig c2l6ZXMgZ3JlYXRlciB0aGFuIHNvbWUgY3V0b2ZmIHBvaW50Lg0KPiBJbnNpZGUgaXQgeW91IGNh biBqdXN0IGNhbGwgYSBmdW5jdGlvbiBwb2ludGVyIGluc3RhbGxlZCBhdCBzdGFydHVwIChzYW1l IGFzDQo+IHJ0ZV9hY2xfY2xhc3NpZnkoKSBkb2VzKS4NCj4gRm9yIGJpZyBzaXplcywgSSBzdXBw b3NlIHRoZSBwcmljZSBvZiBleHRyYSBmdW5jdGlvbiBwb2ludGVyIGNhbGwgd291bGQgbm90DQo+ IGFmZmVjdCBwZXJmb3JtYW5jZSBtdWNoLg0KPiBGb3Igc2l6ZXMgc21hbGxlciB0aGVuIHRoaXMg Y3V0b2ZmIHBvaW50IHlvdSBzdGlsbCBjYW4gdXNlIGVpdGhlcg0KPiBydGVfbWVtc2V0X3NjYWxh cigpIG9yIGp1c3Qgbm9ybWFsIHJ0ZV9tZW1zZXQoKS4NCj4gU29tZXRoaW5nIGxpa2UgdGhhdDoN Cj4gDQo+IGV4dGVybiB2b2lkICooKl9fcnRlX21lbXNldF92ZWN0b3IpKCAodm9pZCAqcywgaW50 IGMsIHNpemVfdCBuKTsNCj4gDQo+IHN0YXRpYyBpbmxpbmUgdm9pZCoNCj4gcnRlX21lbXNldF9o dWdlKHZvaWQgKnMsIGludCBjLCBzaXplX3Qgbikgew0KPiAgICByZXR1cm4gX19ydGVfbWVtc2V0 X3ZlY3RvcihzLCBjLCBuKTsNCj4gfQ0KPiANCj4gc3RhdGljIGlubGluZSB2b2lkICoNCj4gcnRl X21lbXNldCh2b2lkICpzLCBpbnQgYywgc2l6ZV90IG4pDQo+IHsNCj4gCUlmIChuIDwgWFhYKQ0K PiAJCXJldHVybiBydGVfbWVtc2V0X3NjYWxhcihzLCBjLCBuKTsNCj4gCWVsc2UNCj4gCQlyZXR1 cm4gcnRlX21lbXNldF9odWdlKHMsIGMsIG4pOw0KPiB9DQo+IA0KPiBYWFggY291bGQgYmUgZWl0 aGVyIGEgZGVmaW5lLCBvciBjb3VsZCBhbHNvIGJlIGEgdmFyaWFibGUsIHNvIGl0IGNhbiBiZSBz ZXR1cGVkDQo+IGF0IHN0YXJ0dXAsIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlLg0KPiAN Cj4gV291bGQgdGhhdCB3b3JrPw0KPiBLb25zdGFudGluDQo+IA0KVGhlIGlkZWEgc291bmRzIGdv b2QuICAgSXQgbWF5YmUgaXMgbW9yZSBmZWFzaWJsZSBmb3IgcnRlX21lbWNweSBhbmQgcnRlX21l bXNldC4NCklmIEkgdW5kZXJzdGFuZCB3ZWxsICwgdGhlIGlkZWEgZnJvbSBCcnVjZSBpcyBzaW1p bGFyLCByaWdodCA/DQoNCj4gPiBzaXplb2Yoc3RydWN0IHh4eCkgaXMgbm90IGxpbWl0ZWQgdG8g dmVyeSBzbWFsbCBzaXplLCBzdWNoIGFzICBsZXNzIHRoYW4gU1NFDQo+IHJlZ2lzdGVyIHNpemUu DQo+ID4gSSBqdXN0IHdhbnQgdG8gc2F5IHRoYXQgdGhlIHNpemUgZm9yIHRoZSBtb3N0IHVzZSBj YXNlIGlzIG5vdCB2ZXJ5DQo+ID4gbGFyZ2UsICBTbyBjeWNsZXMgY29uc3VtZWQgSXMgbm90IGxh cmdlLiBJdCBpcyBub3Qgc3VpdGVkIHRvIGNob29zZSBmdW5jdGlvbiBhdA0KPiBydW4tdGltZSBz aW5jZSBvdmVyaGVhZCAgaXMgY29uc2lkZXJlZC4NCj4gPg0KPiA+IHRoYW5rcw0KPiA+IFpoaXlv bmcNCg==