Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qTh8c-00ANL9-V0 for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Aug 2023 11:14:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qTh8b-004eZv-IY for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Aug 2023 11:14:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qTh5X-004baZ-D2 for pgsql-hackers@lists.postgresql.org; Wed, 09 Aug 2023 11:10:51 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qTh5T-001Srp-HL for pgsql-hackers@lists.postgresql.org; Wed, 09 Aug 2023 11:10:50 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 5F90D60794; Wed, 9 Aug 2023 20:10:42 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.8 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_74fa1ca798c90a7566ad89bc1c04d8a1" Content-Transfer-Encoding: 7bit Date: Wed, 09 Aug 2023 20:10:42 +0900 From: Masahiro Ikeda To: Andres Freund Cc: Michael Paquier , Bharath Rupireddy , Tristan Partin , pgsql-hackers@lists.postgresql.org Subject: Re: Support to define custom wait events for extensions In-Reply-To: <20230809003710.qhys7nvwhdujd4pm@awork3.anarazel.de> References: <171b38978ae8a21e5635998d9bfedbf6@oss.nttdata.com> <20230801032349.aaiuvhtrcvvcwzcx@awork3.anarazel.de> <9cc4136f9e3629a2ffc8ac66b4de3f31@oss.nttdata.com> <20230808225954.vh6xwikz4fxjbprz@awork3.anarazel.de> <20230809003710.qhys7nvwhdujd4pm@awork3.anarazel.de> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <0850ea2f23217b3a87340dd2d721d051@oss.nttdata.com> X-Sender: ikedamsh@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_74fa1ca798c90a7566ad89bc1c04d8a1 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, Thanks for your comments to v1 patch. I made v2 patch. Main changes are * change to NAMEDATALEN * change to use dynahash from dshash * remove worker_spi_init() * create second hash table to find a event id from a name to identify uniquness. It enable extensions which don't use share memory for their use to define custom wait events because WaitEventExtensionNew() will not allocate duplicate wait events. * create PoC patch to show that extensions, which don't use shared memory for their use, can define custom wait events. (v2-0002-poc-custom-wait-event-for-dblink.patch) I'm worrying about * Is 512(wee_hash_max_size) the maximum number of the custom wait events sufficient? * Is there any way to not force extensions that don't use shared memory for their use like dblink to acquire AddinShmemInitLock?; Regards, -- Masahiro Ikeda NTT DATA CORPORATION --=_74fa1ca798c90a7566ad89bc1c04d8a1 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-Change-to-manage-custom-wait-events-in-shared-hash.patch Content-Disposition: attachment; filename=v2-0001-Change-to-manage-custom-wait-events-in-shared-hash.patch; size=18607 RnJvbSBlYzdkMmIwYWU0N2JlOWJlZGFiYjRhNDEyN2M5MTRiZmI4YzM2MWI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXNhaGlybyBJa2VkYSA8bXNoci5pa2VkYUBudHQuY29tPgpE YXRlOiBXZWQsIDkgQXVnIDIwMjMgMTk6MTk6NTggKzA5MDAKU3ViamVjdDogW1BBVENIIDEvMl0g Q2hhbmdlIHRvIG1hbmFnZSBjdXN0b20gd2FpdCBldmVudHMgaW4gc2hhcmVkIGhhc2gKCkN1cnJl bnRseSwgbmFtZXMgb2YgdGhlIGN1c3RvbSB3YWl0IGV2ZW50IG11c3QgYmUgcmVnaXN0ZXJlZApw ZXIgYmFja2VuZHMuIFRoaXMgcGF0Y2ggcmVsYXhlcyB0aGUgY29uc3RyYWludHMgYnkgc3RvcmUg dGhlCndhaXQgZXZlbnRzIGFuZCB0aGVpciBuYW1lcyBpbiBoYXNoIHRhYmxlcyBpbiBzaGFyZWQg bWVtb3J5LgoKU28sIGFsbCBiYWNrZW5kcyBjYW4gbG9vayB1cCB0aGUgd2FpdCBldmVudCBuYW1l cyBvbgpwZ19zdGF0X2FjdGl2aXR5IHZpZXcgd2l0aG91dCBhZGRpdGlvbmFsIHByb2Nlc3Npbmcg YnkgZXh0ZW5zaW9ucy4KCkluIGFkZGl0aW9uLCBleHRlbnNpb25zIHdoaWNoIGRvIG5vdCB1c2Ug c2hhcmVkIG1lbW9yeSBmb3IgdGhlaXIKdXNlIGNhbiBkZWZpbmUgY3VzdG9tIHdhaXQgZXZlbnRz IGJlY2F1c2UgV2FpdEV2ZW50RXh0ZW5zaW9uTmV3KCkKd2lsbCBuZXZlciBhbGxvY2F0ZSBuZXcg b25lIGlmIHRoZSB3YWl0IGV2ZW50IGFzc29jaWF0ZWQgdG8gdGhlCm5hbWUgaXMgYWxyZWFkeSBh bGxvY2F0ZWQuIEl0IHVzZSBoYXNoIHRhYmxlIHRvIGlkZW50aWZ5IHVuaXF1bmVzcy4KLS0tCiBk b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIGRv Yy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dCAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8IDE5OCArKysrKysrKysr Ky0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8 ICAxNyArLQogLi4uL21vZHVsZXMvd29ya2VyX3NwaS90LzAwMV93b3JrZXJfc3BpLnBsICAgIHwg IDE4ICstCiAuLi4vbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGktLTEuMC5zcWwgICAgfCAg IDUgLQogc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyAgICAgIHwgIDIy ICstCiA4IGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAxNDEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKaW5kZXggZjRmYzVkODE0Zi4uMTkxODE4MzJkNyAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sCkBAIC0xMTIxLDEwICsxMTIxLDkgQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90 eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkK ICAgICAgPGxpdGVyYWw+TFdMb2NrPC9saXRlcmFsPiB0eXBlcwogICAgICB0byB0aGUgbGlzdCBz aG93biBpbiA8eHJlZiBsaW5rZW5kPSJ3YWl0LWV2ZW50LWV4dGVuc2lvbi10YWJsZSIvPiBhbmQK ICAgICAgPHhyZWYgbGlua2VuZD0id2FpdC1ldmVudC1sd2xvY2stdGFibGUiLz4uIEluIHNvbWUg Y2FzZXMsIHRoZSBuYW1lCi0gICAgIGFzc2lnbmVkIGJ5IGFuIGV4dGVuc2lvbiB3aWxsIG5vdCBi ZSBhdmFpbGFibGUgaW4gYWxsIHNlcnZlciBwcm9jZXNzZXM7Ci0gICAgIHNvIGFuIDxsaXRlcmFs PkV4dGVuc2lvbjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+TFdMb2NrPC9saXRlcmFsPiB3YWl0Ci0g ICAgIGV2ZW50IG1pZ2h0IGJlIHJlcG9ydGVkIGFzIGp1c3QKLSAgICAgPHF1b3RlPjxsaXRlcmFs PmV4dGVuc2lvbjwvbGl0ZXJhbD48L3F1b3RlPiByYXRoZXIgdGhhbiB0aGUKKyAgICAgb2YgPGxp dGVyYWw+TFdMb2NrPC9saXRlcmFsPiBhc3NpZ25lZCBieSBhbiBleHRlbnNpb24gd2lsbCBub3Qg YmUKKyAgICAgYXZhaWxhYmxlIGluIGFsbCBzZXJ2ZXIgcHJvY2Vzc2VzOyBzbyBhbiB3YWl0IGV2 ZW50IG1pZ2h0IGJlIHJlcG9ydGVkCisgICAgIGFzIGp1c3QgPHF1b3RlPjxsaXRlcmFsPmV4dGVu c2lvbjwvbGl0ZXJhbD48L3F1b3RlPiByYXRoZXIgdGhhbiB0aGUKICAgICAgZXh0ZW5zaW9uLWFz c2lnbmVkIG5hbWUuCiAgICAgPC9wYXJhPgogICAgPC9ub3RlPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3hmdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAppbmRleCBkNjM0NWE3 NzViLi43ZmVjMDM0ZGI0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbApAQCAtMzQ3MCwxNyArMzQ3MCwxMyBAQCB2b2lkIFJl cXVlc3RBZGRpblNobWVtU3BhY2UoaW50IHNpemUpCiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwv cGFyYT4KICAgICA8cGFyYT4KLSAgICAgPGxpdGVyYWw+c2htZW1fc3RhcnR1cF9ob29rPC9saXRl cmFsPiBjYW4gYWxsb2NhdGUgaW4gc2hhcmVkIG1lbW9yeQorICAgICA8bGl0ZXJhbD5zaG1lbV9z dGFydHVwX2hvb2s8L2xpdGVyYWw+IGNhbiBhbGxvY2F0ZSBpbiBkeW5hbWljIHNoYXJlZCBtZW1v cnkKICAgICAgY3VzdG9tIHdhaXQgZXZlbnRzIGJ5IGNhbGxpbmcgd2hpbGUgaG9sZGluZyB0aGUg TFdMb2NrCiAgICAgIDxmdW5jdGlvbj5BZGRpblNobWVtSW5pdExvY2s8L2Z1bmN0aW9uPiB0byBh dm9pZCBhbnkgcmFjZSBjb25kaXRpb25zOgogPHByb2dyYW1saXN0aW5nPgotdWludDMyIFdhaXRF dmVudEV4dGVuc2lvbk5ldyh2b2lkKQotPC9wcm9ncmFtbGlzdGluZz4KLSAgICAgTmV4dCwgZWFj aCBwcm9jZXNzIG5lZWRzIHRvIGFzc29jaWF0ZSB0aGUgd2FpdCBldmVudCBhbGxvY2F0ZWQgcHJl dmlvdXNseQotICAgICB0byBhIHVzZXItZmFjaW5nIGN1c3RvbSBzdHJpbmcsIHdoaWNoIGlzIHNv bWV0aGluZyBkb25lIGJ5IGNhbGxpbmc6Ci08cHJvZ3JhbWxpc3Rpbmc+Ci12b2lkIFdhaXRFdmVu dEV4dGVuc2lvblJlZ2lzdGVyTmFtZSh1aW50MzIgd2FpdF9ldmVudF9pbmZvLCBjb25zdCBjaGFy ICp3YWl0X2V2ZW50X25hbWUpCit1aW50MzIgV2FpdEV2ZW50RXh0ZW5zaW9uTmV3KGNvbnN0IGNo YXIgKndhaXRfZXZlbnRfbmFtZSkKIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIFRoZSB3YWl0IGV2 ZW50IGlzIGFzc29jaWF0ZWQgdG8gYSB1c2VyLWZhY2luZyBjdXN0b20gc3RyaW5nLgogICAgICBB biBleGFtcGxlIGNhbiBiZSBmb3VuZCBpbiA8ZmlsZW5hbWU+c3JjL3Rlc3QvbW9kdWxlcy93b3Jr ZXJfc3BpPC9maWxlbmFtZT4KICAgICAgaW4gdGhlIFBvc3RncmVTUUwgc291cmNlIHRyZWUuCiAg ICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25h bWVzLnR4dCBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQKaW5kZXgg YjM0YjZhZmVjZC4uN2FmM2UwYmExYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2x3bG9ja25hbWVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2Nr bmFtZXMudHh0CkBAIC01MywzICs1Myw0IEBAIFhhY3RUcnVuY2F0aW9uTG9jawkJCQkJNDQKICMg NDUgd2FzIFhhY3RUcnVuY2F0aW9uTG9jayB1bnRpbCByZW1vdmFsIG9mIEJhY2tlbmRSYW5kb21M b2NrCiBXcmFwTGltaXRzVmFjdXVtTG9jawkJCQk0NgogTm90aWZ5UXVldWVUYWlsTG9jawkJCQkJ NDcKK1dhaXRFdmVudEV4dGVuc2lvbkxvY2sgICAgICAgICAgICAgIDQ4CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggYjM1OTZlY2U4MC4uMTViMmRkMDZjYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtNDUsNiArNDUsNDIgQEAg dWludDMyCSAgICpteV93YWl0X2V2ZW50X2luZm8gPSAmbG9jYWxfbXlfd2FpdF9ldmVudF9pbmZv OwogI2RlZmluZSBXQUlUX0VWRU5UX0NMQVNTX01BU0sJMHhGRjAwMDAwMAogI2RlZmluZSBXQUlU X0VWRU5UX0lEX01BU0sJCTB4MDAwMEZGRkYKIAorLyoKKyAqIEhhc2ggdGFibGVzIGZvciBzdG9y aW5nIGN1c3RvbSB3YWl0IGV2ZW50IGlkcyBhbmQgdGhlaXIgbmFtZXMgaW4KKyAqIHNoYXJlZCBt ZW1vcnkuCisgKgorICogV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZUhhc2ggaXMgdXNlZCB0byBmaW5k IHRoZSBuYW1lIGZyb20gYSBldmVudCBpZC4KKyAqIEl0IGVuYWJsZXMgYWxsIGJhY2tlbmRzIGxv b2sgdXAgdGhlbSB3aXRob3V0IGFkZGl0aW9uYWwgcHJvY2Vzc2luZworICogcGVyIGJhY2tlbmQg bGlrZSBMV0xvY2tSZWdpc3RlclRyYW5jaGUoKS4KKyAqCisgKiBXYWl0RXZlbnRFeHRlbnNpb25J ZEhhc2ggaXMgdXNlZCB0byBmaW5kIHRoZSBldmVudCBpZCBmcm9tIGEgbmFtZS4KKyAqIFNpbmNl IGl0IGNhbiBpZGVudGlmeSB1bmlxdW5lc3MgYnkgdGhlIG5hbWVzLCBleHRlbnNpb25zIHRoYXQg ZG8gbm90CisgKiB1c2Ugc2hhcmVkIG1lbW9yeSBhbHNvIGJlIGFibGUgdG8gZGVmaW5lIGN1c3Rv bSB3YWl0IGV2ZW50cyB3aXRob3V0CisgKiBkZWZpbmluZyBkdXBsaWNhdGUgd2FpdCBldmVudHMu CisgKgorICogVGhlIHNpemUgb2YgaGFzaCB0YWJsZSBpcyBiYXNlZCBvbiBhc3N1bXB0aW9uLiBJ biBtb3N0IG9mIHRoZSBjYXNlLAorICogMTYgc2VlbSB0byBiZSBzdWZmaWNpZW50LiBJdCBzZWVt cyB1bmxpa2VseSB0aGF0IHRoZSBudW1iZXIgb2YgZW50cmllcworICogd2lsbCByZWFjaCA1MTIu CisgKi8KK3N0YXRpYyBIVEFCICpXYWl0RXZlbnRFeHRlbnNpb25OYW1lSGFzaDsJLyogZmluZCBJ ZHMgZnJvbSBuYW1lcyAqLworc3RhdGljIEhUQUIgKldhaXRFdmVudEV4dGVuc2lvbklkSGFzaDsJ CS8qIGZpbmQgbmFtZXMgZnJvbSBJZHMgKi8KK3N0YXRpYyBjb25zdCBpbnQgd2VlX2hhc2hfaW5p dF9zaXplID0gMTI4Oworc3RhdGljIGNvbnN0IGludCB3ZWVfaGFzaF9tYXhfc2l6ZSA9IDUxMjsK KworLyogaGFzaCB0YWJsZSBlbnRyZXMgKi8KK3R5cGVkZWYgc3RydWN0IFdhaXRFdmVudEV4dGVu c2lvbk5hbWVFbnRyeQoreworCXVpbnQxNglldmVudF9pZDsJLyogaGFzaCBrZXkgKi8KKwljaGFy CXdhaXRfZXZlbnRfbmFtZVtOQU1FREFUQUxFTl07IC8qIGN1c3RvbSB3YWl0IGV2ZW50IG5hbWUg Ki8KK30gV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZUVudHJ5OworCit0eXBlZGVmIHN0cnVjdCBXYWl0 RXZlbnRFeHRlbnNpb25JZEVudHJ5Cit7CisJY2hhcgl3YWl0X2V2ZW50X25hbWVbTkFNRURBVEFM RU5dOyAvKiBoYXNoIGtleSAqLworCXVpbnQxNglldmVudF9pZDsJLyogd2FpdCBldmVudCBpZCAq LworfSBXYWl0RXZlbnRFeHRlbnNpb25JZEVudHJ5OworCisKIC8qIGR5bmFtaWMgYWxsb2NhdGlv biBjb3VudGVyIGZvciBjdXN0b20gd2FpdCBldmVudHMgaW4gZXh0ZW5zaW9ucyAqLwogdHlwZWRl ZiBzdHJ1Y3QgV2FpdEV2ZW50RXh0ZW5zaW9uQ291bnRlckRhdGEKIHsKQEAgLTU5LDM2ICs5NSwz NSBAQCBzdGF0aWMgV2FpdEV2ZW50RXh0ZW5zaW9uQ291bnRlckRhdGEgKldhaXRFdmVudEV4dGVu c2lvbkNvdW50ZXI7CiAjZGVmaW5lIE5VTV9CVUlMVElOX1dBSVRfRVZFTlRfRVhURU5TSU9OCVwK IAkoV0FJVF9FVkVOVF9FWFRFTlNJT05fRklSU1RfVVNFUl9ERUZJTkVEIC0gV0FJVF9FVkVOVF9F WFRFTlNJT04pCiAKLS8qCi0gKiBUaGlzIGlzIGluZGV4ZWQgYnkgZXZlbnQgSUQgbWludXMgTlVN X0JVSUxUSU5fV0FJVF9FVkVOVF9FWFRFTlNJT04sIGFuZAotICogc3RvcmVzIHRoZSBuYW1lcyBv ZiBhbGwgZHluYW1pY2FsbHktY3JlYXRlZCBldmVudCBJRHMga25vd24gdG8gdGhlIGN1cnJlbnQK LSAqIHByb2Nlc3MuICBBbnkgdW51c2VkIGVudHJpZXMgaW4gdGhlIGFycmF5IHdpbGwgY29udGFp biBOVUxMLgotICovCi1zdGF0aWMgY29uc3QgY2hhciAqKldhaXRFdmVudEV4dGVuc2lvbk5hbWVz ID0gTlVMTDsKLXN0YXRpYyBpbnQJV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZXNBbGxvY2F0ZWQgPSAw OwotCiBzdGF0aWMgY29uc3QgY2hhciAqR2V0V2FpdEV2ZW50RXh0ZW5zaW9uSWRlbnRpZmllcih1 aW50MTYgZXZlbnRJZCk7CiAKIC8qCi0gKiAgUmV0dXJuIHRoZSBzcGFjZSBmb3IgZHluYW1pYyBh bGxvY2F0aW9uIGNvdW50ZXIuCisgKiAgUmV0dXJuIHRoZSBzcGFjZSBmb3IgZHluYW1pYyBzaGFy ZWQgaGFzaCB0YWJsZXMgYW5kIGR5bmFtaWMgYWxsb2NhdGlvbiBjb3VudGVyLgogICovCiBTaXpl CiBXYWl0RXZlbnRFeHRlbnNpb25TaG1lbVNpemUodm9pZCkKIHsKLQlyZXR1cm4gc2l6ZW9mKFdh aXRFdmVudEV4dGVuc2lvbkNvdW50ZXJEYXRhKTsKKwlTaXplCXN6OworCXN6ID0gTUFYQUxJR04o c2l6ZW9mKFdhaXRFdmVudEV4dGVuc2lvbkNvdW50ZXJEYXRhKSk7CisJc3ogPSBhZGRfc2l6ZShz eiwgaGFzaF9lc3RpbWF0ZV9zaXplKHdlZV9oYXNoX2luaXRfc2l6ZSwKKwkJCQkJCQkJCQlzaXpl b2YoV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZUVudHJ5KSkpOworCXN6ID0gYWRkX3NpemUoc3osIGhh c2hfZXN0aW1hdGVfc2l6ZSh3ZWVfaGFzaF9pbml0X3NpemUsCisJCQkJCQkJCQkJc2l6ZW9mKFdh aXRFdmVudEV4dGVuc2lvbklkRW50cnkpKSk7CisJcmV0dXJuIHN6OwogfQogCiAvKgotICogQWxs b2NhdGUgc2htZW0gc3BhY2UgZm9yIGR5bmFtaWMgYWxsb2NhdGlvbiBjb3VudGVyLgorICogQWxs b2NhdGUgc2htZW0gc3BhY2UgZm9yIGR5bmFtaWMgc2hhcmVkIGhhc2ggYW5kIGR5bmFtaWMgYWxs b2NhdGlvbiBjb3VudGVyLgogICovCiB2b2lkCiBXYWl0RXZlbnRFeHRlbnNpb25TaG1lbUluaXQo dm9pZCkKIHsKIAlib29sCQlmb3VuZDsKKwlIQVNIQ1RMCQlpbmZvOwogCiAJV2FpdEV2ZW50RXh0 ZW5zaW9uQ291bnRlciA9IChXYWl0RXZlbnRFeHRlbnNpb25Db3VudGVyRGF0YSAqKQogCQlTaG1l bUluaXRTdHJ1Y3QoIldhaXRFdmVudEV4dGVuc2lvbkNvdW50ZXJEYXRhIiwKLQkJCQkJCVdhaXRF dmVudEV4dGVuc2lvblNobWVtU2l6ZSgpLCAmZm91bmQpOworCQkJCQkJTUFYQUxJR04oc2l6ZW9m KFdhaXRFdmVudEV4dGVuc2lvbkNvdW50ZXJEYXRhKSksICZmb3VuZCk7CiAKIAlpZiAoIWZvdW5k KQogCXsKQEAgLTk2LDIxICsxMzEsNjMgQEAgV2FpdEV2ZW50RXh0ZW5zaW9uU2htZW1Jbml0KHZv aWQpCiAJCVdhaXRFdmVudEV4dGVuc2lvbkNvdW50ZXItPm5leHRJZCA9IE5VTV9CVUlMVElOX1dB SVRfRVZFTlRfRVhURU5TSU9OOwogCQlTcGluTG9ja0luaXQoJldhaXRFdmVudEV4dGVuc2lvbkNv dW50ZXItPm11dGV4KTsKIAl9CisKKwkvKiBpbml0aWFsaXplIG9yIGF0YXRjaCB0aGUgaGFzaCB0 YWJsZXMgdG8gc3RvcmUgY3VzdG9tIHdhaXQgZXZlbnRzICovCisJaW5mby5rZXlzaXplID0gc2l6 ZW9mKHVpbnQxNik7CisJaW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50RXh0ZW5zaW9u TmFtZUVudHJ5KTsKKwlXYWl0RXZlbnRFeHRlbnNpb25OYW1lSGFzaCA9IFNobWVtSW5pdEhhc2go IldhaXQgRXZlbnQgRXh0ZW5zaW9uIG5hbWUgaGFzaCIsCisJCQkJCXdlZV9oYXNoX2luaXRfc2l6 ZSwKKwkJCQkJd2VlX2hhc2hfbWF4X3NpemUsCisJCQkJCSZpbmZvLAorCQkJCQlIQVNIX0VMRU0g fCBIQVNIX0JMT0JTKTsKKworCWluZm8ua2V5c2l6ZSA9IHNpemVvZihjaGFyW05BTUVEQVRBTEVO XSk7CisJaW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50RXh0ZW5zaW9uSWRFbnRyeSk7 CisJV2FpdEV2ZW50RXh0ZW5zaW9uSWRIYXNoID0gU2htZW1Jbml0SGFzaCgiV2FpdCBFdmVudCBF eHRlbnNpb24gaWQgaGFzaCIsCisJCQkJCXdlZV9oYXNoX2luaXRfc2l6ZSwKKwkJCQkJd2VlX2hh c2hfbWF4X3NpemUsCisJCQkJCSZpbmZvLAorCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsK IH0KIAogLyoKLSAqIEFsbG9jYXRlIGEgbmV3IGV2ZW50IElEIGFuZCByZXR1cm4gdGhlIHdhaXQg ZXZlbnQuCisgKiBBbGxvY2F0ZSBhIG5ldyBldmVudCBJRCBhbmQgcmV0dXJuIHRoZSB3YWl0IGV2 ZW50IGluZm8uCisgKgorICogSWYgdGhlIHdhaXQgZXZlbnQgbmFtZSBpcyBhbHJlYWR5IGRlZmlu ZWQsIHRoaXMgZG9uJ3QKKyAqIGFsbG9jYXRlIG5ldyBvbmUsIGJ1dCBpdCByZXR1cm4gdGhlIHdh aXQgZXZlbnQgaW5mbworICogYXNzb2NpYXRlZCB0byB0aGUgbmFtZS4KICAqLwogdWludDMyCi1X YWl0RXZlbnRFeHRlbnNpb25OZXcodm9pZCkKK1dhaXRFdmVudEV4dGVuc2lvbk5ldyhjb25zdCBj aGFyICp3YWl0X2V2ZW50X25hbWUpCiB7CiAJdWludDE2CQlldmVudElkOworCWJvb2wJCWZvdW5k OworCVdhaXRFdmVudEV4dGVuc2lvbklkRW50cnkJKmlkX2VudHJ5OworCVdhaXRFdmVudEV4dGVu c2lvbk5hbWVFbnRyeQkqbmFtZV9lbnRyeTsKIAogCUFzc2VydChMV0xvY2tIZWxkQnlNZUluTW9k ZShBZGRpblNobWVtSW5pdExvY2ssIExXX0VYQ0xVU0lWRSkpOwogCisJLyogQ2hlY2sgdGhlIGxp bWl0IG9mIHRoZSBsZW5ndGggb2YgdGhlIGV2ZW50IG5hbWUgKi8KKwlpZiAoc3RybGVuKHdhaXRf ZXZlbnRfbmFtZSkgPj0gTkFNRURBVEFMRU4pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAorCQkJCWVycm1zZygid2FpdCBldmVu dCBuYW1lIGlzIHRvbyBsb25nIikpOworCisJLyoKKwkgKiBGaXJzdCwgY2hlY2sgdGhlIHdhaXQg ZXZlbnQgaW5mbyBhc3NvY2lhdGVkIHRvIHRoZSBuYW1lIGlzCisJICogYWxyZWFkeSBkZWZpbmVk LiBSZXR1cm4gaXQgaWYgc28uCisJICovCisJTFdMb2NrQWNxdWlyZShXYWl0RXZlbnRFeHRlbnNp b25Mb2NrLCBMV19TSEFSRUQpOworCWlkX2VudHJ5ID0gKFdhaXRFdmVudEV4dGVuc2lvbklkRW50 cnkgKikKKwkJCQloYXNoX3NlYXJjaChXYWl0RXZlbnRFeHRlbnNpb25JZEhhc2gsICZ3YWl0X2V2 ZW50X25hbWUsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlMV0xvY2tSZWxlYXNlKFdhaXRFdmVudEV4 dGVuc2lvbkxvY2spOworCWlmIChmb3VuZCkKKwkJcmV0dXJuIFBHX1dBSVRfRVhURU5TSU9OIHwg aWRfZW50cnktPmV2ZW50X2lkOworCisJLyogQWxsb2NhdGUgYSBuZXcgZXZlbnQgSWQgKi8KIAlT cGluTG9ja0FjcXVpcmUoJldhaXRFdmVudEV4dGVuc2lvbkNvdW50ZXItPm11dGV4KTsKIAotCWlm IChXYWl0RXZlbnRFeHRlbnNpb25Db3VudGVyLT5uZXh0SWQgPiBQR19VSU5UMTZfTUFYKQorCWlm IChXYWl0RXZlbnRFeHRlbnNpb25Db3VudGVyLT5uZXh0SWQgPj0gd2VlX2hhc2hfbWF4X3NpemUp CiAJewogCQlTcGluTG9ja1JlbGVhc2UoJldhaXRFdmVudEV4dGVuc2lvbkNvdW50ZXItPm11dGV4 KTsKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTEyMiw2NCArMTk5LDIyIEBAIFdhaXRFdmVudEV4dGVu c2lvbk5ldyh2b2lkKQogCiAJU3BpbkxvY2tSZWxlYXNlKCZXYWl0RXZlbnRFeHRlbnNpb25Db3Vu dGVyLT5tdXRleCk7CiAKLQlyZXR1cm4gUEdfV0FJVF9FWFRFTlNJT04gfCBldmVudElkOwotfQor CS8qIFJlZ2lzdGVyIHRoZSBuZXcgY3VzdG9tIHdhaXQgZXZlbnQgaW4gdGhlIHNoYXJlZCBoYXNo IHRhYmxlICovCisJTFdMb2NrQWNxdWlyZShXYWl0RXZlbnRFeHRlbnNpb25Mb2NrLCBMV19FWENM VVNJVkUpOwogCi0vKgotICogUmVnaXN0ZXIgYSBkeW5hbWljIHdhaXQgZXZlbnQgbmFtZSBmb3Ig ZXh0ZW5zaW9uIGluIHRoZSBsb29rdXAgdGFibGUKLSAqIG9mIHRoZSBjdXJyZW50IHByb2Nlc3Mu Ci0gKgotICogVGhpcyByb3V0aW5lIHdpbGwgc2F2ZSBhIHBvaW50ZXIgdG8gdGhlIHdhaXQgZXZl bnQgbmFtZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQsCi0gKiBzbyB0aGUgbmFtZSBzaG91bGQgYmUg YWxsb2NhdGVkIGluIGEgYmFja2VuZC1saWZldGltZSBjb250ZXh0Ci0gKiAoc2hhcmVkIG1lbW9y eSwgVG9wTWVtb3J5Q29udGV4dCwgc3RhdGljIGNvbnN0YW50LCBvciBzaW1pbGFyKS4KLSAqCi0g KiBUaGUgIndhaXRfZXZlbnRfbmFtZSIgd2lsbCBiZSB1c2VyLXZpc2libGUgYXMgYSB3YWl0IGV2 ZW50IG5hbWUsIHNvIHRyeSB0bwotICogdXNlIGEgbmFtZSB0aGF0IGZpdHMgdGhlIHN0eWxlIGZv ciB0aG9zZS4KLSAqLwotdm9pZAotV2FpdEV2ZW50RXh0ZW5zaW9uUmVnaXN0ZXJOYW1lKHVpbnQz MiB3YWl0X2V2ZW50X2luZm8sCi0JCQkJCQkJICAgY29uc3QgY2hhciAqd2FpdF9ldmVudF9uYW1l KQotewotCXVpbnQzMgkJY2xhc3NJZDsKLQl1aW50MTYJCWV2ZW50SWQ7CisJbmFtZV9lbnRyeSA9 IChXYWl0RXZlbnRFeHRlbnNpb25OYW1lRW50cnkgKikKKwkJCQloYXNoX3NlYXJjaChXYWl0RXZl bnRFeHRlbnNpb25OYW1lSGFzaCwgJmV2ZW50SWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJQXNz ZXJ0KCFmb3VuZCk7CisJc3RybGNweShuYW1lX2VudHJ5LT53YWl0X2V2ZW50X25hbWUsIHdhaXRf ZXZlbnRfbmFtZSwgc2l6ZW9mKG5hbWVfZW50cnktPndhaXRfZXZlbnRfbmFtZSkpOwogCi0JY2xh c3NJZCA9IHdhaXRfZXZlbnRfaW5mbyAmIFdBSVRfRVZFTlRfQ0xBU1NfTUFTSzsKLQlldmVudElk ID0gd2FpdF9ldmVudF9pbmZvICYgV0FJVF9FVkVOVF9JRF9NQVNLOworCWlkX2VudHJ5ID0gKFdh aXRFdmVudEV4dGVuc2lvbklkRW50cnkgKikKKwkJCQloYXNoX3NlYXJjaChXYWl0RXZlbnRFeHRl bnNpb25JZEhhc2gsICZ3YWl0X2V2ZW50X25hbWUsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJQXNz ZXJ0KCFmb3VuZCk7CisJaWRfZW50cnktPmV2ZW50X2lkID0gZXZlbnRJZDsKIAotCS8qIENoZWNr IHRoZSB3YWl0IGV2ZW50IGNsYXNzLiAqLwotCWlmIChjbGFzc0lkICE9IFBHX1dBSVRfRVhURU5T SU9OKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCi0JCQkJZXJybXNnKCJpbnZhbGlkIHdhaXQgZXZlbnQgY2xhc3MgJXUiLCBj bGFzc0lkKSk7CisJTFdMb2NrUmVsZWFzZShXYWl0RXZlbnRFeHRlbnNpb25Mb2NrKTsKIAotCS8q IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciB1c2VyLWRlZmluZWQgd2FpdCBldmVudC4g Ki8KLQlpZiAoZXZlbnRJZCA8IE5VTV9CVUlMVElOX1dBSVRfRVZFTlRfRVhURU5TSU9OKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCi0JCQkJZXJybXNnKCJpbnZhbGlkIHdhaXQgZXZlbnQgSUQgJXUiLCBldmVudElkKSk7Ci0K LQkvKiBDb252ZXJ0IHRvIGFycmF5IGluZGV4LiAqLwotCWV2ZW50SWQgLT0gTlVNX0JVSUxUSU5f V0FJVF9FVkVOVF9FWFRFTlNJT047Ci0KLQkvKiBJZiBuZWNlc3NhcnksIGNyZWF0ZSBvciBlbmxh cmdlIGFycmF5LiAqLwotCWlmIChldmVudElkID49IFdhaXRFdmVudEV4dGVuc2lvbk5hbWVzQWxs b2NhdGVkKQotCXsKLQkJdWludDMyCQluZXdhbGxvYzsKLQotCQluZXdhbGxvYyA9IHBnX25leHRw b3dlcjJfMzIoTWF4KDgsIGV2ZW50SWQgKyAxKSk7Ci0KLQkJaWYgKFdhaXRFdmVudEV4dGVuc2lv bk5hbWVzID09IE5VTEwpCi0JCQlXYWl0RXZlbnRFeHRlbnNpb25OYW1lcyA9IChjb25zdCBjaGFy ICoqKQotCQkJCU1lbW9yeUNvbnRleHRBbGxvY1plcm8oVG9wTWVtb3J5Q29udGV4dCwKLQkJCQkJ CQkJCSAgIG5ld2FsbG9jICogc2l6ZW9mKGNoYXIgKikpOwotCQllbHNlCi0JCQlXYWl0RXZlbnRF eHRlbnNpb25OYW1lcyA9Ci0JCQkJcmVwYWxsb2MwX2FycmF5KFdhaXRFdmVudEV4dGVuc2lvbk5h bWVzLCBjb25zdCBjaGFyICosCi0JCQkJCQkJCVdhaXRFdmVudEV4dGVuc2lvbk5hbWVzQWxsb2Nh dGVkLCBuZXdhbGxvYyk7Ci0JCVdhaXRFdmVudEV4dGVuc2lvbk5hbWVzQWxsb2NhdGVkID0gbmV3 YWxsb2M7Ci0JfQotCi0JV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZXNbZXZlbnRJZF0gPSB3YWl0X2V2 ZW50X25hbWU7CisJcmV0dXJuIFBHX1dBSVRfRVhURU5TSU9OIHwgZXZlbnRJZDsKIH0KIAogLyoK QEAgLTE4OCwyMyArMjIzLDI4IEBAIFdhaXRFdmVudEV4dGVuc2lvblJlZ2lzdGVyTmFtZSh1aW50 MzIgd2FpdF9ldmVudF9pbmZvLAogc3RhdGljIGNvbnN0IGNoYXIgKgogR2V0V2FpdEV2ZW50RXh0 ZW5zaW9uSWRlbnRpZmllcih1aW50MTYgZXZlbnRJZCkKIHsKKwlib29sIGZvdW5kOworCVdhaXRF dmVudEV4dGVuc2lvbk5hbWVFbnRyeQkqZW50cnk7CisKIAkvKiBCdWlsdC1pbiBldmVudD8gKi8K IAlpZiAoZXZlbnRJZCA8IE5VTV9CVUlMVElOX1dBSVRfRVZFTlRfRVhURU5TSU9OKQogCQlyZXR1 cm4gIkV4dGVuc2lvbiI7CiAKKwkvKiBJdCBpcyBhIHVzZXItZGVmaW5lZCB3YWl0IGV2ZW50LCBz byBsb29rdXAgaGFzaCB0YWJsZS4gKi8KKwlMV0xvY2tBY3F1aXJlKFdhaXRFdmVudEV4dGVuc2lv bkxvY2ssIExXX1NIQVJFRCk7CisJZW50cnkgPSAoV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZUVudHJ5 ICopCisJCQkJaGFzaF9zZWFyY2goV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZUhhc2gsICZldmVudElk LCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJTFdMb2NrUmVsZWFzZShXYWl0RXZlbnRFeHRlbnNpb25M b2NrKTsKKwogCS8qCi0JICogSXQgaXMgYSB1c2VyLWRlZmluZWQgd2FpdCBldmVudCwgc28gbG9v ayBhdCBXYWl0RXZlbnRFeHRlbnNpb25OYW1lc1tdLgotCSAqIEhvd2V2ZXIsIGl0IGlzIHBvc3Np YmxlIHRoYXQgdGhlIG5hbWUgaGFzIG5ldmVyIGJlZW4gcmVnaXN0ZXJlZCBieQotCSAqIGNhbGxp bmcgV2FpdEV2ZW50RXh0ZW5zaW9uUmVnaXN0ZXJOYW1lKCkgaW4gdGhlIGN1cnJlbnQgcHJvY2Vz cywgaW4KLQkgKiB3aGljaCBjYXNlIGdpdmUgdXAgYW5kIHJldHVybiAiZXh0ZW5zaW9uIi4KKwkg KiBUaGUgZW50cnkgbXVzdCBiZSBzdG9yZWQgYmVjYXVzZSBpdCdzIHJlZ2lzdGVyZWQgaW4KKwkg KiBXYWl0RXZlbnRFeHRlbnNpb25OZXcoKS4KIAkgKi8KLQlldmVudElkIC09IE5VTV9CVUlMVElO X1dBSVRfRVZFTlRfRVhURU5TSU9OOwotCi0JaWYgKGV2ZW50SWQgPj0gV2FpdEV2ZW50RXh0ZW5z aW9uTmFtZXNBbGxvY2F0ZWQgfHwKLQkJV2FpdEV2ZW50RXh0ZW5zaW9uTmFtZXNbZXZlbnRJZF0g PT0gTlVMTCkKLQkJcmV0dXJuICJleHRlbnNpb24iOworCWlmICghZW50cnkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJybXNnKCJjb3VsZCBub3QgZmluZCB0aGUgbmFtZSBmb3IgY3VzdG9tIHdh aXQgZXZlbnQgSUQgJXUiLCBldmVudElkKSk7CiAKLQlyZXR1cm4gV2FpdEV2ZW50RXh0ZW5zaW9u TmFtZXNbZXZlbnRJZF07CisJcmV0dXJuIGVudHJ5LT53YWl0X2V2ZW50X25hbWU7CiB9CiAKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IGFhZDhiYzA4ZmEuLjUxYTBiODNiNzkgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmgKQEAgLTQ0LDEyICs0NCwxMyBAQCBleHRlcm4gUEdETExJTVBPUlQgdWlu dDMyICpteV93YWl0X2V2ZW50X2luZm87CiAgKiBVc2UgdGhpcyBjYXRlZ29yeSB3aGVuIHRoZSBz ZXJ2ZXIgcHJvY2VzcyBpcyB3YWl0aW5nIGZvciBzb21lIGNvbmRpdGlvbgogICogZGVmaW5lZCBi eSBhbiBleHRlbnNpb24gbW9kdWxlLgogICoKLSAqIEV4dGVuc2lvbnMgY2FuIGRlZmluZSB0aGVp ciBvd24gd2FpdCBldmVudHMgaW4gdGhpcyBjYXRlZ29yeS4gIEZpcnN0LAotICogdGhleSBzaG91 bGQgY2FsbCBXYWl0RXZlbnRFeHRlbnNpb25OZXcoKSB0byBnZXQgb25lIG9yIG1vcmUgd2FpdCBl dmVudAotICogSURzIHRoYXQgYXJlIGFsbG9jYXRlZCBmcm9tIGEgc2hhcmVkIGNvdW50ZXIuICBU aGVzZSBjYW4gYmUgdXNlZCBkaXJlY3RseQotICogd2l0aCBwZ3N0YXRfcmVwb3J0X3dhaXRfc3Rh cnQoKSBvciBlcXVpdmFsZW50LiAgTmV4dCwgZWFjaCBpbmRpdmlkdWFsCi0gKiBwcm9jZXNzIHNo b3VsZCBjYWxsIFdhaXRFdmVudEV4dGVuc2lvblJlZ2lzdGVyTmFtZSgpIHRvIGFzc29jaWF0ZSBh IHdhaXQKLSAqIGV2ZW50IHN0cmluZyB0byB0aGUgbnVtYmVyIGFsbG9jYXRlZCBwcmV2aW91c2x5 LgorICogRXh0ZW5zaW9ucyBjYW4gZGVmaW5lIHRoZWlyIG93biB3YWl0IGV2ZW50cyBpbiB0aGlz IGNhdGVnb3J5LiBUaGV5IHNob3VsZAorICogY2FsbCBXYWl0RXZlbnRFeHRlbnNpb25OZXcoKSB3 aXRoIGEgd2FpdCBldmVudCBzdHJpbmcuIElmIHRoZSB3YWl0IGV2ZW50CisgKiBhc3NvY2lhdGVk IHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBhbGxvY2F0ZWQsIGl0IHJldHVybnMgdGhlIHdhaXQgZXZl bnQgaW5mby4KKyAqIElmIG5vdCwgaXQgd2lsbCBnZXQgb25lIHdhaXQgZXZlbnQgSUQgdGhhdCBp cyBhbGxvY2F0ZWQgZnJvbSBhIHNoYXJlZCBjb3VudGVyLAorICogYXNzb2NpYXRlIHRoZSBzdHJp bmcgdG8gdGhlIG51bWJlciBpbiB0aGUgc2hhcmVkIGR5bmFtaWMgaGFzaCBhbmQgcmV0dXJuIHRo ZQorICogd2FpdCBldmVudCBpbmZvLiBUaGUgc3RyaW5nIGNhbiBiZSB1c2VkIGRpcmVjdGx5IHdp dGggcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KCkKKyAqIG9yIGVxdWl2YWxlbnQuCiAgKi8KIHR5 cGVkZWYgZW51bQogewpAQCAtNjAsOSArNjEsNyBAQCB0eXBlZGVmIGVudW0KIGV4dGVybiB2b2lk IFdhaXRFdmVudEV4dGVuc2lvblNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiBTaXplIFdhaXRFdmVu dEV4dGVuc2lvblNobWVtU2l6ZSh2b2lkKTsKIAotZXh0ZXJuIHVpbnQzMiBXYWl0RXZlbnRFeHRl bnNpb25OZXcodm9pZCk7Ci1leHRlcm4gdm9pZCBXYWl0RXZlbnRFeHRlbnNpb25SZWdpc3Rlck5h bWUodWludDMyIHdhaXRfZXZlbnRfaW5mbywKLQkJCQkJCQkJCQkgICBjb25zdCBjaGFyICp3YWl0 X2V2ZW50X25hbWUpOworZXh0ZXJuIHVpbnQzMiBXYWl0RXZlbnRFeHRlbnNpb25OZXcoY29uc3Qg Y2hhciAqd2FpdF9ldmVudF9uYW1lKTsKIAogLyogLS0tLS0tLS0tLQogICogcGdzdGF0X3JlcG9y dF93YWl0X3N0YXJ0KCkgLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3Bp L3QvMDAxX3dvcmtlcl9zcGkucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvdC8wMDFf d29ya2VyX3NwaS5wbAppbmRleCBjM2U3ZjVmYmU2Li4yNmI4YTQ5YmVjIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvdC8wMDFfd29ya2VyX3NwaS5wbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvdC8wMDFfd29ya2VyX3NwaS5wbApAQCAtMzksMjUgKzM5 LDExIEBAICRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAkcmVzdWx0ID0gJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUICogRlJPTSBzY2hlbWE0LmNvdW50ZWQ7 Jyk7CiBpcygkcmVzdWx0LCBxcSh0b3RhbHwxKSwgJ2R5bmFtaWMgYmd3b3JrZXIgY29ycmVjdGx5 IGNvbnN1bWVkIHR1cGxlIGRhdGEnKTsKIAotIyBDaGVjayB0aGUgd2FpdCBldmVudCB1c2VkIGJ5 IHRoZSBkeW5hbWljIGJnd29ya2VyLiAgRm9yIGEgc2Vzc2lvbiB3aXRob3V0Ci0jIHRoZSBzdGF0 ZSBpbiBzaGFyZWQgbWVtb3J5IGtub3duLCB0aGUgZGVmYXVsdCBvZiAiZXh0ZW5zaW9uIiBpcyB0 aGUgdmFsdWUKLSMgd2FpdGVkIG9uLgorIyBDaGVjayB0aGUgd2FpdCBldmVudCB1c2VkIGJ5IHRo ZSBkeW5hbWljIGJnd29ya2VyLgogJHJlc3VsdCA9ICRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAog CSdwb3N0Z3JlcycsCiAJcXFbU0VMRUNUIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5 IFdIRVJFIGJhY2tlbmRfdHlwZSB+ICd3b3JrZXJfc3BpJztdLAotCSdleHRlbnNpb24nKTsKLWlz KCRyZXN1bHQsIDEsICdkeW5hbWljIGJnd29ya2VyIGhhcyByZXBvcnRlZCAiZXh0ZW5zaW9uIiBh cyB3YWl0IGV2ZW50Jyk7Ci0KLSMgSWYgdGhlIHNoYXJlZCBtZW1vcnkgc3RhdGUgaXMgbG9hZGVk IChoZXJlIHdpdGggd29ya2VyX3NwaV9pbml0IHdpdGhpbgotIyB0aGUgc2FtZSBjb25uZWN0aW9u IGFzIHRoZSBvbmUgcXVlcnlpbmcgcGdfc3RhdF9hY3Rpdml0eSksIHRoZSB3YWl0Ci0jIGV2ZW50 IGlzIHRoZSBjdXN0b20gb25lLgotIyBUaGUgZXhwZWN0ZWQgcmVzdWx0IGlzIGEgc3BlY2lhbCBw YXR0ZXJuIGhlcmUgd2l0aCBhIG5ld2xpbmUgY29taW5nIGZyb20gdGhlCi0jIGZpcnN0IHF1ZXJ5 IHdoZXJlIHRoZSBzaGFyZWQgbWVtb3J5IHN0YXRlIGlzIHNldC4KLSRyZXN1bHQgPSAkbm9kZS0+ cG9sbF9xdWVyeV91bnRpbCgKLQkncG9zdGdyZXMnLAotCXFxW1NFTEVDVCB3b3JrZXJfc3BpX2lu aXQoKTsgU0VMRUNUIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIGJhY2tl bmRfdHlwZSB+ICd3b3JrZXJfc3BpJztdLAotCXFxWwotd29ya2VyX3NwaV9tYWluXSk7CisJcXFb d29ya2VyX3NwaV9tYWluXSk7CiBpcygkcmVzdWx0LCAxLAogCSdkeW5hbWljIGJnd29ya2VyIGhh cyByZXBvcnRlZCAid29ya2VyX3NwaV9tYWluIiBhcyB3YWl0IGV2ZW50Jyk7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLS0xLjAuc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGktLTEuMC5zcWwKaW5kZXggZjEzZjdl MGY5OC4uZTlkNWIwNzM3MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3Bp L3dvcmtlcl9zcGktLTEuMC5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dv cmtlcl9zcGktLTEuMC5zcWwKQEAgLTcsOCArNywzIEBAIENSRUFURSBGVU5DVElPTiB3b3JrZXJf c3BpX2xhdW5jaChwZ19jYXRhbG9nLmludDQpCiBSRVRVUk5TIHBnX2NhdGFsb2cuaW50NCBTVFJJ Q1QKIEFTICdNT0RVTEVfUEFUSE5BTUUnCiBMQU5HVUFHRSBDOwotCi1DUkVBVEUgRlVOQ1RJT04g d29ya2VyX3NwaV9pbml0KCkKLVJFVFVSTlMgVk9JRCBTVFJJQ1QKLUFTICdNT0RVTEVfUEFUSE5B TUUnCi1MQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3Bp L3dvcmtlcl9zcGkuYyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMK aW5kZXggYzQzMTczNTFjZS4uZWUxY2UxM2Q1MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9z cGkvd29ya2VyX3NwaS5jCkBAIC00NCw3ICs0NCw2IEBACiAKIFBHX01PRFVMRV9NQUdJQzsKIAot UEdfRlVOQ1RJT05fSU5GT19WMSh3b3JrZXJfc3BpX2luaXQpOwogUEdfRlVOQ1RJT05fSU5GT19W MSh3b3JrZXJfc3BpX2xhdW5jaCk7CiAKIFBHRExMRVhQT1JUIHZvaWQgd29ya2VyX3NwaV9tYWlu KERhdHVtIG1haW5fYXJnKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKQEAgLTEyNCwxNCArMTIz LDEwIEBAIHdvcmtlcl9zcGlfc2htZW1faW5pdCh2b2lkKQogCiAJLyogRGVmaW5lIGEgbmV3IHdh aXQgZXZlbnQgKi8KIAlpZiAoIWZvdW5kKQotCQl3c3N0YXRlLT53YWl0X2V2ZW50ID0gV2FpdEV2 ZW50RXh0ZW5zaW9uTmV3KCk7CisJCXdzc3RhdGUtPndhaXRfZXZlbnQgPSBXYWl0RXZlbnRFeHRl bnNpb25OZXcoIndvcmtlcl9zcGlfbWFpbiIpOwogCiAJTFdMb2NrUmVsZWFzZShBZGRpblNobWVt SW5pdExvY2spOwogCi0JLyoKLQkgKiBSZWdpc3RlciB0aGUgd2FpdCBldmVudCBpbiB0aGUgbG9v a3VwIHRhYmxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuCi0JICovCi0JV2FpdEV2ZW50RXh0ZW5z aW9uUmVnaXN0ZXJOYW1lKHdzc3RhdGUtPndhaXRfZXZlbnQsICJ3b3JrZXJfc3BpX21haW4iKTsK IAlyZXR1cm47CiB9CiAKQEAgLTQzNCwyMSArNDI5LDYgQEAgX1BHX2luaXQodm9pZCkKIAl9CiB9 CiAKLS8qCi0gKiBXcmFwcGVyIHRvIGluaXRpYWxpemUgYSBzZXNzaW9uIHdpdGggdGhlIHNoYXJl ZCBtZW1vcnkgc3RhdGUKLSAqIHVzZWQgYnkgdGhpcyBtb2R1bGUuICBUaGlzIGlzIGEgY29udmVu aWVuY2Ugcm91dGluZSB0byBiZSBhYmxlIHRvCi0gKiBzZWUgdGhlIGN1c3RvbSB3YWl0IGV2ZW50 IHN0b3JlZCBpbiBzaGFyZWQgbWVtb3J5IHdpdGhvdXQgbG9hZGluZwotICogdGhyb3VnaCBzaGFy ZWRfcHJlbG9hZF9saWJyYXJpZXMuCi0gKi8KLURhdHVtCi13b3JrZXJfc3BpX2luaXQoUEdfRlVO Q1RJT05fQVJHUykKLXsKLQkvKiBDcmVhdGUgKGlmIG5lY2Vzc2FyeSkgYW5kIGF0dGFjaCB0byBv dXIgc2hhcmVkIG1lbW9yeSBhcmVhLiAqLwotCXdvcmtlcl9zcGlfc2htZW1faW5pdCgpOwotCi0J UEdfUkVUVVJOX1ZPSUQoKTsKLX0KLQogLyoKICAqIER5bmFtaWNhbGx5IGxhdW5jaCBhbiBTUEkg d29ya2VyLgogICovCi0tIAoyLjI1LjEKCg== --=_74fa1ca798c90a7566ad89bc1c04d8a1 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0002-poc-custom-wait-event-for-dblink.patch Content-Disposition: attachment; filename=v2-0002-poc-custom-wait-event-for-dblink.patch; size=1302 RnJvbSAxM2JmYTMwZDgwNGQ4NDUwMmZkNWRlNDBjOWFiNzM1ODY5YTczMWQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXNhaGlybyBJa2VkYSA8bXNoci5pa2VkYUBudHQuY29tPgpE YXRlOiBXZWQsIDkgQXVnIDIwMjMgMTk6NDA6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIIDIvMl0g cG9jOiBjdXN0b20gd2FpdCBldmVudCBmb3IgZGJsaW5rCgotLS0KIGNvbnRyaWIvZGJsaW5rL2Ri bGluay5jIHwgMTAgKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29u dHJpYi9kYmxpbmsvZGJsaW5rLmMKaW5kZXggNDFlMWY2YzkxZC4uMWIzZGQzNzM2YSAxMDA2NDQK LS0tIGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKKysrIGIvY29udHJpYi9kYmxpbmsvZGJsaW5r LmMKQEAgLTEyOSw2ICsxMjksNyBAQCBzdGF0aWMgdm9pZCByZXN0b3JlTG9jYWxHdWNzKGludCBu ZXN0bGV2ZWwpOwogLyogR2xvYmFsICovCiBzdGF0aWMgcmVtb3RlQ29ubiAqcGNvbm4gPSBOVUxM Owogc3RhdGljIEhUQUIgKnJlbW90ZUNvbm5IYXNoID0gTlVMTDsKK3N0YXRpYyB1aW50MzIgKndh aXRfZXZlbnRfaW5mbyA9IE5VTEw7CiAKIC8qCiAgKglGb2xsb3dpbmcgaXMgbGlzdCB0aGF0IGhv bGRzIG11bHRpcGxlIHJlbW90ZSBjb25uZWN0aW9ucy4KQEAgLTIwMyw3ICsyMDQsMTQgQEAgZGJs aW5rX2dldF9jb25uKGNoYXIgKmNvbm5hbWVfb3Jfc3RyLAogCQlkYmxpbmtfY29ubnN0cl9jaGVj ayhjb25uc3RyKTsKIAogCQkvKiBPSyB0byBtYWtlIGNvbm5lY3Rpb24gKi8KLQkJY29ubiA9IGxp YnBxc3J2X2Nvbm5lY3QoY29ubnN0ciwgV0FJVF9FVkVOVF9FWFRFTlNJT04pOworCQlpZiAod2Fp dF9ldmVudF9pbmZvID09IE5VTEwpCisJCXsKKwkJCXdhaXRfZXZlbnRfaW5mbyA9ICh1aW50MzIg KikgTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsIHNpemVvZih1aW50MzIpKTsK KwkJCUxXTG9ja0FjcXVpcmUoQWRkaW5TaG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOworCQkJ KndhaXRfZXZlbnRfaW5mbyA9IFdhaXRFdmVudEV4dGVuc2lvbk5ldygiZGJsaW5rX2dldF9jb24i KTsKKwkJCUxXTG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsKKwkJfQorCQljb25uID0g bGlicHFzcnZfY29ubmVjdChjb25uc3RyLCAqd2FpdF9ldmVudF9pbmZvKTsKIAogCQlpZiAoUFFz dGF0dXMoY29ubikgPT0gQ09OTkVDVElPTl9CQUQpCiAJCXsKLS0gCjIuMjUuMQoK --=_74fa1ca798c90a7566ad89bc1c04d8a1--