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 816A5A052A; Mon, 3 Aug 2020 11:42:22 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C4B322BD8; Mon, 3 Aug 2020 11:42:21 +0200 (CEST) Received: from m13122.mail.163.com (m13122.mail.163.com [220.181.13.122]) by dpdk.org (Postfix) with ESMTP id E47BD255 for ; Mon, 3 Aug 2020 11:42:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=ptpd+ 5VzNqTW0Gn6/q915cZ/oDpe6lJCSaZISoEXGNU=; b=csR5TY8Ush6wVsYLdS8kV p5ucGT2hY5dMy579WA1ZnNro1yqCrmr6yZ9BDaIf2+DadNTUbw7h0VoI7eR9PFvD es0Ni29OUSOMOPCvA2BzdKxAHYPM9YaFa/7/8CtpznVEz8X7rByL1d3gJerfQzR+ 6dyNQ2BlMMyL6etwstmXTQ= Received: from yang_y_yi$163.com ( [111.207.123.56] ) by ajax-webmail-wmsvr122 (Coremail) ; Mon, 3 Aug 2020 17:42:13 +0800 (CST) X-Originating-IP: [111.207.123.56] Date: Mon, 3 Aug 2020 17:42:13 +0800 (CST) From: yang_y_yi To: "Olivier Matz" Cc: dev@dpdk.org, jiayu.hu@intel.com, thomas@monjalon.net, yangyi01@inspur.com X-Priority: 1 X-Mailer: Coremail Webmail Server Version XT5.0.10 build 20190724(ac680a23) Copyright (c) 2002-2020 www.mailtech.cn 163com In-Reply-To: <20200803081139.GK5869@platinum> References: <20200730120900.108232-1-yang_y_yi@163.com> <20200730120900.108232-3-yang_y_yi@163.com> <20200731151543.GH5869@platinum> <2a50e80c.44f.173ac4c6d20.Coremail.yang_y_yi@163.com> <20200802202907.GJ5869@platinum> <3cf82e61.145c.173b1ed87ce.Coremail.yang_y_yi@163.com> <20200803081139.GK5869@platinum> X-CM-CTRLDATA: +6+G/GZvb3Rlcl9odG09MTM4NjU6NTY= MIME-Version: 1.0 Message-ID: <7584d005.5305.173b3b3389f.Coremail.yang_y_yi@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: esGowAC3bCz12ydfvK5NAA--.18958W X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/xtbB0hV1i1UMYCMF1QAAsz X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH V1 2/3] mbuf: change free_cb interface to adapt to GSO case 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" QXQgMjAyMC0wOC0wMyAxNjoxMTozOSwgIk9saXZpZXIgTWF0eiIgPG9saXZpZXIubWF0ekA2d2lu ZC5jb20+IHdyb3RlOgo+T24gTW9uLCBBdWcgMDMsIDIwMjAgYXQgMDk6MjY6NDBBTSArMDgwMCwg eWFuZ195X3lpIHdyb3RlOgo+PiBBdCAyMDIwLTA4LTAzIDA0OjI5OjA3LCAiT2xpdmllciBNYXR6 IiA8b2xpdmllci5tYXR6QDZ3aW5kLmNvbT4gd3JvdGU6Cj4+ID5IaSwKPj4gPgo+PiA+T24gU3Vu LCBBdWcgMDIsIDIwMjAgYXQgMDc6MTI6MzZBTSArMDgwMCwgeWFuZ195X3lpIHdyb3RlOgo+PiA+ PiAKPj4gPj4gCj4+ID4+IEF0IDIwMjAtMDctMzEgMjM6MTU6NDMsICJPbGl2aWVyIE1hdHoiIDxv bGl2aWVyLm1hdHpANndpbmQuY29tPiB3cm90ZToKPj4gPj4gPkhpLAo+PiA+PiA+Cj4+ID4+ID5P biBUaHUsIEp1bCAzMCwgMjAyMCBhdCAwODowODo1OVBNICswODAwLCB5YW5nX3lfeWlAMTYzLmNv bSB3cm90ZToKPj4gPj4gPj4gRnJvbTogWWkgWWFuZyA8eWFuZ3lpMDFAaW5zcHVyLmNvbT4KPj4g Pj4gPj4gCj4+ID4+ID4+IEluIEdTTyBjYXNlLCBzZWdtZW50ZWQgbWJ1ZnMgYXJlIGF0dGFjaGVk IHRvIG9yaWdpbmFsCj4+ID4+ID4+IG1idWYgd2hpY2ggY2FuJ3QgYmUgZnJlZWQgd2hlbiBpdCBp cyBleHRlcm5hbC4gVGhlIGlzc3VlCj4+ID4+ID4+IGlzIGZyZWVfY2IgZG9lc24ndCBrbm93IG9y aWdpbmFsIG1idWYgYW5kIGRvZXNuJ3QgZnJlZQo+PiA+PiA+PiBpdCB3aGVuIHJlZmNudCBvZiBz aGluZm8gaXMgMC4KPj4gPj4gPj4gCj4+ID4+ID4+IE9yaWdpbmFsIG1idWYgY2FuIGJlIGZyZWVk IGJ5IHJ0ZV9wa3RtYnVmX2ZyZWUgc2VnbWVudGVkCj4+ID4+ID4+IG1idWZzIG9yIGJ5IHJ0ZV9w a3RtYnVmX2ZyZWUgb3JpZ2luYWwgbWJ1Zi4gVHdvIGtpbmQgb2YKPj4gPj4gPj4gY2FzZXMgc2hv dWxkIGhhdmUgZGlmZmVyZW50IGJlaGF2aW9ycy4gZnJlZV9jYiB3b24ndAo+PiA+PiA+PiBleHBs aWNpdGx5IGNhbGwgcnRlX3BrdG1idWZfZnJlZSB0byBmcmVlIG9yaWdpbmFsIG1idWYKPj4gPj4g Pj4gaWYgaXQgaXMgZnJlZWQgYnkgcnRlX3BrdG1idWZfZnJlZSBvcmlnaW5hbCBtYnVmLCBidXQg aXQKPj4gPj4gPj4gaGFzIHRvIGNhbGwgcnRlX3BrdG1idWZfZnJlZSB0byBmcmVlIG9yaWdpbmFs IG1idWYgaWYgaXQKPj4gPj4gPj4gaXMgZnJlZWQgYnkgcnRlX3BrdG1idWZfZnJlZSBzZWdtZW50 ZWQgbWJ1ZnMuCj4+ID4+ID4+IAo+PiA+PiA+PiBJbiBvcmRlciB0byBmaXggdGhpcyBpc3N1ZSwg ZnJlZV9jYiBpbnRlcmZhY2UgaGFzIHRvIGJlZW4KPj4gPj4gPj4gY2hhbmdlZCwgX19ydGVfcGt0 bWJ1Zl9mcmVlX2V4dGJ1ZiBtdXN0IGRlbGl2ZXIgY2FsbGVkCj4+ID4+ID4+IG1idWYgcG9pbnRl ciB0byBmcmVlX2NiLCBhcmd1bWVudCBvcGFxdWUgY2FuIGJlIGRlZmluZWQKPj4gPj4gPj4gYXMg YSBjdXN0b20gc3RydWN0IGJ5IHVzZXIsIGl0IGNhbiBpbmNsdWRlcyBvcmlnaW5hbCBtYnVmCj4+ ID4+ID4+IHBvaW50ZXIsIHVzZXItZGVmaW5lZCBmcmVlX2NiIGNhbiBjb21wYXJlIGNhbGxlciBt YnVmIHdpdGgKPj4gPj4gPj4gbWJ1ZiBpbiBvcGFxdWUgc3RydWN0LCBmcmVlX2NiIHNob3VsZCBm cmVlIG9yaWdpbmFsIG1idWYKPj4gPj4gPj4gaWYgdGhleSBhcmUgbm90IHNhbWUsIHRoaXMgY29y cmVzcG9uZHMgdG8gcnRlX3BrdG1idWZfZnJlZQo+PiA+PiA+PiBzZWdtZW50ZWQgbWJ1ZnMgY2Fz ZSwgb3RoZXJ3aXNlLCBmcmVlX2NiIHdvbid0IGZyZWUgb3JpZ2luYWwKPj4gPj4gPj4gbWJ1ZiBi ZWNhdXNlIHRoZSBjYWxsZXIgZXhwbGljaXRseSBjYWxsZWQgcnRlX3BrdG1idWZfZnJlZQo+PiA+ PiA+PiB0byBmcmVlIGl0Lgo+PiA+PiA+PiAKPj4gPj4gPj4gSGVyZSBpcyBwc2VkdW8gY29kZSB0 byBzaG93IHR3byBraW5kIG9mIGNhc2VzLgo+PiA+PiA+PiAKPj4gPj4gPj4gY2FzZSAxLiBydGVf cGt0bWJ1Zl9mcmVlIHNlZ21lbnRlZCBtYnVmcwo+PiA+PiA+PiAKPj4gPj4gPj4gbmJfdHggPSBy dGVfZ3NvX3NlZ21lbnQob3JpZ2luYWxfbWJ1ZiwgLyogb3JpZ2luYWwgbWJ1ZiAqLwo+PiA+PiA+ PiAgICAgICAgICAgICAgICAgICAgICAgJmdzb19jdHgsCj4+ID4+ID4+ICAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWdtZW50ZWQgbWJ1ZiAqLwo+PiA+PiA+PiAgICAgICAgICAgICAgICAgICAg ICAgKHN0cnVjdCBydGVfbWJ1ZiAqKikmZ3NvX21idWZzLAo+PiA+PiA+PiAgICAgICAgICAgICAg ICAgICAgICAgTUFYX0dTT19NQlVGUyk7Cj4+ID4+ID4KPj4gPj4gPkknbSBzb3JyeSBidXQgaXQg aXMgbm90IHZlcnkgY2xlYXIgdG8gbWUgd2hhdCBvcGVyYXRpb25zIGFyZSBkb25lIGJ5Cj4+ID4+ ID5ydGVfZ3NvX3NlZ21lbnQoKS4KPj4gPj4gPgo+PiA+PiA+SW4gdGhlIGN1cnJlbnQgY29kZSwg SSBvbmx5IHNlZSBjYWxscyB0byBydGVfcGt0bWJ1Zl9hdHRhY2goKSwKPj4gPj4gPndoaWNoIGRv IG5vdCBkZWFsIHdpdGggZXh0ZXJuYWwgYnVmZmVycy4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZz8K Pj4gPj4gPgo+PiA+PiA+QXJlIHlvdSBhYmxlIHRvIHNob3cgdGhlIGlzc3VlIG9ubHkgd2l0aCBt YnVmIGZ1bmN0aW9ucz8gSXQgd291bGQKPj4gPj4gPmJlIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCB3 aGF0IGRvZXMgbm90IHdvcmsuCj4+ID4+ID4KPj4gPj4gPgo+PiA+PiA+VGhhbmtzLAo+PiA+PiA+ T2xpdmllcgo+PiA+PiA+Cj4+ID4+IE9saXZlciwgdGhhbmsgeW91IGZvciBjb21tZW50LCBsZXQg bWUgc2hvdyB5b3Ugd2h5IGl0IGRvZXNuJ3Qgd29yayBmb3IgbXkgdXNlIGNhc2UuICBJbiBPVlMg RFBESywgVk0gdXNlcyB2aG9zdHVzZXJjbGllbnQgdG8gc2VuZCBsYXJnZSBwYWNrZXRzIHdob3Nl IHNpemUgaXMgYWJvdXQgNjRLIGJlY2F1c2Ugd2UgZW5hYmxlZCBUU08gJiBVRk8sIHRoZXNlIGxh cmdlIHBhY2tldHMgdXNlIHJ0ZV9tYnVmcyBhbGxvY2F0ZWQgYnkgRFBESyB2aXJ0aW9fbmV0IGZ1 bmN0aW9uIAo+PiA+PiB2aXJ0aW9fZGV2X3BrdG1idWZfYWxsb2MoKSAoaW4gZmlsZSBsaWIvbGli cnRlX3Zob3N0L3ZpcnRpb19uZXQuYy4gUGxlYXNlIHJlZmVyIHRvIFtQQVRDSCBWMSAzLzNdLCBJ IGNoYW5nZWQgZnJlZV9jYiBhcyBiZWxvdywgdGhlc2UgcGFja2V0cyB1c2UgdGhlIHNhbWUgYWxs b2NhdGUgZnVuY3Rpb24gYW5kIHRoZSBzYW1lIGZyZWVfY2Igbm8gbWF0dGVyIHRoZXkgYXJlIFRD UCBwYWNrZXQgb3IgVURQIHBhY2tldHMsIGluIGNhc2Ugb2YgVlhMQU4gVFNPLCBtb3N0IE5JQ3Mg Y2FuJ3Qgc3VwcG9ydCBpbm5lciBVRFAgZnJhZ21lbnQgb2ZmbG9hZCwgc28gT1ZTIERQREsgaGFz IHRvIGRvIGl0IGJ5IHNvZnR3YXJlLCBmb3IgVURQIGNhc2UsIHRoZSBvcmlnaW5hbCBydGVfbWJ1 ZiBvbmx5IGNhbiBiZSBmcmVlZCBieSBzZWdtZW50ZWQgcnRlX21idWZzIHdoaWNoIGFyZSBvdXRw dXQgcGFja2V0cyBvZiBydGVfZ3NvX3NlZ21lbnQsIGkuZS4gdGhlIG9yaWdpbmFsIHJ0ZV9tYnVm IG9ubHkgY2FuIGZyZWVkIGJ5IGZyZWVfY2IsIHlvdSBjYW4gc2VlLCBpdCBleHBsaWNpdGx5IGNh bGxlZCBydGVfcGt0bWJ1Zl9mcmVlKGFyZy0+bWJ1ZiksIHRoZSBjb25kaXRpb24gc3RhdGVtZW50 ICJpZiAoY2FsbGVyX20gIT0gYXJnLT5tYnVmKSIgaXMgdHJ1ZSBmb3IgdGhpcyBjYXNlLCB0aGlz IGhhcyBubyBwcm9ibGVtLCBidXQgZm9yIFRDUCBjYXNlLCB0aGUgb3JpZ2luYWwgbWJ1ZiBpcyBk ZWxpdmVyZWQgdG8gcnRlX2V0aF90eF9idXJzdCgpIGJ1dCBub3Qgc2VnbWVudGVkIHJ0ZV9tYnVm cyBvdXRwdXQgYnkgcnRlX2dzb19zZWdtZW50LCBQTUQgZHJpdmVyIHdpbGwgY2FsbCBydGVfcGt0 bWJ1Zl9mcmVlKG9yaWdpbmFsX3J0ZV9tYnVmKSBidXQgbm90IHJ0ZV9wa3RtYnVmX2ZyZWUoc2Vn bWVudGVkX3J0ZV9tYnVmcyksIHRoZSBzYW1lIGZyZWVfY2Igd2lsbCBiZSBjYWxsZWQsIHRoYXQg bWVhbnMgb3JpZ2luYWxfcnRlX21idWYgd2lsbCBiZSBmcmVlZCB0d2ljZSwgeW91IGtub3cgd2hh dCB3aWxsIGhhcHBlbiwgdGhpcyBpcyBqdXN0IHRoZSBpc3N1ZSBJJ20gZml4aW5nLiBJIGJyaW5n IGluIGNhbGxlcl9tIGFyZ3VtZW50LCBpdCBjYW4gaGVscCB3b3JrIGFyb3VuZCB0aGlzIGJlY2F1 c2UgY2FsbGVyX20gaXMgYXJnLT5tYnVmIGFuZCB0aGUgY29uZGl0aW9uIHN0YXRlbWVudCAiaWYg KGNhbGxlcl9tICE9IGFyZy0+bWJ1ZikiIGlzIGZhbHNlLCB5b3UgY2FuJ3QgZml4IGl0IHdpdGhv dXQgdGhlIGNoYW5nZSB0aGlzIHBhdGNoIHNlcmllcyBkaWQuCj4+ID4KPj4gPkknbSBzaWxsIG5v dCBzdXJlIHRvIGdldCB5b3VyIGlzc3VlLiBQbGVhc2UsIGlmIHlvdSBoYXZlIGEgc2ltcGxlIHRl c3QKPj4gPmNhc2UgdXNpbmcgb25seSBtYnVmcyBmdW5jdGlvbnMgKHdpdGhvdXQgdmlydGlvLCBn c28sIC4uLiksIGl0IHdvdWxkIGJlCj4+ID52ZXJ5IGhlbHBmdWwgYmVjYXVzZSB3ZSB3aWxsIGJl IHN1cmUgdGhhdCB3ZSBhcmUgdGFsa2luZyBhYm91dCB0aGUgc2FtZQo+PiA+dGhpbmcuIEluIGNh c2UgdGhlcmUgaXMgYW4gaXNzdWUsIGl0IGNhbiBlYXNpbHkgYmVjb21lIGEgdW5pdCB0ZXN0Lgo+ PiAKPj4gT2xpdmVyLCBJIHRoaW5rIHlvdSBkb24ndCBnZXQgdGhlIHBvaW50LCBmcmVlIG9wZXJh dGlvbiBjYW4ndCBiZSBjb250cm9sbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBpdHNlbGYsIAo+PiBp dCBpcyBkb25lIGJ5IFBNRCBkcml2ZXIgYW5kIHRyaWdnZXJlZCBieSBydGVfZXRoX3R4X2J1cnN0 LCBJIGhhdmUgc2hvd24gcHNldWRvIGNvZGUsCj4+IHJ0ZV9nc29fc2VnbWVudCBqdXN0IHNlZ21l bnRzIGEgbGFyZ2UgbWJ1ZiB0byBtdWx0aXBsZSBtYnVmcywgaXQgd29uJ3Qgc2VuZCB0aGVtLCB0 aGUgYXBwbGljYXRpb24KPj4gd2lsbCBjYWxsIHJ0ZV9ldGhfdHhfYnVyc3QgdG8gc2VuZCB0aGVt IGZpbmFsbHkuCj4+Cj4+ID4KPj4gPlRoYXQgc2FpZCwgSSBsb29rZWQgYXQgdmhvc3QgbWJ1ZiBh bGxvY2F0aW9uIGFuZCBnc28gc2VnbWVudGF0aW9uLCBhbmQKPj4gPkkgZm91bmQgc29tZSBzdHJh bmdlIHRoaW5nczoKPj4gPgo+PiA+MS8gSW4gdmlydGlvX2Rldl9leHRidWZfYWxsb2MoKSwgYW5k IEkgdGhlcmUgYXJlIDIgcGF0aHMgdG8gY3JlYXRlIHRoZQo+PiA+ICAgZXh0IG1idWYuCj4+ID4K Pj4gPiAgIGEvIFRoZSBmaXJzdCBvbmUgc3RvcmVzIHRoZSBzaGluZm8gc3RydWN0IGluIHRoZSBt YnVmLCBiYXNpY2FsbHkKPj4gPiAgICAgIGxpa2UgdGhpczoKPj4gPgo+PiA+CXBrdCA9IHJ0ZV9w a3RtYnVmX2FsbG9jKG1wKTsKPj4gPglzaGluZm8gPSBydGVfcGt0bWJ1Zl9tdG9kKHBrdCwgc3Ry dWN0IHJ0ZV9tYnVmX2V4dF9zaGFyZWRfaW5mbyAqKTsKPj4gPglidWYgPSBydGVfbWFsbG9jKE5V TEwsIGJ1Zl9sZW4sIFJURV9DQUNIRV9MSU5FX1NJWkUpOwo+PiA+CXNoaW5mby0+ZnJlZV9jYiA9 IHZpcnRpb19kZXZfZXh0YnVmX2ZyZWU7Cj4+ID4Jc2hpbmZvLT5mY2Jfb3BhcXVlID0gYnVmOwo+ PiA+CXJ0ZV9tYnVmX2V4dF9yZWZjbnRfc2V0KHNoaW5mbywgMSk7Cj4+ID4KPj4gPiAgICAgIEkg ZG9uJ3QgdGhpbmsgaXQgaXMgYSBnb29kIGlkZWEsIGJlY2F1c2UgdGhlcmUgaXMgbm8gZ3VhcmFu dGVlIHRoYXQKPj4gPiAgICAgIHRoZSBtYnVmIHdvbid0IGJlIGZyZWVkIGJlZm9yZSB0aGUgYnVm ZmVyLiBGb3IgaW5zdGFuY2UsIGRvaW5nCj4+ID4gICAgICB0aGlzIHdpbGwgcHJvYmFibHkgZmFp bDoKPj4gPgo+PiA+CXBrdDIgPSBydGVfcGt0bWJ1Zl9hbGxvYyhtcCk7Cj4+ID4JcnRlX3BrdG1i dWZfYXR0YWNoKHBrdDIsIHBrdCk7Cj4+ID4JcnRlX3BrdG1idWZfZnJlZShwa3QpOyAgLyogcGt0 IGlzIGZyZWVkLCBidXQgaXQgY29udGFpbnMgc2hpbmZvICEgKi8KPj4gCj4+IHBrdCBpcyBjcmVh dGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBJIGNhbiBjb250cm9sLCBzbyBJIGNhbiBjb250cm9sIGl0 IHdoZXJlIGl0IHdpbGwgYmUgZnJlZWQsIHJpZ2h0Pwo+Cj5UaGlzIGV4YW1wbGUgc2hvd3MgdGhh dCBtYnVmcyBhbGxvY2F0ZWQgbGlrZSB0aGlzIGJ5IHRoZSB2aG9zdAo+ZHJpdmVyIGFyZSBub3Qg Y29uc3RydWN0ZWQgY29ycmVjdGx5LiBJZiBhbiBhcHBsaWNhdGlvbiBhdHRhY2ggYSBuZXcKPnBh Y2tldCAocGt0MikgdG8gaXQgYW5kIGZyZWVzIHRoZSBvcmlnaW5hbCBvbmUgKHBrdCksIGl0IG1h eSByZXN1bHQgaW4gYQo+bWVtb3J5IGNvcnJ1cHRpb24uCj4KPk9mIGNvdXJzZSwgdG8gYmUgdGVz dGVkIGFuZCBjb25maXJtZWQuCgpObywgYXR0YWNoIHdpbGwgaW5jcmVhc2UgcmVmY250IG9mIHNo aW5mbywgZnJlZV9jYiBvbmx5IGlzIGNhbGxlZCB3aGVuICByZWZjbnQgb2Ygc2hpbmZvIGlzIGRl Y3JlYXNlZCB0bwowLCBpc24ndCBpdD8KCj4KPj4gCj4+ID4KPj4gPiAgICAgIFRvIGRvIHRoaXMg cHJvcGVybHksIHRoZSBtYnVmIHJlZmNudCBzaG91bGQgYmUgaW5jcmVhc2VkLCBhbmQKPj4gPiAg ICAgIHRoZSBtYnVmIHNob3VsZCBiZSBmcmVlZCBpbiB0aGUgY2FsbGJhY2suIEJ1dCBJIGRvbid0 IHRoaW5rIGl0J3MKPj4gPiAgICAgIHdvcnRoIGRvaW5nIGl0LCBnaXZlbiB0aGUgc2Vjb25kIHBh dGggKGIvKSBsb29rcyBnb29kIHRvIG1lLgo+PiA+Cj4+ID4gICBiLyBUaGUgc2Vjb25kIHBhdGgg c3RvcmVzIHRoZSBzaGluZm8gc3RydWN0IGF0IHRoZSBlbmQgb2YgdGhlCj4+ID4gICAgICBhbGxv Y2F0ZWQgYnVmZmVyLCBsaWtlIHRoaXM6Cj4+ID4KPj4gPglwa3QgPSBydGVfcGt0bWJ1Zl9hbGxv YyhtcCk7Cj4+ID4JYnVmX2xlbiArPSBzaXplb2YoKnNoaW5mbykgKyBzaXplb2YodWludHB0cl90 KTsKPj4gPglidWZfbGVuID0gUlRFX0FMSUdOX0NFSUwodG90YWxfbGVuLCBzaXplb2YodWludHB0 cl90KSk7Cj4+ID4JYnVmID0gcnRlX21hbGxvYyhOVUxMLCBidWZfbGVuLCBSVEVfQ0FDSEVfTElO RV9TSVpFKTsKPj4gPglzaGluZm8gPSBydGVfcGt0bWJ1Zl9leHRfc2hpbmZvX2luaXRfaGVscGVy KGJ1ZiwgJmJ1Zl9sZW4sCj4+ID4JCQkJCSAgICAgIHZpcnRpb19kZXZfZXh0YnVmX2ZyZWUsIGJ1 Zik7Cj4+ID4KPj4gPiAgICAgIEkgdGhpbmsgdGhpcyBpcyBjb3JyZWN0LCBiZWNhdXNlIHdlIGhh dmUgdGhlIGd1YXJhbnRlZSB0aGF0IHNoaW5mbwo+PiA+ICAgICAgZXhpc3RzIGFzIGxvbmcgYXMg dGhlIGJ1ZmZlciBleGlzdHMuCj4+IAo+PiBXaGF0IGJ1ZmZlciBkb2VzIHRoZSBhbGxvY2F0ZWQg YnVmZmVyIHlvdSdyZSBzYXlpbmcgaGVyZT8gVGhlIGlzc3VlIHdlJ3JlIGRpc2N1c3NpbmcgaG93 IHdlIGNhbgo+PiBmcmVlIG9yaWdpbmFsIG1idWYgd2hpY2ggb3ducyBzaGluZm8gYnVmZmVyLgo+ Cj5JIGRvbid0IGdldCB5b3VyIHF1ZXN0aW9uLgo+Cj5JJ20ganVzdCBzYXlpbmcgdGhhdCB0aGlz IGNvZGUgcGF0aCBsb29rcyBjb3JyZWN0LCBjb21wYXJlZCB0bwo+dGhlIHByZXZpb3VzIG9uZS4K CkkgdGhpbmsgeW91J3JlIGNoYWxsZW5naW5nIHByaW5jaXBsZSBvZiBleHRlcm5hbCBtYnVmLCB0 aGF0IGlzbid0IHRoZSB0aGluZyBJIGFkZHJlc3MuCgo+Cj4+IAo+PiA+Cj4+ID4yLyBpbiBydGVf Z3NvX3NlZ21lbnQoKSwgdGhlcmUgaXMgYSBsb29wIGxpa2UgdGhpczoKPj4gPgo+PiA+CXdoaWxl IChwa3Rfc2VnKSB7Cj4+ID4JCXJ0ZV9tYnVmX3JlZmNudF91cGRhdGUocGt0X3NlZywgLTEpOwo+ PiA+CQlwa3Rfc2VnID0gcGt0X3NlZy0+bmV4dDsKPj4gPgl9Cj4+ID4KPj4gPiAgIFlvdSBjaGFu Z2UgaXQgdG8gdGFrZSBpbiBhY2NvdW50IHRoZSByZWZjbnQgZm9yIGV4dCBtYnVmcy4KPj4gPgo+ PiA+ICAgSSBtYXkgaGF2ZSBtaXNzZWQgc29tZXRoaW5nIGJ1dCBJIHdvbmRlciB3aHkgaXQgaXMg bm90IHNpbXBseToKPj4gPgo+PiA+CXJ0ZV9wa3RtYnVmX2ZyZWUocGt0X3NlZyk7Cj4+ID4KPj4g PiAgIEl0IHdpbGwgZGVjcmVhc2UgdGhlIHByb3BlciByZWZjbnQsIGFuZCBmcmVlIHRoZSBtYnVm cyBpZiB0aGV5Cj4+ID4gICBhcmUgbm90IHVzZWQuCj4+IAo+PiBBZ2FpbiwgcnRlX2dzb19zZWdt ZW50IGp1c3QgZGVjcmVhc2VzIHJlZmNudCBieSBvbmUsIHRoaXMgd2lsbCBlbnN1cmUgdGhlIGxh c3Qgc2VnbWVudGVkIAo+PiBtYnVmIGZyZWUgd2lsbCB0cmlnZ2VyIGZyZWVpbmcgb3JpZ2luYWwg bWJ1ZiAob25seSBmcmVlX2NiIGNhbiBkbyB0aGlzKS4KPgo+cnRlX3BrdG1idWZfZnJlZSgpIHdp bGwgYWxzbyBkZWNlcmFzZSB0aGUgcmVmY250LCBhbmQgZnJlZSB0aGUgcmVzb3VyY2VzCj53aGVu IHRoZSByZWZjbnQgcmVhY2hlcyAwLgo+Cj5JdCBoYXMgc29tZSBhZHZhbnRhZ2VzIGNvbXBhcmVk IHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnRlciBvZiBhbGwKPnNlZ21lbnRzOgo+Cj4t IG5vIG5lZWQgdG8gaXRlcmF0ZSB0aGUgc2VnbWVudHMsIHRoZXJlIGlzIG9ubHkgb25lIGZ1bmN0 aW9uIGNhbGwKPi0gbm8gbmVlZCB0byBoYXZlIGEgc3BlY2lhbCBjYXNlIGZvciBleHQgbWJ1ZnMg bGlrZSB5b3UgZGlkIGluIHlvdXIgcGF0Y2gKPi0gaXQgbWF5IGJlIHNhZmVyLCBpbiBjYXNlIHNv bWUgc2VnbWVudHMgaGF2ZSBhIHJlZmNudCA9PSAxLCBiZWNhdXNlCj4gIHJlc291cmNlcyB3aWxs IGJlIGZyZWVkLgoKRm9yIGV4dGVybmFsIG1idWYsIGF0dGFjaCBvbmx5IGluY3JlYXNlcyByZWZj bnQgb2Ygc2hpbmZvLCByZWZjbnQgb2YgbWJ1ZiB3b24ndCBiZSB0b3VjaGVkLiBGb3Igbm9ybWFs Cm1idWYsIGF0dGFjaCBvbmx5IGluY3JlYXNlIHJlZmNudCBvZiBtYnVmLCBubyBzaGluZm8gdGhl cmUsIG5vIHJlZmNudCBvZiBzaGluZm8gaW5jcmVhc2VkLgoKPgo+PiA+QWdhaW4sIHNvcnJ5IGlm IHRoaXMgaXMgbm90IHRoZSBpc3N1ZSB5b3VyIGFyZSByZWZlcnJpbmcgdG8sIGJ1dAo+PiA+aW4g dGhpcyBjYXNlIEkgcmVhbGx5IHRoaW5rIHRoYXQgaGF2aW5nIGEgc2ltcGxlIGV4YW1wbGUgY29k ZSB0aGF0Cj4+ID5zaG93cyB0aGUgaXNzdWUgd291bGQgaGVscC4KPj4gCj4+IE9saXZlciwgbXkg c3RhdGVtZW50IGluIHRoZSBwYXRjaCBJIHNlbnQgb3V0IGhhcyBwc2V1ZG8gY29kZSB0byBzaG93 IHRoaXMuICBJIGRvbid0IHRoaW5rIGEgc2ltcGxlCj4+IHVuaXQgdGVzdCBjYW4gc2hvdyBpdC4K Pgo+SSBkb24ndCBzZWUgd2h5LiBUaGUgUE1EcyBhbmQgdGhlIGxpYnJhcmllcyB1c2UgdGhlIG1i dWYgZnVuY3Rpb25zLCB3aHkKPmEgdW5pdCB0ZXN0IGNvdWxkbid0IGNhbGwgdGhlIHNhbWUgZnVu Y3Rpb25zPwo+Cj4+IExldCBtZSBzdW1tYXJpemUgaXQgaGVyZSBhZ2Fpbi4gRm9yIG9yaWdpbmFs IG1idWYsIHRoZXJlIGFyZSB0d28gY2FzZXMgZnJlZWluZwo+PiBpdCwgY2FzZSBvbmUgaXMgUE1E IGRyaXZlciBjYWxscyBmcmVlIGFnYWluc3Qgc2VnbWVudGVkIG1idWZzLCBsYXN0IHNlZ21lbnRl ZCBtYnVmIGZyZWUgd2lsbCB0cmlnZ2VyCj4+IGZyZWVfY2IgY2FsbCB3aGljaCB3aWxsIGZyZWUg b3JpZ2luYWwgbGFyZ2UgJiBleHRlbmRlZCBtYnVmLgo+Cj5PSwo+Cj4+IENhc2UgdHdvIGlzIFBN RCBkcml2ZXIgd2lsbCBjYWxsIGZyZWUgYWdhaW5zdAo+PiBvcmlnaW5hbCBtYnVmLCB0aGF0IGFs c28gd2lsbCBjYWxsIGZyZWVfY2IgdG8gZnJlZSBhdHRhY2hlZCBleHRlbmRlZCBidWZmZXIuCj4K Pk9LCj4KPkFuZCB3aGF0IG1ha2VzIHRoYXQgY2FzZSAxIG9yIGNhc2UgMiBpcyBleGVjdXRlZD8K Pgo+PiBJbiBjYXNlIG9uZSBmcmVlX2NiIG11c3QgY2FsbAo+PiBydGVfcGt0bWJ1Zl9mcmVlIG90 aGVyd2lzZSBub2JvZHkgd2lsbCBmcmVlIG9yaWdpbmFsIGxhcmdlICYgZXh0ZW5kZWQgbWJ1Ziwg aW4gY2FzZSB0d28gZnJlZV9jYiBjYW4ndCAKPj4gY2FsbCBydGVfcGt0bWJ1Zl9mcmVlIGJlY2F1 c2UgdGhlIGNhbGxlciBjYWxsaW5nIGl0IGlzIGp1c3QgcnRlX3BrdG1idWZfZnJlZSB3ZSBuZWVk LiBUaGF0IGlzIHRvIHNheSwgeW91Cj4+IG11c3QgdXNlIHRoZSBzYW1lIGZyZWVfY2IgdG8gaGFu ZGxlIHRoZXNlIHR3byBjYXNlcywgdGhpcyBpcyBteSBpc3N1ZSBhbmQgdGhlIHBvaW50IHlvdSBk b24ndCBnZXQuCj4KPkkgdGhpbmsgdGhlcmUgaXMgbm8gbmVlZCB0byBjaGFuZ2UgdGhlIGZyZWVf Y2IgQVBJLiBJdCBzaG91bGQgd29yayBsaWtlCj50aGlzOgo+Cj4tIHZpcnRpbyBjcmVhdGVzIHRo ZSBvcmlnaW5hbCBleHRlcm5hbCBtYnVmIChvcmlnX20pCj4tIGdzbyB3aWxsIGNyZWF0ZSBhIG5l dyBtYnVmIHJlZmVyZW5jaW5nIHRoZSBleHRlcm5hbCBidWZmZXIgKG5ld19tKQo+Cj5BdCB0aGlz IHBvaW50LCB0aGUgc2hpbmZvIGhhcyBhIHJlZmNudCBvZiAyLiBUaGUgbGFyZ2UgYnVmZmVyIHdp bGwgYmUKPmZyZWVkIGFzIHNvb24gYXMgcnRlX3BrdG1idWZfZnJlZSgpIGlzIGNhbGxlZCBvbiBv cmlnX20gYW5kIG5ld19tLAo+d2hhdGV2ZXIgdGhlIG9yZGVyLgo+Cj5SZWdhcmRzLAo+T2xpdmll cgoKT2xpdmVyLCB0aGUgcmVhc29uIGl0IHdvcmtzIGlzIEkgY2hhbmdlZCBmcmVlX2NiIEFQSSwg Y2FzZSAxIGRvZXNuJ3Qga25vdyBvcmlnX20sIGhvdyB5b3UgbWFrZSBpdCBmcmVlIG9yaWdfbSBp biBmcmVlX2NiLgpUaGUgaW50ZW50aW9uIEkgY2hhbmdlIGZyZWVfY2IgaXMgdG8gbGV0IGl0IGtu b3cgb3JpZ19tLCBJIHNhdyBPVlMgRFBESyByYW4gb3V0IG91dCBidWZmZXJzIGFuZCBvcmlnX20g aXNuJ3QgZnJlZWQsIHRoYXQgaXMgd2h5Ckkgd2FudCB0byBicmluZyBpbiB0aGlzIHRvIGZpeCB0 aGUgaXNzdWUuIEFnYWluLCBpbiBjYXNlIDEsIG5vYm9keSBleHBsaWNpdGx5IGNhbGxzIHJldF9w a3RtYnVmX2ZyZWUob3JpZ19tKSBleGNlcHQgZnJlZV9jYiBJIGNoYW5nZWQuCgpmcmVlX2NiIG11 c3QgaGFuZGxlIGNhc2UgMSBhbmQgY2FzZSAyIGluIHRoZSBzYW1lIGNvZGUsIGZvciBjYXNlIDEs IGNhbGxlcl9tIGlzIHNlZ21lbnRlZCBuZXdfbSwgZm9yIGNhc2UgMiwgY2FsbGVyX20gaXMgb3Jp Z19tLgoKbG9vcCBpbiBydGVfZ3NvX3NlZ2VtZW50IGlzIGhhbmRsaW5nIG9yaWdpbmFsIG1idWYg KHRoaXMgbWJ1ZiBpcyBtdWx0aS1tYnVmIGFuZCBpbmNsdWRlcyBtdWx0aXBsZSBtYnVmcyB3aGlj aCBhcmUgbGlua2VkIGJ5IG5leHQKcG9pbnRlciksIGl0IGlzbid0IGEgcHJvYmxlbSBhdCBhbGwu CgpQbGVhc2Ugc2hvdyBtZSBjb2RlIGhvdyB5b3UgY2FuIGZpeCBteSBpc3N1ZSBpZiB5b3UgZG9u J3QgY2hhbmdlIGZyZWVfY2IsIHRoYW5rIHlvdS4KCnN0cnVjdCBzaGluZm9fYXJnIHsKICAgICAg IHZvaWQgKmJ1ZjsKICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqbWJ1ZjsKfTsKCnZpcnRpb19kZXZf ZXh0YnVmX2ZyZWUoc3RydWN0IHJ0ZV9tYnVmICpjYWxsZXJfbSwgdm9pZCAqb3BhcXVlKQp7CiAg ICAgICBzdHJ1Y3Qgc2hpbmZvX2FyZyAqYXJnID0gKHN0cnVjdCBzaGluZm9fYXJnICopb3BhcXVl OwoKICAgICAgIHJ0ZV9mcmVlKGFyZy0+YnVmKTsKICAgICAgIGlmIChjYWxsZXJfbSAhPSBhcmct Pm1idWYpCiAgICAgICAgICAgICAgIHJ0ZV9wa3RtYnVmX2ZyZWUoYXJnLT5tYnVmKTsKICAgICAg IHJ0ZV9mcmVlKGFyZyk7Cn0K