From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50085.outbound.protection.outlook.com [40.107.5.85]) by dpdk.org (Postfix) with ESMTP id 526DA1B398 for ; Wed, 30 Jan 2019 12:36:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DZDkUIzfkuxe18UcEwwjPK1bJMiFORftbXUuz57BzmE=; b=GRZh1W7PHS3iXJ9ff31Ocz4QmWYMaFk6tZo5l50vNkI1VJpEEoBVElFPDqwqDie+vlJU0fbe5y6acGw4nHo+dVicAFXT/bi7QPtK+IynPt0kF6XYUJ5DJc/o5or2Zaosr22ibAZWKrf47llfYHEIUKm4EaoIfdz/aUDUzDCPYVI= Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com (10.168.95.140) by HE1PR0801MB1945.eurprd08.prod.outlook.com (10.168.94.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.19; Wed, 30 Jan 2019 11:36:07 +0000 Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::f5e3:70fc:e834:3c42]) by HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::f5e3:70fc:e834:3c42%3]) with mapi id 15.20.1558.025; Wed, 30 Jan 2019 11:36:07 +0000 From: Ola Liljedahl To: Honnappa Nagarahalli , "bruce.richardson@intel.com" , "gage.eads@intel.com" , "dev@dpdk.org" CC: nd Thread-Topic: [RFC] lfring: lock-free ring buffer Thread-Index: AQHUtwUD27HnS9OItk2iqwDKLNhf3qXFCdhggAA5FICAAfcNcIAAeAQA Date: Wed, 30 Jan 2019 11:36:07 +0000 Message-ID: <1548848178.2915.40.camel@arm.com> References: <1548678513-14348-1-git-send-email-ola.liljedahl@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CC413@FMSMSX108.amr.corp.intel.com> <1548714375.11472.76.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CD01D@FMSMSX108.amr.corp.intel.com> In-Reply-To: <9184057F7FC11744A2107296B6B8EB1E541CD01D@FMSMSX108.amr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.18.5.2-0ubuntu3.2 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ola.Liljedahl@arm.com; x-originating-ip: [158.174.8.16] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1945; 6:iiX84AbxFYjNUwt/viSPl8Izv0qk+CPg1HdjwDa26OTY/vYgx3wSoU8NIgun2RE+NKSk8ufRGHLwKCoyyCuokwoXkdOwrH6UAheqwD06hELw/Bun4ZeIRfcQ05uk+J27IJhzcy7Ck9iC+lVAduKdeTIY8/VKdFn9u6NiTtLOC2VCnIGz6DBmvqvfW0wNgjoxQ0SXJGxa/jdoRE7NOpLJXETsLzGQJ7u9a6JcMG1Oa7SOu5xH+AY0Ip0lD2X+Ercj8G618wJlkr/NnLRaF5zkfFvQ+epW2coar4ndHAduWVj7duiiltp3N/hmsYkduJIB2zpFxoxUpW5yryGzO6Vob0NssmWJoXlr3Tyu2rd1zOY2BmmWOWd0Qr9BgatEvKUJl0mGhpI01W+UERhLf3QJ27CGYbmlp3LQqjhVqS2ADXDQDHvyfIvYN3xiX15vjlo3BwjMaOx2syE6Wyb4a6BkAw==; 5:Zf8H6n8vwvs5ZLQpTpDPr7I8TuitieD9IM8fqPdBwsJNk5TFaMUiQSEKislghnKz4IbsfvCxzrI6jJ0Dyvi14F9hU6pYdEOQ8LbbSldqyPi8G3MdCuzGfk+TVJvXQPYuM5DfUnZ5bspgTI16A85hIe0u35S5BNJbr8k/d6xM3/6CZtgJIX71Z8l6Yeq0433hkknlTf6VvbwXiLUkwwAzDg==; 7:EthGQAsaP2tBKMHgE15W8Xgz4opiCtWfvoe4XrlgGXzYnpChpvzvc/7dZ38Dcb6FCgI71+Ogj4bG2sTgNtvp+VLTe3Cwyns0PcgJq5hdObsduKMiFSiiMiRksHgto+528Fu1SVYjhPeX1oOwXPlKhg== x-ms-office365-filtering-correlation-id: df9bd1b0-71f2-4f97-87a1-08d686a71ff5 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1945; x-ms-traffictypediagnostic: HE1PR0801MB1945: nodisclaimer: True x-microsoft-antispam-prvs: x-forefront-prvs: 0933E9FD8D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(346002)(396003)(376002)(136003)(51444003)(189003)(199004)(93886005)(6116002)(2201001)(3846002)(86362001)(71200400001)(476003)(71190400001)(66066001)(6512007)(256004)(14444005)(6506007)(102836004)(2616005)(6486002)(6436002)(2501003)(229853002)(99286004)(25786009)(26005)(76176011)(316002)(81166006)(81156014)(186003)(8676002)(50226002)(14454004)(53936002)(4326008)(36756003)(103116003)(486006)(68736007)(97736004)(446003)(106356001)(8936002)(11346002)(110136005)(7736002)(305945005)(478600001)(72206003)(105586002)(2906002)(6246003)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1945; H:HE1PR0801MB2076.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: XIsq5Z6uaGkh/nYyjU6K3dltBcjwi+ab81kcQC6Xc/1dahxOrliOiwGkbv44R0Hdw4ckI1+eemmqakiZalfTPtuWJV8ghv0NxibcnmQOv/tMtw9t8kJzrmjsiJ+nY15dgxa1ndu0ddaH+VJoE4Q7tzJuz0fa0A/FvVb97NxVu73U+Zx8+nU6OkwFAUjT2UOFztyMJ/w6g7AkBnbiz05piVy/kfz7+WPHeBb9GS2/F9VEon3qInPCqlXhgs7wcc9DNkzQFFzT8e+bnRyfwSh/XJWL/nIllAxCAjEvpJV/DQUkwUSwGg3/2X9BH1RevGlLXk6DsB4IXYVE5TqB9NgqUyDX8g3sgiIV3pPloMt7WZZZAGBSc3tlagEECeMZpTA2QrckVk1yP7X/ZJ6iCUnKLOL3ELBiDhN7iP/1ivOQ6wQ= Content-Type: text/plain; charset="utf-8" Content-ID: <1C5D72708B0BA743BA04EAA5D165F1B3@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: df9bd1b0-71f2-4f97-87a1-08d686a71ff5 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2019 11:36:07.1177 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1945 Subject: Re: [dpdk-dev] [RFC] lfring: lock-free ring buffer 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: Wed, 30 Jan 2019 11:36:10 -0000 T24gV2VkLCAyMDE5LTAxLTMwIGF0IDA1OjE3ICswMDAwLCBFYWRzLCBHYWdlIHdyb3RlOg0KPFNO SVA+DQo+wqANCj4gPiA+IDIuIE9uIHRoZSBwbHVzIHNpZGUsIHRoZSBlbnF1ZXVlIGZ1bmN0aW9u IGRlc2lnbiB0aGF0IGFsbG93cyBpdCB0byB1c2UNCj4gPiA+IDEvMiB0aGUgYXRvbWljcyBvZiBt aW5lIGFwcGVhcnMgdG8gYmUgaW5kZXBlbmRlbnQgb2YgcmVzZXJ2aW5nIHJpbmcNCj4gPiA+IHNs b3RzLCBhbmQgc2hvdWxkIHRyYW5zZmVyIG92ZXIgZmFpcmx5IGNsZWFubHkuIEknbSBhIGxpdHRs ZSBjb25jZXJuZWQNCj4gPiA+IGFib3V0IHRoZSBwZXJmb3JtYW5jZSB2YXJpYWJpbGl0eSBpdCBp bnRyb2R1Y2VzIChpLmUuIGlmIHRoZSB0aHJlYWQNCj4gPiA+IGdldHMgaW50byAiY2F0Y2ggdXAi IG1vZGUpLA0KPiA+IElmIGEgdGhyZWFkIGhhcyB0byBjYXRjaCB1cCwgaXQgbWVhbnMgaXQgaXMg dXNpbmcgYSBzdGFsZSAoaGVhZC90YWlsKSBpbmRleA0KPiA+IChtb3JlDQo+ID4gdGhhbiBvbmUg cmluZyBsYXAgYmVoYWluZCkuIEJldHRlciB0byB0cnkgdG8gbG9hZCBhIGZyZXNoIHZhbHVlIChp ZiBvbmUgaXMNCj4gPiBhdmFpbGFibGUpIHRoYW4gdG8gaXRlcmF0ZSBvdmVyIHRoZSByaW5nIHVu dGlsIGl0IGhhcyBjYXVnaHQgdXAuIFNvIEkgdGhpbmsNCj4gPiB0aGlzIGlzIHRoZQ0KPiA+IGJl dHRlci9mYXN0ZXIgZGVzaWduLg0KPiA+IA0KPiA+IENhdGNoIHVwIG1vZGUgaXMgbm90IHRyaWdn ZXJlZCBieSBmaW5kaW5nIGFuIG9jY3VwaWVkIHNsb3QgZm9yIHRoZSBjdXJyZW50DQo+ID4gbGFw DQo+ID4gKHRoYXQgd2FzIGp1c3Qgd3JpdHRlbiBieSBzb21lIG90aGVyIHRocmVhZCkuIE9yIGF0 IGxlYXN0IHRoaXMgaXMgdGhlIGlkZWEuDQo+ID4gSWYgd2UNCj4gPiBmaW5kIGEgZnJlc2hseSB3 cml0dGVuIHNsb3QsIHdlIGp1c3QgbW92ZSB0byB0aGUgbmV4dCBzbG90Lg0KPiA+IA0KPiA+ID4g DQo+ID4gPiBwYXJ0aWN1bGFybHkgZm9yIGxhcmdlciByaW5ncywgc2luY2UgcmVhbC10aW1lIHNv ZnR3YXJlIHZhbHVlcw0KPiA+ID4gcHJlZGljdGFiaWxpdHkuDQo+ID4gPiBXaGF0IGlmIHRoZSBy ZWxvYWQgY3JpdGVyaWEgd2FzIGluc3RlYWQgc29tZXRoaW5nIGxpa2U6DQo+ID4gPiANCj4gPiA+ ICNkZWZpbmUgRU5RX1JFVFJZX0xJTUlUIDMyIC8vYXJiaXRyYXJ5DQo+ID4gPiANCj4gPiA+IGlm IChvbGQuZS5pZHggIT0gdGFpbCAtIHNpemUpIHsNCj4gPiA+IMKgwqDCoMKgaWYgKCsrZmFpbF9j bnQgPCBFTlFfUkVUUllfTElNSVQpIHsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB0YWlsKys7DQo+ ID4gPiDCoMKgwqDCoH0gZWxzZSB7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZmFpbF9jbnQgPSAw Ow0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHRhaWwgPSBydGVfbGZyaW5nX3JlbG9hZCguLi4pOw0K PiA+ID4gwqDCoMKgwqB9DQo+ID4gPiDCoMKgwqDCoGdvdG8gcmVzdGFydDsNCj4gPiA+IH0NCj4g PiA+IGZhaWxfY250ID0gMDsNCj4gPiBUaGVyZSBhcmUgdGhyZWUgY2FzZXMgKHNsb3QgaW5kZXgg bXVzdCBiZSBiZXR3ZWVuIHEtPnRhaWwgYW5kIHEtPmhlYWQgKyBxLQ0KPiA+ID4gDQo+ID4gPiBz aXplKToNCj4gPiBzbG90LmlkeCA9PSB0YWlsIC0gc2l6ZTogc2xvdCBpcyBmcmVlLCB0cnkgdG8g d3JpdGUgaXQgc2xvdC5pZHggPT0gdGFpbDoNCj4gPiBzbG90IGhhcyBqdXN0IGJlZW4NCj4gPiB3 cml0dGVuIChieSBvdGhlciB0aHJlYWQpLCBza2lwIHRvIG5leHQgc2xvdCAodGFpbCsrKSBub25l IG9mIHRoZSBhYm92ZToNCj4gPiB0aHJlYWQgaXMNCj4gPiBiZWhpbmQgKGF0IGxlYXN0IG9uZSBs YXApLCByZS1sb2FkIHRhaWwgZnJvbSBxLQ0KPiA+ID4gDQo+ID4gPiB0YWlsDQo+ID4gSSB0aGlu ayB1c2luZyB0aGUgcmV0cnkgY291bnQgYWN0dWFsbHkgZGVsYXlzIGNhdGNoaW5nIHVwIHRvIGEg ZnJlc2gNCj4gPiBwb3NpdGlvbi4NCj4gPiANCj4gTWlzY29tbXVuaWNhdGlvbiBoZXJlIC0tIGJ5 ICJjYXRjaCB1cCIsIEkgbWVhbnQgdGhlIGNhc2Ugd2hlcmUgdGhlIHRocmVhZCBpcw0KPiBiZWhp bmQgYnV0IGJ5IGxlc3MgdGhhbiBvbmUgbGFwICh0aGUgc2Vjb25kIGNhc2UgeW91IGRlc2NyaWJl KS4gSW4gdGhlIHdvcnN0DQo+IGNhc2UsIHRoZSB0aHJlYWQgd291bGQgaGF2ZSB0byByZWFkIE4t MSAoTiA9IHJpbmcgc2l6ZSkgZW50cmllcyBiZWZvcmUNCj4gcmVhY2hpbmcgdGhlIG5leHQgYXZh aWxhYmxlIGVudHJ5LCBhbmQgTiBjb3VsZCBlYXNpbHkgYmUgaW4gdGhlIHRob3VzYW5kcy4NCj4g VGhhdCdzIHRoZSBwZXJmb3JtYW5jZSB2YXJpYWJpbGl0eSBJIHdhcyByZWZlcnJpbmcgdG8sIGFu ZCB3aHkgSSBzdWdnZXN0ZWQNCj4gY2FwcGluZyB0aGUgZmFpbGVkIHNsb3QgcmVhZHMgYXQgMzIu IE1haW50YWluaW5nIGEgbG9jYWwgZmFpbF9jbnQgdmFyaWFibGUgaXMNCj4gYSBzbWFsbCBwcmlj ZSB0byBwYXkgKHJlbGF0aXZlIHRvIGEgQ0FTKSB0byBwcmV2ZW50IGEgcmluZyBlbnF1ZXVlIGxh dGVuY3kNCj4gc3Bpa2UuDQpPSywgSSBtaXN1bmRlcnN0b29kLiBXZSBjYW4gcmVsb2FkIHRoZSBw cml2YXRlIHRhaWwgZnJvbSB0aGUgc2hhcmVkIHJpbmcgYnVmZmVyDQp0YWlsIGVhcmxpZXIuIFlv dSBjb3VsZCBhY3R1YWxseSBkbyB0aGlzIG9uIGV2ZXJ5IGZhaWxlZCBDQVMgYnV0IEkgdGhpbmsg dGhhdA0Kd291bGQgYmUgb3ZlcmtpbGwuIFlvdXIgZGVzaWduIHdpdGggYSByZXRyeSBsaW1pdCBp cyBiZXR0ZXIsIHdlIG5lZWQgdG8gZmluZCBvdXQNCndoYXQgaXMgYSBzdWl0YWJsZSB2YWx1ZSBm b3IgdGhlIHJldHJ5IGxpbWl0Lg0KDQo+IA0KPiBCdXQgeW91J3JlIHJpZ2h0IHRoYXQgd2Ugc2hv dWxkIHN0aWxsIGNhdGNoIHRoZSAxKyBsYXAgYmVoaW5kIGNhc2UsIHNvIHRoZQ0KPiByZWxvYWQg Y3JpdGVyaWEgY291bGQgYmU6DQo+IA0KPiAjZGVmaW5lIEVOUV9SRVRSWV9MSU1JVCAzMiAvL2Fy Yml0cmFyeQ0KPiANCj4gaWYgKG9sZC5lLmlkeCAhPSB0YWlsIC0gc2l6ZSkgew0KPiDCoMKgwqDC oGlmICgrK2ZhaWxfY250IDwgRU5RX1JFVFJZX0xJTUlUICYmIG9sZC5lLmlkeCA9PSB0YWlsKSB7 DQo+IMKgwqDCoMKgwqDCoMKgwqB0YWlsKys7DQo+IMKgwqDCoMKgfSBlbHNlIHsNCj4gwqDCoMKg wqDCoMKgwqDCoGZhaWxfY250ID0gMDsNCj4gwqDCoMKgwqDCoMKgwqDCoHRhaWwgPSBydGVfbGZy aW5nX3JlbG9hZCguLi4pOw0KPiDCoMKgwqDCoH0NCj4gwqDCoMKgwqBnb3RvIHJlc3RhcnQ7DQo+ IH0NCj4gZmFpbF9jbnQgPSAwOw0KQWdyZWUuDQoNCj4gDQo+ID4gDQo+ID4gPiANCj4gPiA+IA0K PiA+ID4gMy4gVXNpbmcgYSB6ZXJvLWxlbmd0aCBhcnJheSB0byBtYXJrIHRoZSBzdGFydCBvZiB0 aGUgcmluZyBpcyBhIG5pY2UNCj4gPiA+IGFwcHJvYWNoDQo+ID4gPiAtLSBJJ2xsIGluY29ycG9y YXRlIHRoYXQgaW50byB0aGUgcGF0Y2hzZXQuDQo+ID4gPiANCj4gPiA+IEF0IGFuIGFsZ29yaXRo bSBsZXZlbCwgSSBkb24ndCBzZWUgYW55IG90aGVyIGRpZmZlcmVuY2VzLg0KPiA+ID4gSW1wbGVt ZW50YXRpb24td2lzZSwgd2UnbGwgbmVlZCB0byBuYWlsIHRoZSBtZW1vcnkgb3JkZXJpbmcgZmxh Z3MgdG8NCj4gPiA+IGJlc3Qgc3VwcG9ydCB3ZWFrIGNvbnNpc3RlbmN5IG1hY2hpbmVzLCBhcyB5 b3UgcG9pbnRlZCBvdXQgZWxzZXdoZXJlLg0KPiA+IFRoZXJlIGlzIG5vIHByZS1hY3F1aXNpdGlv biBvZiBzbG90cyBpbiBlbnF1ZXVlIGFuZCBkZXF1ZXVlLiBUaGF0IHNlcGFyYXRlDQo+ID4gc3Rl cA0KPiA+IG1ha2VzIGxvY2stZnJlZWRvbSBpbXBvc3NpYmxlIChJIHRoaW5rKS4NCj4gPiANCj4g Q2FuIHlvdSBlbGFib3JhdGU/DQpJIHRoaW5rIGxvY2stZnJlZWRvbSBpcyBpbXBvc3NpYmxlIHdp dGggdGhlIGluaXRpYWwgYWNxdWlzaXRpb24gb2YgZWxlbWVudHMuDQpUaGlzIGFjcXVpc2l0aW9u IGNyZWF0ZXMgYSBzaWRlIGVmZmVjdCB0aGF0IGNhbm5vdCBiZSB1bmRvbmUgb3IgaGVscGVkIGJ5 IG90aGVyDQp0aHJlYWRzLg0KDQpZb3UgY2FuIHN0aWxsIGltcGxlbWVudCBhICJub24tYmxvY2tp bmciIHJpbmcgYnVmZmVyIChsaWtlIHlvdXIgb3JpZ2luYWwgZGVzaWduKSB3aGljaCBoaWRlcyBh bnkgZGVsYXkgaW4gdGhyZWFkcyB0aGF0IGFjY2VzcyB0aGUgcmluZyBidWZmZXIgYnV0IGlzbid0 IHByb3Blcmx5IGxvY2stZnJlZSAod2hpY2ggY291bGQgYmUgY29uc2lkZXJlZCB1bm5lY2Vzc2Fy eSBpbiBhIERQREsgZW52aXJvbm1lbnQsIHRocmVhZHMgbWF5IGdldCBkZWxheWVkIGJ1dCBzaG91 bGRuJ3QgZGllIG9yIGJsb2NrIGZvcmV2ZXIpLg0KDQo+ICBJIGRvbid0IGN1cnJlbnRseSBzZWUg YW55IG90aGVyIHdheSB0byBzdXBwb3J0IHJ0ZV9yaW5nIGJ1bGsgc2VtYW50aWNzLCB3aGljaA0K PiBpcyBuZWNlc3NhcnkgZm9yIGNyZWF0aW5nIGEgbm9uLWJsb2NraW5nIG1lbXBvb2wgaGFuZGxl ciwgc28gd2Ugc2hvdWxkIGNsZWFyDQo+IHVwIGFueSBkb3VidC4NCk9LLCBJIHdhc24ndCBhd2Fy ZSBvZiB0aGlzIHN0cmljdCBkZXBlbmRlbmN5IG9uIGJ1bGsgZW5xdWV1ZSBhbmQgZGVxdWV1ZS4g QnVsaw0KZGVxdWV1ZSAobWVtcG9vbCBhbGxvY2F0ZXMgYnVmZmVycyBmcm9tIHRoZSByaW5nKSBz aG91bGQgYmUgZWFzeSB0byBzdXBwb3J0DQp0aG91Z2guIEJ1bGsgZW5xdWV1ZSAobWVtcG9vbCBm cmVlcyBidWZmZXJzIHRvIHRoZSByaW5nKSB3aWxsIHdvcmsgYXMgbG9uZyBhcw0KdGhlIHJpbmcg aXMgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYWxsIGZyZWUgYnVmZmVycyBzbyBpdCBjYW4gbmV2ZXIg YmVjb21lIGZ1bGwNCihuZWVkIHRvIHJlbG9hZCBoZWFkL3RhaWwgcG9pbnRlcnMgYXQgdGhlIGFw cHJvcHJpYXRlIHBsYWNlcyB0byBhdm9pZCBzcHVyaW91cw0KZnVsbC9lbXB0eSBzdGF0dXMpLiBJ IGFzc3VtZSB0aGlzIGlzIHRoZSBjYXNlLCBpbml0aWFsbHkgYWxsIGZyZWUgYnVmZmVycyB3aWxs DQpiZSBzdG9yZWQgaW4gdGhlIHJpbmc/DQoNCj4gDQo+IEluIHRoZSBOQiByaW5nIHBhdGNoc2V0 IGVhY2ggdGhyZWFkIHJlc2VydmVzIGEgbnVtYmVyIG9mIHNsb3RzIGJlZm9yZQ0KPiBwZXJmb3Jt aW5nIHRoZSBlbnEvZGVxLCBidXQgZG9lc24ndCByZXNlcnZlICpzcGVjaWZpYyogc2xvdHMgKHVu bGlrZQ0KPiBydGVfcmluZykuIFRoaXMgcmVzZXJ2YXRpb24gaXMgYXRvbWljLCBzbyB0aGF0IHdl IG5ldmVyIG92ZXItc3Vic2NyaWJlIHZhbGlkDQo+IHJpbmcgZW50cmllcyAoZm9yIGRlcXVldWUp IG9yIHVudXNlZCByaW5nIGVudHJpZXMgKGZvciBlbnF1ZXVlKS4gVGhpcw0KPiBndWFyYW50ZWVz IHRoYXQgdGhlIGVucS9kZXEgb3BlcmF0aW9uIHdpbGwgZXZlbnR1YWxseSBjb21wbGV0ZSwgcmVn YXJkbGVzcyBvZg0KPiB0aGUgYmVoYXZpb3Igb2Ygb3RoZXIgdGhyZWFkcy4gVGhpcyBpcyB3aHkg dGhlIGVucXVldWUgbG9vcCBkb2Vzbid0IGNoZWNrIGlmDQo+IHNwYWNlIGlzIGF2YWlsYWJsZSBh bmQgdGhlIGRlcXVldWUgbG9vcCBkb2Vzbid0IGNoZWNrIGlmIGFueSBtb3JlIHZhbGlkDQo+IGVu dHJpZXMgcmVtYWluLg0KSSBpbml0aWFsbHkgdGhvdWdodCB0aGVzZSBhY3F1aXNpdGlvbnMgd2Vy ZSBqdXN0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggcnRlX3JpbmcNCih1cGRhdGUgdGhlIHNhbWUg bWV0YWRhdGEgc28gdGhhdCB0aGUgdXNlciBjYW4gbWl4IE1QL01DIGFuZCBTUC9TQyBjYWxscykg YnV0DQpyZWFsaXNlIHRoZXkgYXJlIHRoZXJlIGZvciB0aGUgYnVsayBlbnF1ZXVlL2RlcXVldWUu IEJ1dCBkb2luZyB0aGlzIGFjcXVpc2l0aW9uDQptZWFucyBlYWNoIGVucXVldWUgb3IgZGVxdWV1 ZSB3aWxsIHVwZGF0ZSB0d28gbWV0YWRhdGEgdmFyaWFibGVzIHNvIGNyZWF0ZXMgbW9yZQ0KY29u dGVudGlvbiBhbmQgbGVzcyBzY2FsYWJpbGl0eS4gSSB0aGluayBpdCB3b3VsZCBiZSBnb29kIGlm IHdlIGNvdWxkIHByb3ZpZGUNCnRoZSBidWxrIGJlaGF2aW91ciAqd2l0aG91dCogdGhpcyBpbml0 aWFsIGFjcXVpc2l0aW9uIGFuZCBvbmx5IHVwZGF0ZSBvbmUNCm1ldGFkYXRhIGxvY2F0aW9uIHBl ciBlbnF1ZXVlL2RlcXVldWUgb3BlcmF0aW9uLg0KDQo+IA0KPiBUaGlzIHNvcnQgb2YgcmVzZXJ2 YXRpb24gc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aCBsZnJpbmcsIGJ1dCByZXF1aXJlcw0KPiBj aGFuZ2VzIChlLmcuIHR3byBzZXRzIG9mIGhlYWQvdGFpbCBwb2ludGVycykuDQo+IA0KPFNOSVA+ DQo+IA0KLS3CoA0KT2xhIExpbGplZGFobCwgTmV0d29ya2luZyBTeXN0ZW0gQXJjaGl0ZWN0LCBB cm0NClBob25lICs0NjcwNjg2NjM3MywgU2t5cGUgb2xhLmxpbGplZGFobA0KDQo=