From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v2 05/10] xen: credit2: implement yield() Date: Fri, 30 Sep 2016 13:52:48 +0100 Message-ID: <19039c3f-8e75-5e07-bd92-2e98c9b8dc9f@citrix.com> References: <147520253247.22544.10673844222866363947.stgit@Solace.fritz.box> <147520403328.22544.3265744862320473651.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bpxJ8-0003LJ-F3 for xen-devel@lists.xenproject.org; Fri, 30 Sep 2016 12:52:54 +0000 In-Reply-To: <147520403328.22544.3265744862320473651.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli , xen-devel@lists.xenproject.org Cc: George Dunlap , Andrew Cooper , Anshul Makkar , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gMzAvMDkvMTYgMDM6NTMsIERhcmlvIEZhZ2dpb2xpIHdyb3RlOgo+IFdoZW4gYSB2Y3B1IGV4 cGxpY2l0bHkgeWllbGRzIGl0IGlzIHVzdWFsbHkgZ2l2aW5nCj4gdXMgYW4gYWR2aWNlIG9mICJs ZXQgc29tZW9uZSBlbHNlIHJ1biBhbmQgY29tZSBiYWNrCj4gdG8gbWUgaW4gYSBiaXQuIgo+IAo+ IENyZWRpdDIgaXNuJ3QsIHNvIGZhciwgZG9pbmcgYW55dGhpbmcgd2hlbiBhIHZjcHUKPiB5aWVs ZHMsIHdoaWNoIG1lYW5zIGFuIHlpZWxkIGlzIGJhc2ljYWxseSBhIE5PUCAod2VsbCwKPiBhY3R1 YWxseSwgaXQncyBwdXJlIG92ZXJoZWFkLCBhcyBpdCBjYXVzZXMgdGhlIHNjaGVkdWxlcgo+IGtp Y2sgaW4sIGJ1dCB0aGUgcmVzdWx0IGlzIC0tYXQgbGVhc3QgOTklIG9mIHRoZSB0aW1lLS0KPiB0 aGF0IHRoZSB2ZXJ5IHNhbWUgdmNwdSB0aGF0IHlpZWxkZWQgY29udGludWVzIHRvIHJ1bikuCj4g Cj4gSW1wbGVtZW50IGEgInByZWVtcHQgYmlhcyIsIHRvIGJlIGFwcGxpZWQgdG8geWllbGRpbmcK PiB2Y3B1cy4gQmFzaWNhbGx5IHdoZW4gZXZhbHVhdGluZyB3aGF0IHZjcHUgdG8gcnVuIG5leHQs Cj4gaWYgYSB2Y3B1IHRoYXQgaGFzIGp1c3QgeWllbGRlZCBpcyBlbmNvdW50ZXJlZCwgd2UgZ2l2 ZQo+IGl0IGEgY3JlZGl0IHBlbmFsdHksIGFuZCBjaGVjayB3aGV0aGVyIHRoZXJlIGlzIGFueW9u ZQo+IGVsc2UgdGhhdCB3b3VsZCBiZXR0ZXIgdGFrZSBvdmVyIHRoZSBjcHUgKG9mIGNvdXJzZSwK PiBpZiB0aGVyZSBpc24ndCB0aGUgeWllbGRpbmcgdmNwdSB3aWxsIGNvbnRpbnVlKS4KPiAKPiBU aGUgdmFsdWUgb2YgdGhpcyBiaWFzIGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBib290Cj4gdGlt ZSBwYXJhbWV0ZXIsIGFuZCB0aGUgZGVmYXVsdCBpcyBzZXQgdG8gMSBtcy4KPiAKPiBBbHNvLCBh ZGQgYW4geWllbGQgcGVyZm9ybWFuY2UgY291bnRlciwgYW5kIGZpeCB0aGUKPiBzdHlsZSBvZiBh IGNvdXBsZSBvZiBjb21tZW50cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9saSA8 ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4KCkhtbSwgSSdtIHNvcnJ5IGZvciBub3QgYXNraW5n IHRoaXMgZWFybGllciAtLSBidXQgd2hhdCdzIHRoZSByYXRpb25hbGUKZm9yIGhhdmluZyBhICJ5 aWVsZCBiaWFzIiwgcmF0aGVyIHRoYW4ganVzdCBjaG9vc2luZyB0aGUgbmV4dCBydW5uYWJsZQpn dXkgaW4gdGhlIHF1ZXVlIG9uIHlpZWxkLCByZWdhcmRsZXNzIG9mIHdoYXQgaGlzIGNyZWRpdHMg YXJlPwoKSWYgc25leHQgaGFzIDltcyBvZiBjcmVkaXQgYW5kIHRoZSB0b3AgcnVubmFibGUgZ3V5 IG9uIHRoZSBydW5xdWV1ZSBoYXMKNy44bXMgb2YgY3JlZGl0LCBkb2Vzbid0IGl0IG1ha2Ugc2Vu c2UgdG8gcnVuIGhpbSBpbnN0ZWFkIG9mIG1ha2luZwpzbmV4dCBydW4gYWdhaW4gYW5kIGJ1cm4g aGlzIGNyZWRpdD8KCkNvdWxkbid0IHRoaXMgYmUgZG9uZSBieSBjaGFuZ2luZyB5aWVsZF9iaWFz IHRvIGEgYm9vbGVhbiB5aWVsZCwgYW5kLi4uCgo+IC0tLQo+IENjOiBHZW9yZ2UgRHVubGFwIDxn ZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5jb20+Cj4gQ2M6IEFuc2h1bCBNYWtrYXIgPGFuc2h1bC5t YWtrYXJAY2l0cml4LmNvbT4KPiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+ IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IC0tLQo+IENo YW5nZXMgZnJvbSB2MToKPiAgKiBhZGQgX3VzIHRvIHRoZSBwYXJhbWV0ZXIgbmFtZSwgYXMgc3Vn Z2VzdGVkIGR1cmluZyByZXZpZXc7Cj4gICogZ2V0IHJpZCBvZiB0aGUgbWluaW11bSB2YWx1ZSBm b3IgdGhlIHlpZWxkIGJpYXM7Cj4gICogYXBwbHkgdGhlIGlkbGUgYmlhcyB2aWEgc3VidHJhY3Rp b24gb2YgY3JlZGl0cyB0byB0aGUgeWllbGRpbmcgdmNwdSwgcmF0aGVyCj4gICAgdGhhbiB2aWEg YWRkaXRpb24gdG8gYWxsIHRoZSBvdGhlcnM7Cj4gICogbWVyZ2UgdGhlIENyZWRpdDIgYml0cyBv ZiB3aGF0IHdhcyBwYXRjaCA3IGhlcmUsIGFzIHN1Z2dlc3RlZCBkdXJpbmcgcmV2aWV3Lgo+IC0t LQo+ICBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biB8ICAgMTAgKysrKysKPiAg eGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgICAgICAgICAgfCAgIDc2ICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tCj4gIHhlbi9jb21tb24vc2NoZWR1bGUuYyAgICAgICAgICAg ICAgIHwgICAgMiArCj4gIHhlbi9pbmNsdWRlL3hlbi9wZXJmY19kZWZuLmggICAgICAgIHwgICAg MSAKPiAgNCBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9k b2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgo+IGluZGV4IDhmZjU3ZmEuLjRmZDM0 NjAgMTAwNjQ0Cj4gLS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KPiAr KysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgo+IEBAIC0xMzk1LDYgKzEz OTUsMTYgQEAgQ2hvb3NlIHRoZSBkZWZhdWx0IHNjaGVkdWxlci4KPiAgIyMjIHNjaGVkXF9jcmVk aXQyXF9taWdyYXRlXF9yZXNpc3QKPiAgPiBgPSA8aW50ZWdlcj5gCj4gIAo+ICsjIyMgc2NoZWRc X2NyZWRpdDJcX3lpZWxkXF9iaWFzXF91cwo+ICs+IGA9IDxpbnRlZ2VyPmAKPiArCj4gKz4gRGVm YXVsdDogYDEwMDBgCj4gKwo+ICtTZXQgaG93IG11Y2ggYSB5aWVsZGluZyB2Y3B1IHdpbGwgYmUg cGVuYWxpemVkLCBpbiBvcmRlciB0byBhY3R1YWxseQo+ICtnaXZlIGEgY2hhbmNlIHRvIHJ1biB0 byBzb21lIG90aGVyIHZjcHUuIFRoaXMgaXMgYmFzaWNhbGx5IGEgYmlhcywgaW4KPiArZmF2b3Vy IG9mIHRoZSBub24teWllbGRpbmcgdmNwdXMsIGV4cHJlc3NlZCBpbiBtaWNyb3NlY29uZHMgKGRl ZmF1bHQKPiAraXMgMW1zKS4KPiArCj4gICMjIyBzY2hlZFxfY3JlZGl0XF90c2xpY2VcX21zCj4g ID4gYD0gPGludGVnZXI+YAo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVk aXQyLmMgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwo+IGluZGV4IDcyZTMxYjUuLmZkZTYx ZWYgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKPiArKysgYi94ZW4v Y29tbW9uL3NjaGVkX2NyZWRpdDIuYwo+IEBAIC0xNDQsNiArMTQ0LDggQEAKPiAgI2RlZmluZSBD U0NIRUQyX01JR1JBVEVfUkVTSVNUICAgICAgICgob3B0X21pZ3JhdGVfcmVzaXN0KSpNSUNST1NF Q1MoMSkpCj4gIC8qIEhvdyBtdWNoIHRvICJjb21wZW5zYXRlIiBhIHZjcHUgZm9yIEwyIG1pZ3Jh dGlvbiAqLwo+ICAjZGVmaW5lIENTQ0hFRDJfTUlHUkFURV9DT01QRU5TQVRJT04gTUlDUk9TRUNT KDUwKQo+ICsvKiBIb3cgYmlnIG9mIGEgYmlhcyB3ZSBzaG91bGQgaGF2ZSBhZ2FpbnN0IGEgeWll bGRpbmcgdmNwdSAqLwo+ICsjZGVmaW5lIENTQ0hFRDJfWUlFTERfQklBUyAgICAgICAgICAgKChv cHRfeWllbGRfYmlhcykqTUlDUk9TRUNTKDEpKQo+ICAvKiBSZXNldDogVmFsdWUgYmVsb3cgd2hp Y2ggY3JlZGl0IHdpbGwgYmUgcmVzZXQuICovCj4gICNkZWZpbmUgQ1NDSEVEMl9DUkVESVRfUkVT RVQgICAgICAgICAwCj4gIC8qIE1heCB0aW1lcjogTWF4aW11bSB0aW1lIGEgZ3Vlc3QgY2FuIGJl IHJ1biBmb3IuICovCj4gQEAgLTE4MSwxMSArMTgzLDIwIEBACj4gICAqLwo+ICAjZGVmaW5lIF9f Q1NGTEFHX3J1bnFfbWlncmF0ZV9yZXF1ZXN0IDMKPiAgI2RlZmluZSBDU0ZMQUdfcnVucV9taWdy YXRlX3JlcXVlc3QgKDE8PF9fQ1NGTEFHX3J1bnFfbWlncmF0ZV9yZXF1ZXN0KQo+IC0KPiArLyoK PiArICogQ1NGTEFHX3ZjcHVfeWllbGQ6IHRoaXMgdmNwdSB3YXMgcnVubmluZywgYW5kIGhhcyBj YWxsZWQgdmNwdV95aWVsZCgpLiBUaGUKPiArICogc2NoZWR1bGVyIGlzIGludm9rZWQgdG8gc2Vl IGlmIHdlIGNhbiBnaXZlIHRoZSBjcHUgdG8gc29tZW9uZSBlbHNlLCBhbmQKPiArICogZ2V0IGJh Y2sgdG8gdGhlIHlpZWxkaW5nIHZjcHUgaW4gYSB3aGlsZS4KPiArICovCj4gKyNkZWZpbmUgX19D U0ZMQUdfdmNwdV95aWVsZCA0Cj4gKyNkZWZpbmUgQ1NGTEFHX3ZjcHVfeWllbGQgKDE8PF9fQ1NG TEFHX3ZjcHVfeWllbGQpCj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkg b3B0X21pZ3JhdGVfcmVzaXN0ID0gNTAwOwo+ICBpbnRlZ2VyX3BhcmFtKCJzY2hlZF9jcmVkaXQy X21pZ3JhdGVfcmVzaXN0Iiwgb3B0X21pZ3JhdGVfcmVzaXN0KTsKPiAgCj4gK3N0YXRpYyB1bnNp Z25lZCBpbnQgX19yZWFkX21vc3RseSBvcHRfeWllbGRfYmlhcyA9IDEwMDA7Cj4gK2ludGVnZXJf cGFyYW0oInNjaGVkX2NyZWRpdDJfeWllbGRfYmlhc191cyIsIG9wdF95aWVsZF9iaWFzKTsKPiAr Cj4gIC8qCj4gICAqIFVzZWZ1bCBtYWNyb3MKPiAgICovCj4gQEAgLTE0MzEsNiArMTQ0MiwxNCBA QCBvdXQ6Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gK2NzY2hlZDJfdmNwdV95aWVsZChjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2KQo+ICt7Cj4gKyAgICBzdHJ1 Y3QgY3NjaGVkMl92Y3B1ICogY29uc3Qgc3ZjID0gQ1NDSEVEMl9WQ1BVKHYpOwo+ICsKPiArICAg IF9fc2V0X2JpdChfX0NTRkxBR192Y3B1X3lpZWxkLCAmc3ZjLT5mbGFncyk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkCj4gIGNzY2hlZDJfY29udGV4dF9zYXZlZChjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKPiAgewo+ICAgICAgc3RydWN0IGNzY2hlZDJfdmNw dSAqIGNvbnN0IHN2YyA9IENTQ0hFRDJfVkNQVSh2Yyk7Cj4gQEAgLTIyNTAsMjYgKzIyNjksMzkg QEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkLAo+ICAg ICAgc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKPiAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnNu ZXh0ID0gTlVMTDsKPiAgICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJf UFJJVihwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSk7Cj4gKyAgICAvKgo+ICsgICAgICogSWYgc2N1 cnIgaXMgeWllbGRpbmcsIHRlbXBvcmFyaWx5IHN1YnRyYWN0IENTQ0hFRDJfWUlFTERfQklBUwo+ ICsgICAgICogY3JlZGl0cyB0byBpdCAod2hlcmUgInRlbXBvcmFyaWx5IiBtZWFucyAiZm9yIHRo ZSBzYWtlIG9mIGp1c3QKPiArICAgICAqIHRoaXMgc2NoZWR1bGluZyBkZWNpc2lvbikuCj4gKyAg ICAgKi8KPiArICAgIGludCB5aWVsZF9iaWFzID0gMCwgc25leHRfY3JlZGl0Owo+ICAKPiAgICAg ICpza2lwcGVkID0gMDsKPiAgCj4gLSAgICAvKiBEZWZhdWx0IHRvIGN1cnJlbnQgaWYgcnVubmFi bGUsIGlkbGUgb3RoZXJ3aXNlICovCj4gLSAgICBpZiAoIHZjcHVfcnVubmFibGUoc2N1cnItPnZj cHUpICkKPiAtICAgICAgICBzbmV4dCA9IHNjdXJyOwo+IC0gICAgZWxzZQo+IC0gICAgICAgIHNu ZXh0ID0gQ1NDSEVEMl9WQ1BVKGlkbGVfdmNwdVtjcHVdKTsKPiAtCj4gICAgICAvKgo+ICAgICAg ICogUmV0dXJuIHRoZSBjdXJyZW50IHZjcHUgaWYgaXQgaGFzIGV4ZWN1dGVkIGZvciBsZXNzIHRo YW4gcmF0ZWxpbWl0Lgo+ICAgICAgICogQWRqdXN0c3RtZW50IGZvciB0aGUgc2VsZWN0ZWQgdmNw dSdzIGNyZWRpdCBhbmQgZGVjaXNpb24KPiAgICAgICAqIGZvciBob3cgbG9uZyBpdCB3aWxsIHJ1 biB3aWxsIGJlIHRha2VuIGluIGNzY2hlZDJfcnVudGltZS4KPiArICAgICAqCj4gKyAgICAgKiBO b3RlIHRoYXQsIGlmIHNjdXJyIGlzIHlpZWxkaW5nLCB3ZSBkb24ndCBsZXQgcmF0ZSBsaW1pdGlu ZyBraWNrIGluLgo+ICsgICAgICogSW4gZmFjdCwgaXQgbWF5IGJlIHRoZSBjYXNlIHRoYXQgc2N1 cnIgaXMgYWJvdXQgdG8gc3BpbiwgYW5kIHRoZXJlJ3MKPiArICAgICAqIG5vIHBvaW50IGZvcmNp bmcgaXQgdG8gZG8gc28gdW50aWwgcmF0ZSBsaW1pdGluZyBleHBpcmVzLgo+ICAgICAgICovCj4g LSAgICBpZiAoIHBydi0+cmF0ZWxpbWl0X3VzICYmICFpc19pZGxlX3ZjcHUoc2N1cnItPnZjcHUp ICYmCj4gLSAgICAgICAgIHZjcHVfcnVubmFibGUoc2N1cnItPnZjcHUpICYmCj4gLSAgICAgICAg IChub3cgLSBzY3Vyci0+dmNwdS0+cnVuc3RhdGUuc3RhdGVfZW50cnlfdGltZSkgPAo+IC0gICAg ICAgICAgTUlDUk9TRUNTKHBydi0+cmF0ZWxpbWl0X3VzKSApCj4gKyAgICBpZiAoIF9fdGVzdF9h bmRfY2xlYXJfYml0KF9fQ1NGTEFHX3ZjcHVfeWllbGQsICZzY3Vyci0+ZmxhZ3MpICkKPiArICAg ICAgICB5aWVsZF9iaWFzID0gQ1NDSEVEMl9ZSUVMRF9CSUFTOwo+ICsgICAgZWxzZSBpZiAoIHBy di0+cmF0ZWxpbWl0X3VzICYmICFpc19pZGxlX3ZjcHUoc2N1cnItPnZjcHUpICYmCj4gKyAgICAg ICAgICAgICAgdmNwdV9ydW5uYWJsZShzY3Vyci0+dmNwdSkgJiYKPiArICAgICAgICAgICAgICAo bm93IC0gc2N1cnItPnZjcHUtPnJ1bnN0YXRlLnN0YXRlX2VudHJ5X3RpbWUpIDwKPiArICAgICAg ICAgICAgICAgTUlDUk9TRUNTKHBydi0+cmF0ZWxpbWl0X3VzKSApCj4gICAgICAgICAgcmV0dXJu IHNjdXJyOwo+ICAKPiArICAgIC8qIERlZmF1bHQgdG8gY3VycmVudCBpZiBydW5uYWJsZSwgaWRs ZSBvdGhlcndpc2UgKi8KPiArICAgIGlmICggdmNwdV9ydW5uYWJsZShzY3Vyci0+dmNwdSkgKQo+ ICsgICAgICAgIHNuZXh0ID0gc2N1cnI7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgc25leHQgPSBD U0NIRUQyX1ZDUFUoaWRsZV92Y3B1W2NwdV0pOwo+ICsKPiArICAgIHNuZXh0X2NyZWRpdCA9IHNu ZXh0LT5jcmVkaXQgLSB5aWVsZF9iaWFzOwo+ICAgICAgbGlzdF9mb3JfZWFjaCggaXRlciwgJnJx ZC0+cnVucSApCj4gICAgICB7Cj4gICAgICAgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIHN2YyA9 IGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGNzY2hlZDJfdmNwdSwgcnVucV9lbGVtKTsKPiBAQCAt MjI5MywxOSArMjMyNSwyMyBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1 ZV9kYXRhICpycWQsCj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPiAgCj4g LSAgICAgICAgLyogSWYgdGhpcyBpcyBvbiBhIGRpZmZlcmVudCBwcm9jZXNzb3IsIGRvbid0IHB1 bGwgaXQgdW5sZXNzCj4gLSAgICAgICAgICogaXRzIGNyZWRpdCBpcyBhdCBsZWFzdCBDU0NIRUQy X01JR1JBVEVfUkVTSVNUIGhpZ2hlci4gKi8KPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIElm IHRoaXMgaXMgb24gYSBkaWZmZXJlbnQgcHJvY2Vzc29yLCBkb24ndCBwdWxsIGl0IHVubGVzcwo+ ICsgICAgICAgICAqIGl0cyBjcmVkaXQgaXMgYXQgbGVhc3QgQ1NDSEVEMl9NSUdSQVRFX1JFU0lT VCBoaWdoZXIuCj4gKyAgICAgICAgICovCj4gICAgICAgICAgaWYgKCBzdmMtPnZjcHUtPnByb2Nl c3NvciAhPSBjcHUKPiAtICAgICAgICAgICAgICYmIHNuZXh0LT5jcmVkaXQgKyBDU0NIRUQyX01J R1JBVEVfUkVTSVNUID4gc3ZjLT5jcmVkaXQgKQo+ICsgICAgICAgICAgICAgJiYgc25leHRfY3Jl ZGl0ICsgQ1NDSEVEMl9NSUdSQVRFX1JFU0lTVCA+IHN2Yy0+Y3JlZGl0ICkKPiAgICAgICAgICB7 Cj4gICAgICAgICAgICAgICgqc2tpcHBlZCkrKzsKPiAgICAgICAgICAgICAgU0NIRURfU1RBVF9D UkFOSyhtaWdyYXRlX3Jlc2lzdGVkKTsKPiAgICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAg ICAgfQo+ICAKPiAtICAgICAgICAvKiBJZiB0aGUgbmV4dCBvbmUgb24gdGhlIGxpc3QgaGFzIG1v cmUgY3JlZGl0IHRoYW4gY3VycmVudAo+IC0gICAgICAgICAqIChvciBpZGxlLCBpZiBjdXJyZW50 IGlzIG5vdCBydW5uYWJsZSksIGNob29zZSBpdC4gKi8KPiAtICAgICAgICBpZiAoIHN2Yy0+Y3Jl ZGl0ID4gc25leHQtPmNyZWRpdCApCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBJZiB0aGUg bmV4dCBvbmUgb24gdGhlIGxpc3QgaGFzIG1vcmUgY3JlZGl0IHRoYW4gY3VycmVudAo+ICsgICAg ICAgICAqIChvciBpZGxlLCBpZiBjdXJyZW50IGlzIG5vdCBydW5uYWJsZSksIGNob29zZSBpdC4K PiArICAgICAgICAgKi8KPiArICAgICAgICBpZiAoIHN2Yy0+Y3JlZGl0ID4gc25leHRfY3JlZGl0 ICkKPiAgICAgICAgICAgICAgc25leHQgPSBzdmM7CgouLi5jaGFuZ2luZyB0aGlzIGNvbmRpdGlv bmFsIHRvIHRoZSBmb2xsb3dpbmc/CgkgICBpZiAoIHlpZWxkIHx8IHN2Yy0+Y3JlZGl0ID4gc25l eHQtPmNyZWRpdCApCgogLUdlb3JnZQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=