From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg303.qq.com (smtpbg303.qq.com [184.105.206.26]) by dpdk.org (Postfix) with ESMTP id 9D8D7231C for ; Tue, 25 Oct 2016 09:10:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1477379427; bh=UO4GW2e4SzzYKMGOlpCkpw3v1U5S/Y4+KwODRObHO3g=; h=From:To:Cc:Subject:Mime-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID; b=BavAnpOatUe3kM0J60RU+uo3AvdTl4+2BMI3Zx+yJDml056BVV5Xc5SnHZ98GYfxQ iHynJs3CS0cJssw5HGQ1atz5HElRatvPjBLxlDSYmIOZlabFYfNZK9JJpA8HSpFxVC uI0DoEYgETVdA3JGL8bcXSxuNshkytuWiXTYGvtg= X-QQ-FEAT: jxsli/yvQ/sP9uzTYYCRkAYshc8mUJY1U8kMeu5NM8ZP+Xsf3bnS+MeMQWBRs 42bst7lebZAvJF72TMhdQhsMDxnMnDX60+hdpvk40H4LHmcWTTcYZ0zeCb4MnCRZujEMjUj g7TR4HvbYKH0U+yqa13uLoH1UkZda9WlT8Rh0ZF5qpCYNKTfTJyxBrYMgBitKS+xkhXkU3q h9txZ70JTEhQhgfjN8oKFtUafO9CAHkbjaMtiSHi5JXJ4CGlG0g8jDDm85nBFQhl2GV9vJU GWyuuCGKkzQqJ1DK/qbJbq/dJbmI4UnLOlOk3nJ1kyyTKS X-QQ-SSF: 000000000000000000000000000000Z X-HAS-ATTACH: no X-QQ-BUSINESS-ORIGIN: 2 X-Originating-IP: 180.168.106.215 X-QQ-STYLE: X-QQ-mid: webmail88t1477379424t447485 From: "=?ISO-8859-1?B?eWluZ3poaQ==?=" To: "=?ISO-8859-1?B?WmhhbmcsIEhlbGlu?=" Cc: "=?ISO-8859-1?B?ZGV2QGRwZGsub3Jn?=" Mime-Version: 1.0 Date: Tue, 25 Oct 2016 15:10:23 +0800 X-Priority: 3 Message-ID: X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x X-QQ-ReplyHash: 1773615925 X-QQ-SENDSIZE: 520 X-QQ-FName: A136924A8DE84523BDFAD10A223E2F8E X-QQ-LocalIP: 10.130.87.152 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] rte_eth_tx_burst() hangs because of nofreedescriptors X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 Oct 2016 07:10:29 -0000 SGkgSGVsaW4sDQoNCg0KSSdtIGRvaW5nIGNvbXBhcmlzb24gdGVzdHMgdG9kYXksICh3aXRo IGZyYWdtZW50ZWQgYW5kIHNtYWxsIHRyYWZmaWMpLg0KDQoNCk9uIHRoZSBvdGhlciBoYW5k LCBJIGNoZWNrZWQgc29tZSBleGFtcGxlIGNvZGUgZnJvbSBEUERLIHNvdXJjZTogDQpsb2Fk X2JhbGFuY2VyOg0KYXBwX2xjb3JlX2lvX3R4Og0KDQoNCgkJCW5fcGt0cyA9IHJ0ZV9ldGhf dHhfYnVyc3QoDQoJCQkJcG9ydCwNCgkJCQkwLA0KCQkJCWxwLT50eC5tYnVmX291dFtwb3J0 XS5hcnJheSwNCgkJCQkodWludDE2X3QpIG5fbWJ1ZnMpOw0KDQoNCg0KCQkJaWYgKHVubGlr ZWx5KG5fcGt0cyA8IG5fbWJ1ZnMpKSB7DQoJCQkJdWludDMyX3QgazsNCgkJCQlmb3IgKGsg PSBuX3BrdHM7IGsgPCBuX21idWZzOyBrICsrKSB7DQoJCQkJCXN0cnVjdCBydGVfbWJ1ZiAq cGt0X3RvX2ZyZWUgPSBscC0+dHgubWJ1Zl9vdXRbcG9ydF0uYXJyYXlba107DQoJCQkJCXJ0 ZV9wa3RtYnVmX2ZyZWUocGt0X3RvX2ZyZWUpOw0KCQkJCX0NCgkJCX0NCg0KQW5kIGZyYWdt ZW50YXRpb24gZXhhbXBsZQ0KaHR0cDovL2RwZGsub3JnL2RvYy9hcGktMi4yL2lwX2ZyYWdt ZW50YXRpb25fMm1haW5fOGMtZXhhbXBsZS5odG1sDQogICAgICAgIHJldCA9IHJ0ZV9ldGhf dHhfYnVyc3QocG9ydCwgcXVldWVpZCwgbV90YWJsZSwgbik7DQogICAgICAgIGlmICh1bmxp a2VseShyZXQgPCBuKSkgew0KICAgICAgICAgICAgICAgIGRvIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgIHJ0ZV9wa3RtYnVmX2ZyZWUobV90YWJsZVtyZXRdKTsNCiAgICAgICAgICAg ICAgICB9IHdoaWxlICgrK3JldCA8IG4pOw0KICAgICAgICB9DQoNCg0KDQpUaGV5IHdvcmtz IGJhc2ljYWxseSB0aGUgc2FtZSBhcyBpbiBteSBhcHAsIGlzIHRoZXJlIGFueSBvdGhlciB3 YXkgdG8gZnJlZSBzZWdtZW50ZWQgcGFja2V0cz8NClRoZSBxdWVzdGlvbiBpczoNCmlmIHBr dF9tYnVmIG5leHQgcG9pbnRlciBpcyBub3Qgbm9uZSwgcnRlX3BrdG1idWZfZnJlZSgpIHdp bGwgZnJlZSBhbGwgdGhlIHBhY2tldCBvZiB0aGF0IGxpbmtsaXN0LCBidXQgZHVlIHRvIHBh Y2tldCByZS1vcmRlciwgSSBndWVzcyB0aG9zZSBwYWNrZXRzIG1heSBub3Qgc2VxdWVudGlh bGx5IHN0b3JlcyBpbiB0aGUgbWJ1ZiBhcnJheT8gU28gaG93IGNhbiB3ZSBjb3JyZWN0bHkg ZnJlZSB0aG9zZSBmcmFnbWVudGVkIHBhY2tldHMgaWYgIHJ0ZV9ldGhfdHhfYnVyc3QoKSBk aWRuJ3Qgc2VudCBvdXQgdGhlbSBzbyB3ZSBuZWVkIHRvIG1hbnVhbGx5IGZyZWU/DQoNCg0K VGhhbmtzDQoNCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0gT3JpZ2luYWwgLS0tLS0tLS0tLS0t LS0tLS0tDQpGcm9tOiAgIlpoYW5nLCBIZWxpbiI7PGhlbGluLnpoYW5nQGludGVsLmNvbT47 DQpEYXRlOiAgVHVlLCBPY3QgMjUsIDIwMTYgMDk6MDUgQU0NClRvOiAgInlpbmd6aGkiPGth aXRveUBxcS5jb20+OyANCkNjOiAgImRldkBkcGRrLm9yZyI8ZGV2QGRwZGsub3JnPjsgDQpT dWJqZWN0OiAgUkU6IFJFOiBbZHBkay1kZXZdIHJ0ZV9rbmlfdHhfYnVyc3QoKSBoYW5ncyBi ZWNhdXNlIG9mIG5vZnJlZWRlc2NyaXB0b3JzDQoNCg0KDQogIA0KIA0KIA0KIA0KICAgIA0K RnJvbTogeWluZ3poaSBbbWFpbHRvOmthaXRveUBxcS5jb21dIA0KIFNlbnQ6IE1vbmRheSwg T2N0b2JlciAyNCwgMjAxNiA2OjM5IFBNDQogVG86IFpoYW5nLCBIZWxpbg0KIENjOiBkZXZA ZHBkay5vcmcNCiBTdWJqZWN0OiBSZTogUkU6IFtkcGRrLWRldl0gcnRlX2tuaV90eF9idXJz dCgpIGhhbmdzIGJlY2F1c2Ugb2Ygbm8gZnJlZWRlc2NyaXB0b3JzDQogDQogDQogDQogDQog IA0KSGkgSGVsaW4sDQogDQogIA0KIA0KIA0KICANClRoYW5rcyBmb3IgeW91ciByZXNwb25z ZSwgdG8gYW5zd2VyIHlvdXIgcXVlc3Rpb25zOg0KIA0KICANCjEuIHdlIHNlbmQgb25seSBv bmUgcGFja2V0IGVhY2ggdGltZSBjYWxsaW5nIHJ0ZV9rbmlfdHhfYnVyc3QoKSwgd2hpY2gg bWVhbnMgdGhlIGxhc3QgYXJndW1lbnQgaXMgMS4NCiANCiAgDQoyLiBpdCByZXR1cm5zIDAg YmVjYXVzZSB0aGUgZnJlZSBtYnVmIGZ1bmN0aW9uIGluc2lkZSB0eF9idXJzdCB3aWxsIG5v dCBmcmVlIGFueSBtYnVmOg0KIA0KICANCiANCiANCiAgIA0KICAgICAgICAgIGlmICh0eHEt Pm5iX3R4X2ZyZWUgPCB0eHEtPnR4X2ZyZWVfdGhyZXNoKQ0KIA0KICANCiAgICAgICAgICAg ICAgICAgICAgICBpeGdiZV90eF9mcmVlX2J1ZnModHhxKTsNCiANCiANCiAgDQogDQogDQog IA0KYWZ0ZXIgdGhpcyBvcGVyYXRpb24sIHRoZSB0eHEtPm5iX3R4X2ZyZWUgaXMgbm90IGlu Y3JlYXNlZCBhbmQga2VlcHMgdG8gYmUgIjAiIGV2ZW50dWFsbHkuDQogDQogIA0KIA0KIA0K ICANCkkgZGlkIHNvbWUgdGVzdHMgdG9kYXksIEkgY29tbWVudGVkIG91dCB0aGlzIHNlY3Rp b24gb2YgaXhnYmVfcnh0eF92ZWNfY29tbW9uLmggLT4gaXhnYmVfdHhfZnJlZV9idWZzDQog DQogIA0KIA0KIA0KICAgDQogICAgICAgICAgc3RhdHVzID0gdHhxLT50eF9yaW5nW3R4cS0+ dHhfbmV4dF9kZF0ud2Iuc3RhdHVzOw0KIA0KICANCiAgICAgICAgICBpZiAoIShzdGF0dXMg JiBJWEdCRV9BRFZUWERfU1RBVF9ERCkpDQogDQogIA0KICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAwOw0KIA0KIA0KICAgDQogDQogDQogIA0KQWZ0ZXIgaWdub3JpbmcgREQgYml0 IGNoZWNrLCBvdXIgYXBwIHJ1bnMgZm9yIGFib3V0IDYgaG91cnMgd2l0aG91dCBpc3N1ZS4g SSBzdXNwZWN0IHRoZXJlIGlzIHNvbWV0aGluZyB3cm9uZyBpbiBteSBwcm9ncmFtIHNldCB0 aGUgREQgYml0IHNvbWV3aGVyZS4gT25lIG9mIHRoZSBwb3NzaWJsZSBjYXVzZSBjdXJyZW50 bHkgSSBzdXNwZWN0IGlzIGFzIGZhciBhcyBJIGtub3csIHJ0ZV9wa3RtYnVmX2ZyZWUobWJ1 Zi5hcnJheVtrXSkgIHdpbGwgZnJlZSB0aGUgbWJ1ZiBvZiB0aGUgcGFja2V0IGFuZCBhbnkg ZnJhZ21lbnRlZCBwYWNrZXRzIGZvbGxvd2luZyBieSBpdC4gQnV0IGluIG91ciBhcHBsaWNh dGlvbiBzdWNoIGFzIGJlbG93IGNvZGUgc25pcHBldDoNCiANCiAgDQogDQogDQogICANCiAg ICAgICAgYXV0byBuYl90eCA9IHJ0ZV9ldGhfdHhfYnVyc3QocG9ydCwgcXVldWUsIG1idWYu YXJyYXksICh1aW50MTZfdCkgbmJfcngpOw0KIA0KICANCiAgICAgICAgaWYgKHVubGlrZWx5 KG5iX3R4IDwgbmJfcngpKSB7DQogDQogIA0KICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBr ID0gbmJfdHg7IGsgPCBuYl9yeDsgaysrKSB7DQogDQogIA0KICAgICAgICAgICAgICAgIHJ0 ZV9wa3RtYnVmX2ZyZWUobWJ1Zi5hcnJheVtrXSk7DQogDQogIA0KICAgICAgICAgICAgfQ0K IA0KICANCiAgICAgICAgfQ0KIA0KW1poYW5nLCBIZWxpbl0gaXQgc2VlbXMgYWJvdmUgY29k ZSBwaWVjZSBoYXMgbWVtb3J5IGxlYWssIGlmIHRoZSBidWZmZXIgaXMgY2hhaW5lZC4gQWZ0 ZXIgYWxsIG1lbW9yeSBsZWFrZWQsIHRoZW4gdGhlIGlzc3VlIGNvbWVzLiBQbGVhc2UgdHJ5 IHRvIGNoZWNrICBpZiB0aGlzIGlzIHRoZSByb290IGNhdXNlIQ0KIA0KIA0KICANCiANCiAN CiAgDQpJbiB0aGlzIGNhc2UgaWYgdGhlcmUgYXJlIGZyYWdtZW50ZWQgcGFja2V0cyBhbmQg ZmFpbGVkIHRyYW5zbWlzc2lvbiwgbWF5IGNhdXNlIGEgbWJ1ZiBiZSBmcmVlZCBtdWx0aXBs ZSB0aW1lcy4NCiANCiAgDQogDQogDQogIA0KQWJvdmUgaXMganVzdCBteSBzdXNwZWN0LCBu ZWVkIHRvIGRvIHNvbWUgdGVzdHMgbGF0ZXIgdG9kYXkgb3IgdG9tb3Jyb3cuDQogDQogIA0K IA0KIA0KICANClRoYW5rcw0KIA0KICANCi0tLS0tLS0tLS0tLS0tLS0tLSBPcmlnaW5hbCAt LS0tLS0tLS0tLS0tLS0tLS0NCiANCiAgIA0KRnJvbTogICJaaGFuZywgSGVsaW4iOzxoZWxp bi56aGFuZ0BpbnRlbC5jb20+Ow0KIA0KICANCkRhdGU6ICBNb24sIE9jdCAyNCwgMjAxNiAx MTozMyBBTQ0KIA0KICANClRvOiAgInlpbmd6aGkiPGthaXRveUBxcS5jb20+OyANCiANCiAg DQpDYzogICJkZXZAZHBkay5vcmciPGRldkBkcGRrLm9yZz47IA0KIA0KICANClN1YmplY3Q6 ICBSRTogW2RwZGstZGV2XSBydGVfa25pX3R4X2J1cnN0KCkgaGFuZ3MgYmVjYXVzZSBvZiBu byBmcmVlZGVzY3JpcHRvcnMNCiANCiANCiAgDQogDQogDQogDQpIaSBZaW5nemhpDQogDQog VGhhbmsgeW91IGZvciB0aGUgcmVwb3J0aW5nISBUaGUgZGVzY3JpcHRpb24gaXMgbm90IHNv IGNsZWFyIGF0IGxlYXN0IGZvciBtZS4NCiBQbGVhc2UgaGVscCB0byBuYXJyb3duIGRvd24g dGhlIGlzc3VlIGJ5IHlvdXNlbGYuDQogSG93IG1hbnkgcGFja2V0cyB3b3VsZCBpdCBoYXZl IGZvciBjYWxsaW5nIFRYIGZ1bmN0aW9uPw0KIFdoeSBpdCB3b3VsZCByZXR1cm4gMCBhZnRl ciBjYWxsaW5nIFRYIGZ1bmN0aW9uPyBObyBtZW1vcnk/IE9yIHJldHVybiBmcm9tIGVsc2U/ IEhhdmUgeW91IGZvdW5kIGFueXRoaW5nPw0KIA0KIFJlZ2FyZHMsDQogSGVsaW4NCiANCiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQogPiBGcm9tOiBkZXYgW21haWx0bzpkZXYt Ym91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIHlpbmd6aGkNCiA+IFNlbnQ6IFN1bmRh eSwgT2N0b2JlciAyMywgMjAxNiA5OjMwIFBNDQogPiBUbzogdXNlcnM7IGRldkBkcGRrLm9y Zw0KID4gU3ViamVjdDogW2RwZGstZGV2XSBydGVfa25pX3R4X2J1cnN0KCkgaGFuZ3MgYmVj YXVzZSBvZiBubyBmcmVlIGRlc2NyaXB0b3JzDQogPiANCiA+IC0NCiA+IEhpIEV4cGVydHMs DQogPiANCiA+IEJhY2tncm91bmQ6DQogPiANCiA+IFdlIGFyZSB1c2luZyBEUERLIHRvIGRl dmVsb3AgYSBMb2FkQmFsYW5jZXIgZm9sbG93aW5nIGJlbG93IGxvZ2ljOiBXaGVuDQogPiBh IG5ldyBwYWNrZXQgaXMgcmVjZWl2ZWQ6DQogPiAgMS4gaWYgdGhlIGRzdF9hZGRyIGlzIG1h bmFnZW1lbnQgSVAsIGZvcndhcmQgdG8gS05JLiAyLiBpZiB0aGUgZHN0X2FkZHIgaXMgaW4N CiA+IFZJUCBsaXN0LCBzZWxlY3QgYmFja2VuZCBhbmQgZm9yd2FyZChtb2RpZnkgZHN0IG1h YyBhZGRyZXNzKS4gMy4gb3RoZXJ3aXNlDQogPiBkcm9wIHRoZSBwYWNrZXQuDQogPiANCiA+ IEF0IHRoaXMgc3RhZ2UsIHdlIHVzZSBvbmUgc2luZ2xlIHRocmVhZCBmb3IgS05JIGZvcndh cmRpbmcgYW5kIGFub3RoZXIgZm9yDQogPiBWSVAgZm9yd2FyZGluZyhmb3J3YXJkIHRvIGV0 aCkuDQogPiANCiA+IERQREsgdmVyc2lvbjogMTYuMDcNCiA+ICBOSUM6IDgyNTk5RVMgMTAt R2lnYWJpdCBTRkkvU0ZQKyBOZXR3b3JrIENvbm5lY3Rpb24NCiA+ICBMaW51eDogMTQuMDQu MS1VYnVudHUgeDY0DQogPiANCiA+IFByb21ibGVtIGRlc2NyaXB0aW9uOg0KID4gDQogPiBU aGUgcHJvZ3JhbSBydW5zIGNvcnJlY3RseSBmb3Igc29tZXRpbWUoYXJvdW5kIDIgaG91cnMg Zm9yIDQwME1iIHRyYWZmaWMpLg0KID4gQnV0IGl0IGl0IHdpbGwgaGFuZy4gV2hlbiBwcm9i bGVtIGhhcHBlbnMsIHJ0ZV9ldGhfdHhfYnVyc3QoKSB3aWxsIG5vdCBhYmxlIHRvDQogPiBz ZW5kIG91dCBhbnkgcGFja2V0cyhhbHdheXMgcmV0dXJucyAwKS4gV2UgdHJhY2tlZCBpbnRv IHRoYXQgZnVuY3Rpb24gYW5kDQogPiBub3RpY2VkIGl0IGlzIGFjdHVhbGx5IGNhbGxpbmcg aXhnYmUgZHJpdmVyJ3MgaXhnYmVfeG1pdF9wa3RzX3ZlYygpIGZ1bmN0aW9uIGluDQogPiBv dXIgZW52aXJvbm1lbnQsIGJlY2F1c2Ugd2UgdXNlIGRlZmF1bHQgdHggcXVldWUgY29uZmln dXJhdGlvbiwgYWZ0ZXINCiA+IHByaW50aW5nIHNvbWUgaW5mbywgd2UgZm91bmQgaWYgdGhl IGZyZWUgZnVuY3Rpb24gd29ya3MgZmluZToNCiA+ICB0eF9yc190aHJlc2g6IDMyLCB0eF9m cmVlX3RocmVzaDogMzIsIG5iX3R4X2ZyZWU6IDMxDQogPiANCiA+IGl0IHdpbGwgdHJpZ2dl ciBmcmVlIGFuZCBtYWtlIDMyIG1vcmUgZnJlZSBkZXNjcmlwdG9yczoNCiA+ICB0eF9yc190 aHJlc2g6IDMyLCB0eF9mcmVlX3RocmVzaDogMzIsIG5iX3R4X2ZyZWU6IDYyDQogPiANCiA+ IGJ1dCB3aGVuIHNvbWV0aGluZyBnb2luZyB3cm9uZywgaXQgd2lsbCBubyBsb25nZXIgZnJl ZSBhbnl0aGluZzoNCiA+ICB0eF9yc190aHJlc2g6IDMyLCB0eF9mcmVlX3RocmVzaDogMzIs IG5iX3R4X2ZyZWU6IDAgdHhfcnNfdGhyZXNoOiAzMiwNCiA+IHR4X2ZyZWVfdGhyZXNoOiAz MiwgbmJfdHhfZnJlZTogMA0KID4gDQogPiBJdCBtYXkgcmVsYXRlZCB3aXRoIHRoZSBERCBm bGFnIG9mIHRoZSBkZXNjcmlwdG9yIGJ1dCB3ZSBhcmUgbm90IHF1aXRlIHN1cmUuDQogPiAN CiA+IE91ciBwcm9ncmFtIGxvZ2ljOg0KID4gDQogPiBjcmVhdGUgdHdvIG1idWYgcG9vbHMg b24gc29ja2V0IDAsIG9uZSBmb3IgcnhfcXVldWUgYW5kIG9uZSBmb3Iga25pLiAoYWxsDQog PiBsY29yZSB0aHJlYWRzIHJ1bnMgb24gc29ja2V0MCkNCiA+IA0KID4gaW5pdCBrbmkgaW50 ZXJmYWNlIHdpdGggcnRlX2tuaV9hbGxvYygpDQogPiANCiA+IA0KID4gaW5pdCBvbmUgTklD IGludGVyZmFjZSB3aXRoDQogPiAgcnRlX2V0aF9kZXZfY29uZmlndXJlKCk7IHJ0ZV9ldGhf cnhfcXVldWVfc2V0dXAoKTsNCiA+IHJ0ZV9ldGhfdHhfcXVldWVfc2V0dXAoKTsgcnRlX2V0 aF9kZXZfc3RhcnQoKTsNCiA+IA0KID4gDQogPiANCiA+IGluIHRoZSBldGggbWFpbiBsb29w OiAoY29kZSBpcyBzaW1wbGlmaWVkKQ0KID4gIHdoaWxlKDEpIHsgICAgIG4gPSBydGVfZXRo X3J4X2J1cnN0KHBhY2tldHMpOyAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgICAgICB7 ICAgICAgICAgaWYNCiA+IChTRU5EX1RPX0tOSSkgeyAgICAgICAgICAgICBtID0gcnRlX2tu aV90eF9idXJzdChwYWNrZXRzW2ldKTsgICAgICAgICAgICAgaWYgKG0gIT0gMSkpDQogPiB7 ICAgICAgICAgICAgICAgICBydGVfcGt0bWJ1Zl9mcmVlKHBhY2tldHNbaV0pOyAgICAgICAg ICAgICB9ICAgICAgICAgfSAgICAgICAgIGlmIChTRU5EX1RPX0VUSCkNCiA+IHsgICAgICAg ICAgICAgLy8gYWZ0ZXIgbW9kaWZ5IHRoZSBwYWNrZXQgICAgICAgICAgICAgbSA9IHJ0ZV9l dGhfdHhfYnVyc3QocGFja2V0c1tpXSk7DQogPiBpZiAobSAhPSAxKSkgeyAgICAgICAgICAg ICAgICAgcnRlX3BrdG1idWZfZnJlZShwYWNrZXRzW2ldKTsgICAgICAgICAgICAgfSAgICAg ICAgIH0gICAgICAgICAvLw0KID4gb3RoZXJ3aXNlIGRyb3AgdGhlIHBhY2tldCAgICAgICAg IHJ0ZV9wa3RtYnVmX2ZyZWUocGFja2V0c1tpXSk7ICAgICB9IH0NCiA+IA0KID4gDQogPiBQ bGVhc2UgYWR2aXNlIGlmIEknbSB1c2luZyBEUERLIGluIGEgd3Jvbmcgd2F5LiBTb3JyeSBp ZiBJIG1pc3NlZCBzb21ldGhpbmcNCiA+IGJhc2ljLCBJJ20gbmV3IHRvIERQREsuDQogPiAN CiA+IFRoYW5rcyBpbiBhZHZhbmNlDQogPiAgQmVzdCByZWdhcmRz