From mboxrd@z Thu Jan 1 00:00:00 1970 From: "DIAO, Hanson" Subject: RE: A potential Xenomai Mutex issue Date: Fri, 23 Aug 2019 14:18:45 +0000 Message-ID: References: <43f9470f-ed47-0a2a-71f5-ca9bca08879a@siemens.com> In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "jan.kiszka@siemens.com" Cc: "xenomai@xenomai.org" SGkgSmFuLA0KDQpJIGNoZWNrZWQgdGhlIGNvbW1pdG1lbnQoODA0NzE0N2FmZjlkKS4gT3VyIHBs YXRmb3JtIHVzZSBkaWZmZXJlbnQgbXV0ZXgoLi9zcmMvc2tpbi9uYXRpdmUvbXV0ZXguYykuIFRo ZSBjb21taXRtZW50IGlzIG9ubHkgZm9yIFBPU0lYIGNvZGUuIFRoYW5rIHlvdSBzbyBtdWNoLg0K DQpCZXN0IFJlZ2FyZHMsDQpIYW5zb24gRGlhbw0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KRnJvbTogRElBTywgSGFuc29uIChESSBQQSBDSSBSQyBSJkQgU1cyKQ0KU2VudDogRnJpZGF5 LCBBdWd1c3QgMjMsIDIwMTkgMTA6MDMgQU0NClRvOiBLaXN6a2EsIEphbiAoQ1QgUkRBIElPVCBT RVMtREUpIDxqYW4ua2lzemthQHNpZW1lbnMuY29tPg0KQ2M6IHhlbm9tYWlAeGVub21haS5vcmcN ClN1YmplY3Q6IFJFOiBBIHBvdGVudGlhbCBYZW5vbWFpIE11dGV4IGlzc3VlDQoNCkhpIEphbiwN Cg0KVGhhbmsgeW91IGZvciB5b3VyIHJlcGx5LiBJIHdpbGwgYW5zd2VyIHRoZSBxdWVzdGlvbnMg b25lIGJ5IG9uZS4NCg0KUTogVGhpcyBpcyBvbiBhIEFSTXY3IG11bHRpY29yZSB0YXJnZXQsIHJp Z2h0SXM/DQpIRDogVGhpcyBpcyBQb3dlclBDIHRhcmdldC4NCg0KUTogQXJlIHlvdSBhbHJlYWR5 IGFibGUgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSByZWxpYWJseSwgcG9zc2libHkgaW4gYSBzeW50 aGV0aWMgZW52aXJvbm1lbnQ/DQpIRDogSXQgcmVwcm9kdWNlcyBldmVyeSB0aW1lIGZvciB0aGUg Zmlyc3QgaXNzdWUgYW5kIHNlY29uZCBpc3N1ZShyZWN1cnNpdmUgbG9jayBsb2NrIGNvdW50IHNo b3VsZCBiZSBtb3JlIHRoYW4gMSkuDQoNClE6ICBPciBkb2VzIHlvdXIgd2hvbGUgc3RhY2sgaGF2 ZSB0byBydW4gb24gdGhlIHRhcmdldCBmb3IgYSBsb25nIHRpbWUgdG8gdHJpZ2dlciB0aGlzPw0K SEQ6IEkgZ290IHRoaXMgaXNzdWUgd2hlbiB0aGUgc3lzdGVtIHdhcyBpbiBpbml0aWFsaXplZCBz dGFnZS4gSXQgaXMgZWFzeSB0byB0cmlnZ2VyIHRoaXMgYW5kIGV2ZXJ5IHRpbWUgaXQgaGFwcGVu cy4NCg0KUTogdGhlIG11dGV4IHNoYXJlZCBiZXR3ZWVuIG11bHRpcGxlIHByb2Nlc3Mgb3IganVz dCBiZXR3ZWVuIHRocmVhZHMgb2YgdGhlIHNhbWUgcHJvY2Vzcz8NCkhEOiBUaGUgbXV0ZXggc2hh cmVkIG9ubHkgaW4gb25lIHByb2Nlc3Mgd2l0aCBtdWx0aS10YXNrcy4NCg0KUTpNYXliZSBzb21l dGhpbmcgYW5hbG9nb3VzbHkgd2FzIG5lZWRlZCBmb3IgbmF0aXZlIGFzIHdlbGwuIEFuZCB0aGVu IHlvdSBjb3VsZCBsb29rIGF0IHdoYXQgaGFwcGVuZWQgaW4gMy54IG11dGV4LXdpc2UgdG8gY2hl Y2sgaWYgeW91IGFyZSBub3QgbWlzc2luZyBhIGNvbmNlcHR1YWwgZml4IGluIDIuNi4NCkhEOiBJ IHdpbGwgY2hlY2sgdGhlIGNvbW1pdCBtZXNzYWdlLiBJIGNvbXBhcmVkIDIuNi40IHZlcnNpb24g d2l0aCAyLjYuNSB2ZXJzaW9uLiBJdCBzZWVtcyB0aGF0IHRoZSBjb2RlIGFyZSBzYW1lIGluIG11 dGV4KFVzZXIgc3BhY2UgbXV0ZXgpLg0KDQpROllvdSBzZWVtIHRvIGxvb2sgYXQgdGhlIHdyb25n IGRhdGEgc3RydWN0dXJlLiBZb3UgbmVlZCB0byBleGFtaW5lIFJUX01VVEVYX1BMQUNFSE9MREVS IGZpZWxkcy4NCkhEOiBUaGUgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggSSBnb3QgaXMgUlRfTVVURVhf UExBQ0VIT0xERVIgZmllbGRzLiBJIGF0dGFjaGVkIHRoZSBjb2RlIGFzIGJlbG93Lg0KDQp0eXBl ZGVmIHN0cnVjdCBydF9tdXRleF9wbGFjZWhvbGRlciB7DQoNCiAgICAgICAgeG5oYW5kbGVfdCBv cGFxdWU7DQoNCiNpZmRlZiBDT05GSUdfWEVOT19GQVNUU1lOQ0gNCiAgICAgICAgeG5hcmNoX2F0 b21pY190ICpmYXN0bG9jazsNCg0KICAgICAgICBpbnQgbG9ja2NudDsNCiNlbmRpZiAvKiBDT05G SUdfWEVOT19GQVNUU1lOQ0ggKi8NCg0KfSBSVF9NVVRFWF9QTEFDRUhPTERFUjsNCg0KLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEphbiBLaXN6a2EgPGphbi5raXN6a2FAc2llbWVu cy5jb20+DQpTZW50OiBGcmlkYXksIEF1Z3VzdCAyMywgMjAxOSAyOjQ4IEFNDQpUbzogRElBTywg SGFuc29uIChESSBQQSBDSSBSQyBSJkQgU1cyKSA8aGFuc29uLmRpYW9Ac2llbWVucy5jb20+OyB4 ZW5vbWFpQHhlbm9tYWkub3JnDQpTdWJqZWN0OiBSZTogQSBwb3RlbnRpYWwgWGVub21haSBNdXRl eCBpc3N1ZQ0KDQpPbiAyMi4wOC4xOSAyMDo0MiwgRElBTywgSGFuc29uIHZpYSBYZW5vbWFpIHdy b3RlOg0KPiBIaSBhbGwsDQo+DQo+DQo+DQo+IEkgaG9wZSB5b3UgYXJlIGRvaW5nIHdlbGwuIEN1 cnJlbnRseSBJIHdhcyB3b3JraW5nIG9uIGEgY3JpdGljYWwgZGVhZGxvY2sgaXNzdWUgd2l0aCBY ZW5vbWFpbCBMaWJyYXJ5KHZlcnNpb24gMi42LjQpLiBJIGZvdW5kIHRoYXQgZm9yIHRoZSBYZW5v bWFpIGxvY2sgY291bnQgaXMgbm90IHJlbGlhYmxlIGFmdGVyIHdlIGNhbGxlZCBydF9tdXRleF9y ZWxlYXNlLiBJIHByaW50IHRoZSBmb2xsb3dpbmcgbWVzc2FnZSB0byB5b3UuIEkgaG9wZSBzb21l IGRldmVsb3BlciBjYW4gaGVscCBtZSBmaXggdGhpcyBpc3N1ZS4gSSBrbm93IHRoYXQgdGhpcyB2 ZXJzaW9uIGlzIEVPTCwgYnV0IHdlIHN0aWxsIHVzZSB0aGlzIG9sZCB2ZXJzaW9uLiBUaGFuayB5 b3Ugc28gbXVjaC4NCj4NCg0KVGhpcyBpcyBvbiBhIEFSTXY3IG11bHRpY29yZSB0YXJnZXQsIHJp Z2h0PyBBcmUgeW91IGFscmVhZHkgYWJsZSB0byByZXByb2R1Y2UgdGhlIGlzc3VlIHJlbGlhYmx5 LCBwb3NzaWJseSBpbiBhIHN5bnRoZXRpYyBlbnZpcm9ubWVudD8gT3IgZG9lcyB5b3VyIHdob2xl IHN0YWNrIGhhdmUgdG8gcnVuIG9uIHRoZSB0YXJnZXQgZm9yIGEgbG9uZyB0aW1lIHRvIHRyaWdn ZXIgdGhpcz8gSXMgdGhlIG11dGV4IHNoYXJlZCBiZXR3ZWVuIG11bHRpcGxlIHByb2Nlc3Mgb3Ig anVzdCBiZXR3ZWVuIHRocmVhZHMgb2YgdGhlIHNhbWUgcHJvY2Vzcz8NCg0KTmV4dCBwb2ludDog WW91IGFyZSBvbiAyLjYuNCB3aGlsZSB0aGUgbGFzdCByZWxlYXNlIHdhcyAyLjYuNS4gSXQgY29u dGFpbmVkIGUuZy4NCjgwNDcxNDdhZmY5ZCAocG9zaXgvbXV0ZXg6IGhhbmRsZSByZWN1cnNpb24g Y291bnQgY29tcGxldGVseSBpbiB1c2VyLXNwYWNlKS4NCg0KPg0KPg0KPiBJc3N1ZSAxOg0KPg0K PiBCZWZvcmUgTXV0ZXggTG9jayBNdXRleHQgYWRkciA9IDB4YjdjMDU5ZTgsY291bnQgPSAwLCBv d25lciA9IDAgICAgIFRoaXMgbWVzc2FnZSBzaG93IHRoZSBzdGF0dXMgYmVmb3JlIHJ0X211dGV4 X2FjcXVpcmUuDQo+DQo+IEFmdGVyIE11dGV4IExvY2sgTXV0ZXh0IGFkZHIgPSAweGI3YzA1OWU4 LGNvdW50ID0gMSwgb3duZXIgPSAyYmQgICBUaGlzIG1lc3NhZ2Ugc2hvdyB0aGUgc3RhdHVzIGFm dGVyIGNhbGxpbmcgcnRfbXV0ZXhfYWNxdWlyZS4gICAgIEV2ZXJ5dGhpbmcgaXMgcmlnaHQgZm9y IHRoZSBydF9tdXRleF9hY3F1aXJlIGluIHRoaXMgc2NlbmFyaW8uDQo+DQo+DQo+DQo+IEJlZm9y ZSBNdXRleCB1bkxvY2sgTXV0ZXh0IGFkZHIgPSAweGI3YzA1OWU4LGNvdW50ID0gMSwgb3duZXIg PSAyYmQgICBUaGlzIG1lc3NhZ2Ugc2hvdyB0aGUgc3RhdHVzIGJlZm9yZSBydF9tdXRleF9yZWxl YXNlLg0KPg0KPiBBZnRlciBNdXRleCB1bkxvY2sgTXV0ZXh0IGFkZHIgPSAweGI3YzA1OWU4LGNv dW50ID0gMSwgb3duZXIgPSAwICAgICAgICAgIFRoaXMgbWVzc2FnZSBzaG93IHRoZSBzdGF0dXMg YWZ0ZXIgcnRfbXV0ZXhfcmVsZWFzZS4gSXQgc2VlbXMgdGhhdCB0aGUgbG9jayBjb3VudCBpcyBu b3QgY29ycmVjdCBhZnRlciBjYWxsIHJ0X211dGV4X3JlbGVhc2UuDQo+DQoNCg0KPg0KPg0KPiBJ c3N1ZSAyOg0KPg0KPiBXaGVuIG91ciB0YXNrIGlzIGNhbGwgcmVjdXJzaXZlIGxvY2suIFRoZSBt dXRleCBsb2NrIGNvdW50IHNob3VsZCBtb3JlIHRoYW4gMSwgYnV0IHRoZSBsb2NrIGNvdW50IGlz IHN0aWxsIDEuDQo+DQo+DQo+DQo+IEZvciB0aGUgaXNzdWUgMSwgSSBndWVzcyB0aGF0IHRoZXJl IGFyZSBzb21ldGhpbmcgd3JvbmcgaW4gdGhlIHJlbGVhc2UgZnVuY3Rpb24uIEkgaGlnaGxpZ2h0 ZWQgdGhlIGNvZGUuIEkgYW0gbm90IHN1cmUgaWYgaXQgaXMgdGhlIHJvb3QgY2F1c2UuDQo+DQoN CkRvbid0IHVzZSBIVE1MIGVtYWlscyBvbiBwdWJsaWMgbGlzdHMuIFRoZXkgb2Z0ZW4gZ2V0IGZp bHRlcmVkLCBhdCBsYXRlc3Qgb24gcmVjZWl2ZXIgc2lkZS4NCg0KSmFuDQoNCj4NCj4NCj4gaW50 IHJ0X211dGV4X3JlbGVhc2UoUlRfTVVURVggKm11dGV4KQ0KPg0KPiB7DQo+DQo+ICNpZmRlZiBD T05GSUdfWEVOT19GQVNUU1lOQ0gNCj4NCj4gICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0dXM7 DQo+DQo+ICAgICAgICAgIHhuaGFuZGxlX3QgY3VyOw0KPg0KPg0KPg0KPiAgICAgICAgICBjdXIg PSB4ZW5vX2dldF9jdXJyZW50KCk7DQo+DQo+ICAgICAgICAgIGlmIChjdXIgPT0gWE5fTk9fSEFO RExFKQ0KPg0KPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRVBFUk07DQo+DQo+DQo+DQo+ICAg ICAgICAgIHN0YXR1cyA9IHhlbm9fZ2V0X2N1cnJlbnRfbW9kZSgpOw0KPg0KPiAgICAgICAgICBp ZiAodW5saWtlbHkoc3RhdHVzICYgWE5PVEhFUikpDQo+DQo+ICAgICAgICAgICAgICAgICAgLyog U2VlIHJ0X211dGV4X2FjcXVpcmVfaW5uZXIoKSAqLw0KPg0KPiAgICAgICAgICAgICAgICAgIGdv dG8gZG9fc3lzY2FsbDsNCj4NCj4NCj4NCj4gICAgICAgICAgaWYgKHVubGlrZWx5KHhuc3luY2hf ZmFzdF9vd25lcl9jaGVjayhtdXRleC0+ZmFzdGxvY2ssIGN1cikNCj4gIT0gMCkpDQo+DQo+ICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsNCj4NCj4NCj4NCj4gICAgICAgICAgaWYgKG11 dGV4LT5sb2NrY250ID4gMSkgew0KPg0KPiAgICAgICAgICAgICAgICAgIG11dGV4LT5sb2NrY250 LS07DQo+DQo+ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+DQo+ICAgICAgICAgIH0NCj4N Cj4NCj4NCj4gICAgICAgICAgaWYgKGxpa2VseSh4bnN5bmNoX2Zhc3RfcmVsZWFzZShtdXRleC0+ ZmFzdGxvY2ssIGN1cikpKQ0KPg0KPiAgICAgICAgICB7DQo+DQo+ICAgICAgICAgICAgICAgICAg cmV0dXJuIDA7DQo+DQo+ICAgICAgICAgIH0NCj4NCj4gZG9fc3lzY2FsbDoNCj4NCj4gI2VuZGlm IC8qIENPTkZJR19YRU5PX0ZBU1RTWU5DSCAqLw0KPg0KPg0KPg0KPiAgICAgICAgICByZXR1cm4g WEVOT01BSV9TS0lOQ0FMTDEoX19uYXRpdmVfbXV4aWQsDQo+IF9fbmF0aXZlX211dGV4X3JlbGVh c2UsIG11dGV4KTsNCj4NCj4gfQ0KPg0KPg0KPg0KPg0KPg0KPg0KPg0KPiBGb3IgdGhlIE11dGV4 IGxvY2sgZnVuY3Rpb24sIEkgYW0gc28gY29uZnVzZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1l bnRzIHdoaWNoIEkgaGlnaGxpZ2h0ZWQgYXMgYmVsb3cuIEkgYW0gbm90IHN1cmUgaWYgaXQgc3Vw cG9ydHMgdGhlIHJlY3Vyc2l2ZSBsb2NrLg0KPg0KPiBzdGF0aWMgaW50IHJ0X211dGV4X2FjcXVp cmVfaW5uZXIoUlRfTVVURVggKm11dGV4LCBSVElNRSB0aW1lb3V0LA0KPiB4bnRtb2RlX3QgbW9k ZSkNCj4NCj4gew0KPg0KPiAgICAgICAgICBpbnQgZXJyOw0KPg0KPiAjaWZkZWYgQ09ORklHX1hF Tk9fRkFTVFNZTkNIDQo+DQo+ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhdHVzOw0KPg0KPiAg ICAgICAgICB4bmhhbmRsZV90IGN1cjsNCj4NCj4NCj4NCj4gICAgICAgICAgY3VyID0geGVub19n ZXRfY3VycmVudCgpOw0KPg0KPiAgICAgICAgICBpZiAoY3VyID09IFhOX05PX0hBTkRMRSkNCj4N Cj4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOw0KPg0KPg0KPg0KPiAgICAgICAgICAv Kg0KPg0KPiAgICAgICAgICAgKiBXZSB0cmFjayByZXNvdXJjZSBvd25lcnNoaXAgZm9yIG5vbiBy ZWFsLXRpbWUgc2hhZG93cyBpbg0KPg0KPiAgICAgICAgICAgKiBvcmRlciB0byBoYW5kbGUgdGhl IGF1dG8tcmVsYXggZmVhdHVyZSwgc28gd2UgbXVzdCBhbHdheXMNCj4NCj4gICAgICAgICAgICog b2J0YWluIHRoZW0gdmlhIGEgc3lzY2FsbC4NCj4NCj4gICAgICAgICAgICovDQo+DQo+ICAgICAg ICAgIHN0YXR1cyA9IHhlbm9fZ2V0X2N1cnJlbnRfbW9kZSgpOw0KPg0KPiAgICAgICAgICBpZiAo dW5saWtlbHkoc3RhdHVzICYgWE5PVEhFUikpDQo+DQo+ICAgICAgICAgICAgICAgICAgZ290byBk b19zeXNjYWxsOw0KPg0KPg0KPg0KPiAgICAgICAgICBpZiAobGlrZWx5KCEoc3RhdHVzICYgWE5S RUxBWCkpKSB7DQo+DQo+ICAgICAgICAgICAgICAgICAgZXJyID0geG5zeW5jaF9mYXN0X2FjcXVp cmUobXV0ZXgtPmZhc3Rsb2NrLCBjdXIpOw0KPg0KPiAgICAgICAgICAgICAgICAgIGlmIChsaWtl bHkoIWVycikpIHsNCj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4LT5sb2NrY250 ID0gMTsNCj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPg0KPiAgICAg ICAgICAgICAgICAgIH0NCj4NCj4NCj4NCj4gICAgICAgICAgICAgICAgICBpZiAoZXJyID09IC1F QlVTWSkgew0KPg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11dGV4LT5sb2NrY250 ID09IFVJTlRfTUFYKQ0KPg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLUVBR0FJTjsNCj4NCj4NCj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4LT5s b2NrY250Kys7DQo+DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4NCj4g ICAgICAgICAgICAgICAgICB9DQo+DQo+DQo+DQo+ICAgICAgICAgICAgICAgICAgaWYgKHRpbWVv dXQgPT0gVE1fTk9OQkxPQ0sgJiYgbW9kZSA9PSBYTl9SRUxBVElWRSkNCj4NCj4gICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRVdPVUxEQkxPQ0s7DQo+DQo+ICAgICAgICAgIH0gZWxz ZSBpZiAoeG5zeW5jaF9mYXN0X293bmVyX2NoZWNrKG11dGV4LT5mYXN0bG9jaywgY3VyKSA9PQ0K PiAwKSB7DQo+DQo+ICAgICAgICAgICAgICAgICAgLyoNCj4NCj4gICAgICAgICAgICAgICAgICAg KiBUaGUgYXBwbGljYXRpb24gaXMgYnVnZ3kgYXMgaXQganVtcGVkIHRvIHNlY29uZGFyeQ0KPiBt b2RlDQo+DQo+ICAgICAgICAgICAgICAgICAgICogd2hpbGUgaG9sZGluZyB0aGUgbXV0ZXguIE5l dmVydGhlbGVzcywgd2UgaGF2ZSB0bw0KPiBrZWVwIHRoZQ0KPg0KPiAgICAgICAgICAgICAgICAg ICAqIG11dGV4IHN0YXRlIGNvbnNpc3RlbnQuDQo+DQo+ICAgICAgICAgICAgICAgICAgICoNCj4N Cj4gICAgICAgICAgICAgICAgICAgKiBXZSBtYWtlIG5vIGVmZm9ydHMgdG8gbWlncmF0ZSBvciB3 YXJuIGhlcmUuIFRoZXJlDQo+IGlzDQo+DQo+ICAgICAgICAgICAgICAgICAgICogWEVOT19ERUJV RyhTWU5DSF9SRUxBWCkgdG8gY2F0Y2ggc3VjaCBidWdzLg0KPg0KPiAgICAgICAgICAgICAgICAg ICAqLw0KPg0KPiAgICAgICAgICAgICAgICAgIGlmIChtdXRleC0+bG9ja2NudCA9PSBVSU5UX01B WCkNCj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOw0KPg0KPg0K Pg0KPiAgICAgICAgICAgICAgICAgIG11dGV4LT5sb2NrY250Kys7DQo+DQo+ICAgICAgICAgICAg ICAgICAgcmV0dXJuIDA7DQo+DQo+ICAgICAgICAgIH0NCj4NCj4gZG9fc3lzY2FsbDoNCj4NCj4g I2VuZGlmIC8qIENPTkZJR19YRU5PX0ZBU1RTWU5DSCAqLw0KPg0KPg0KPg0KPiAgICAgICAgICBl cnIgPSBYRU5PTUFJX1NLSU5DQUxMMyhfX25hdGl2ZV9tdXhpZCwNCj4NCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX19uYXRpdmVfbXV0ZXhfYWNxdWlyZSwgbXV0ZXgsIG1vZGUs DQo+ICZ0aW1lb3V0KTsNCj4NCj4NCj4NCj4gI2lmZGVmIENPTkZJR19YRU5PX0ZBU1RTWU5DSA0K Pg0KPiAgICAgICAgICBpZiAoIWVycikNCj4NCj4gICAgICAgICAgICAgICAgICBtdXRleC0+bG9j a2NudCA9IDE7DQo+DQo+ICNlbmRpZiAvKiBDT05GSUdfWEVOT19GQVNUU1lOQ0ggKi8NCj4NCj4N Cj4NCj4gICAgICAgICAgcmV0dXJuIGVycjsNCj4NCj4gfQ0KPg0KPg0KPg0KPg0KPg0KDQotLQ0K U2llbWVucyBBRywgQ29ycG9yYXRlIFRlY2hub2xvZ3ksIENUIFJEQSBJT1QgU0VTLURFIENvcnBv cmF0ZSBDb21wZXRlbmNlIENlbnRlciBFbWJlZGRlZCBMaW51eA0K