Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1efN2L-0003Wy-K1 for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Jan 2018 09:44:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1efN2J-0004I1-Tn for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Jan 2018 09:44:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1efN2J-0004Hr-Iz for pgsql-hackers@lists.postgresql.org; Sat, 27 Jan 2018 09:44:35 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1efN2B-00077Z-Bi for pgsql-hackers@postgresql.org; Sat, 27 Jan 2018 09:44:34 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 2792421C1C43; Sat, 27 Jan 2018 12:44:25 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from zilders-MacBook-Pro.local (unknown [94.29.3.222]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id D8C8221C0757; Sat, 27 Jan 2018 12:44:24 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1517046264; bh=LCqpsrEh4PnMRBa1j8qxdhDSs9Tc7aAGQYJq8ZlxjEk=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=dVczKjT8FQXSSOmV77+K5DkpHe5wE1Q3kKRYi/0ikoA4CuXgXWYm/CbqiFTDouRXL R6abLYAbKQTA2tkNQLtMwxhLkZuVVIVH7zTTDcLacLppq16y1ZcOzWhn3ubufZFwBX KfH9PavDufzsvPXnj/ziEPnMSfkvg0ClM9n5P8Ps= Subject: Re: General purpose hashing func in pgbench To: Fabien COELHO Cc: pgsql-hackers References: <0e8bd39e-dfcd-2879-f88f-272799ad7ef2@postgrespro.ru> <38f1503e-7b63-4612-24a9-041af25bb022@postgrespro.ru> <9603bac9-ae5d-36c5-5978-a88bdb700e37@postgrespro.ru> <63f5a6ac-0c5b-8d59-ca8b-fc8e11244a66@postgrespro.ru> <291822a3-0b3a-0b21-c694-c10776f516ac@postgrespro.ru> <6e47c84a-d42a-0e08-1b0d-33e6a6c87778@postgrespro.ru> <960a8096-dde5-5175-7d7c-ef151086cbee@postgrespro.ru> From: Ildar Musin Message-ID: <12986cad-3dd9-a449-e318-4acd8a8e1697@postgrespro.ru> Date: Sat, 27 Jan 2018 12:44:24 +0300 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------6319C75B745F93B17D8604CA" Content-Language: ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------6319C75B745F93B17D8604CA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Hello Fabien, 26/01/2018 09:28, Fabien COELHO пишет: > > Hello Ildar, > > Applies, compiles, runs. > > I still have a few very minor comments, sorry for this (hopefully) > last iteration from my part. I'm kind of iterative... > > The XML documentation source should avoid a paragraph on one very long > line, but rather be indented like other sections. > > I'd propose simplify the second part: > >   Hash functions can be used, for example, to modify the distribution of >   random_zipfian or > random_exponential >   functions in order to obtain scattered distribution. >   Thus the following pgbench script simulates possible real world > workload >   typical for social media and blogging platforms where few accounts >   generate excessive load: > > -> > >   Hash functions can be used to scatter the distribution of random >   functions such as random_zipfian or >   random_exponential. >   For instance, the following pgbench script simulates possible real >   world workload typical for social media and blogging platforms where >   few accounts generate excessive load: > > Comment the Assert(0) as an internal error that cannot happen. > > I'd suggest to compact the execution code by declaring int64 variable > and coerce to int in one go, like the integer bitwise functions. I'm > in favor to keeping them in their own case and not reuse this one. > I did everything you mention here and attached a new version on the patch. Thank you! -- Ildar Musin Postgres Professional: http://www.postgrespro.com Russian Postgres Company --------------6319C75B745F93B17D8604CA Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="pgbench_hash_v10.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pgbench_hash_v10.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9wZ2JlbmNoLnNnbWwKaW5kZXggM2RkNDkyYy4uNTAzZGQ3OSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wZ2JlbmNoLnNnbWwKQEAgLTg3NCwxMyArODc0LDE4IEBAIHBnYmVuY2ggPG9wdGlvbmFs PiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+IDxyZXBs YWNlYWJsZT5kCiAKICAgICAgPHRib2R5PgogICAgICAgPHJvdz4KLSAgICAgICA8ZW50cnk+ IDxsaXRlcmFsPnNjYWxlPC9saXRlcmFsPiA8L2VudHJ5PgotICAgICAgIDxlbnRyeT5jdXJy ZW50IHNjYWxlIGZhY3RvcjwvZW50cnk+CisgICAgICAgPGVudHJ5PiA8bGl0ZXJhbD5jbGll bnRfaWQ8L2xpdGVyYWw+IDwvZW50cnk+CisgICAgICAgPGVudHJ5PnVuaXF1ZSBudW1iZXIg aWRlbnRpZnlpbmcgdGhlIGNsaWVudCBzZXNzaW9uIChzdGFydHMgZnJvbSB6ZXJvKTwvZW50 cnk+CiAgICAgICA8L3Jvdz4KIAogICAgICAgPHJvdz4KLSAgICAgICA8ZW50cnk+IDxsaXRl cmFsPmNsaWVudF9pZDwvbGl0ZXJhbD4gPC9lbnRyeT4KLSAgICAgICA8ZW50cnk+dW5pcXVl IG51bWJlciBpZGVudGlmeWluZyB0aGUgY2xpZW50IHNlc3Npb24gKHN0YXJ0cyBmcm9tIHpl cm8pPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+IDxsaXRlcmFsPmRlZmF1bHRfc2VlZDwvbGl0 ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+cmFuZG9tIHNlZWQgdXNlZCBpbiBoYXNo IGZ1bmN0aW9ucyBieSBkZWZhdWx0PC9lbnRyeT4KKyAgICAgIDwvcm93PgorCisgICAgICA8 cm93PgorICAgICAgIDxlbnRyeT4gPGxpdGVyYWw+c2NhbGU8L2xpdGVyYWw+IDwvZW50cnk+ CisgICAgICAgPGVudHJ5PmN1cnJlbnQgc2NhbGUgZmFjdG9yPC9lbnRyeT4KICAgICAgIDwv cm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgpAQCAtMTI0Niw2ICsxMjUxLDI3 IEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFi bGU+IDwvb3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5kCiAgICAgICAgPGVudHJ5PjxsaXRlcmFs PjU8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDwvcm93PgogICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnk+PGxpdGVyYWw+PGZ1bmN0aW9uPmhhc2goPHJlcGxhY2VhYmxlPmE8L3JlcGxh Y2VhYmxlPiBbLCA8cmVwbGFjZWFibGU+c2VlZDwvcmVwbGFjZWFibGU+IF0gKTwvZnVuY3Rp b24+PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5Pgor ICAgICAgIDxlbnRyeT5hbGlhcyBmb3IgPGxpdGVyYWw+aGFzaF9tdXJtdXIyKCk8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PGxpdGVyYWw+aGFzaCgxMCwgNTQzMik8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PGxpdGVyYWw+LTU4MTc4NzcwODE3Njg3 MjE2NzY8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAg ICAgICA8ZW50cnk+PGxpdGVyYWw+PGZ1bmN0aW9uPmhhc2hfZm52MWEoPHJlcGxhY2VhYmxl PmE8L3JlcGxhY2VhYmxlPiBbLCA8cmVwbGFjZWFibGU+c2VlZDwvcmVwbGFjZWFibGU+IF0g KTwvZnVuY3Rpb24+PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5PmludGVnZXI8 L2VudHJ5PgorICAgICAgIDxlbnRyeT48dWxpbmsgdXJsPSJodHRwczovL2VuLndpa2lwZWRp YS5vcmcvd2lraS9Gb3dsZXIlRTIlODAlOTNOb2xsJUUyJTgwJTkzVm9faGFzaF9mdW5jdGlv biI+Rk5WLTFhIGhhc2g8L3VsaW5rPjwvZW50cnk+CisgICAgICAgPGVudHJ5PjxsaXRlcmFs Pmhhc2hfZm52MWEoMTAsIDU0MzIpPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5 PjxsaXRlcmFsPi03NzkzODI5MzM1MzY1NTQyMTUzPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPjxmdW5jdGlv bj5oYXNoX211cm11cjIoPHJlcGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPiBbLCA8cmVwbGFj ZWFibGU+c2VlZDwvcmVwbGFjZWFibGU+IF0gKTwvZnVuY3Rpb24+PC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorICAgICAgIDxlbnRyeT48dWxp bmsgdXJsPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdXJtdXJIYXNoIj5NdXJt dXJIYXNoMiBoYXNoPC91bGluaz48L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD5o YXNoX211cm11cjIoMTAsIDU0MzIpPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5 PjxsaXRlcmFsPi01ODE3ODc3MDgxNzY4NzIxNjc2PC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8L3Jvdz4KKyAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5PjxsaXRlcmFsPjxmdW5jdGlv bj5pbnQoPHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPik8L2Z1bmN0aW9uPjwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KICAgICAgICA8ZW50 cnk+Y2FzdCB0byBpbnQ8L2VudHJ5PgpAQCAtMTQyMyw2ICsxNDQ5LDMwIEBAIGYoeCkgPSBQ SEkoMi4wICogcGFyYW1ldGVyICogKHggLSBtdSkgLyAobWF4IC0gbWluICsgMSkpIC8KICAg IDwvaXRlbWl6ZWRsaXN0PgogCiAgIDxwYXJhPgorICAgIEhhc2ggZnVuY3Rpb25zIDxsaXRl cmFsPmhhc2g8L2xpdGVyYWw+LCA8bGl0ZXJhbD5oYXNoX211cm11cjI8L2xpdGVyYWw+IGFu ZAorICAgIDxsaXRlcmFsPmhhc2hfZm52MWE8L2xpdGVyYWw+IGFjY2VwdCBhbiBpbnB1dCB2 YWx1ZSBhbmQgYW4gb3B0aW9uYWwgc2VlZCBwYXJhbWV0ZXIuCisgICAgSW4gY2FzZSB0aGUg c2VlZCBpc24ndCBwcm92aWRlZCB0aGUgdmFsdWUgb2YgPGxpdGVyYWw+OmRlZmF1bHRfc2Vl ZDwvbGl0ZXJhbD4KKyAgICBpcyB1c2VkLCB3aGljaCBpcyBpbml0aWFsaXplZCByYW5kb21s eSB1bmxlc3Mgc2V0IGJ5IHRoZSBjb21tYW5kLWxpbmUKKyAgICA8bGl0ZXJhbD4tRDwvbGl0 ZXJhbD4gb3B0aW9uLiBIYXNoIGZ1bmN0aW9ucyBjYW4gYmUgdXNlZCB0byBzY2F0dGVyIHRo ZQorICAgIGRpc3RyaWJ1dGlvbiBvZiByYW5kb20gZnVuY3Rpb25zIHN1Y2ggYXMgPGxpdGVy YWw+cmFuZG9tX3ppcGZpYW48L2xpdGVyYWw+IG9yCisgICAgPGxpdGVyYWw+cmFuZG9tX2V4 cG9uZW50aWFsPC9saXRlcmFsPi4gRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHBnYmVu Y2gKKyAgICBzY3JpcHQgc2ltdWxhdGVzIHBvc3NpYmxlIHJlYWwgd29ybGQgd29ya2xvYWQg dHlwaWNhbCBmb3Igc29jaWFsIG1lZGlhIGFuZAorICAgIGJsb2dnaW5nIHBsYXRmb3JtcyB3 aGVyZSBmZXcgYWNjb3VudHMgZ2VuZXJhdGUgZXhjZXNzaXZlIGxvYWQ6CisKKzxwcm9ncmFt bGlzdGluZz4KK1xzZXQgciByYW5kb21femlwZmlhbigwLCAxMDAwMDAwMDAsIDEuMDcpCitc c2V0IGsgYWJzKGhhc2goOnIpKSAlIDEwMDAwMDAKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAg ICBJbiBzb21lIGNhc2VzIHNldmVyYWwgZGlzdGluY3QgZGlzdHJpYnV0aW9ucyBhcmUgbmVl ZGVkIHdoaWNoIGRvbid0IGNvcnJlbGF0ZSB3aXRoIGVhY2ggb3RoZXIgYW5kIHRoaXMgaXMg d2hlbiBpbXBsaWNpdCBzZWVkIHBhcmFtZXRlciBjb21lcyBpbiBoYW5keToKKworPHByb2dy YW1saXN0aW5nPgorXHNldCBrMSBhYnMoaGFzaCg6ciksIDpkZWZhdWx0X3NlZWQgKyAxMjMp ICUgMTAwMDAwMAorXHNldCBrMiBhYnMoaGFzaCg6ciksIDpkZWZhdWx0X3NlZWQgKyAzMjEp ICUgMTAwMDAwMAorPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgog ICAgQXMgYW4gZXhhbXBsZSwgdGhlIGZ1bGwgZGVmaW5pdGlvbiBvZiB0aGUgYnVpbHQtaW4g VFBDLUItbGlrZQogICAgdHJhbnNhY3Rpb24gaXM6CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdiZW5jaC9leHBycGFyc2UueSBiL3NyYy9iaW4vcGdiZW5jaC9leHBycGFyc2UueQppbmRl eCBlMjNjYTUxLi5mYzQyYzQ3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvZXhwcnBh cnNlLnkKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL2V4cHJwYXJzZS55CkBAIC0xNiw2ICsxNiwx MCBAQAogCiAjaW5jbHVkZSAicGdiZW5jaC5oIgogCisjZGVmaW5lIFBHQkVOQ0hfTkFSR1Nf VkFSSUFCTEUJKC0xKQorI2RlZmluZSBQR0JFTkNIX05BUkdTX0NBU0UJCSgtMikKKyNkZWZp bmUgUEdCRU5DSF9OQVJHU19IQVNICQkoLTMpCisKIFBnQmVuY2hFeHByICpleHByX3BhcnNl X3Jlc3VsdDsKIAogc3RhdGljIFBnQmVuY2hFeHByTGlzdCAqbWFrZV9lbGlzdChQZ0JlbmNo RXhwciAqZXhwLCBQZ0JlbmNoRXhwckxpc3QgKmxpc3QpOwpAQCAtMjI2LDkgKzIzMCwxMyBA QCBtYWtlX3VvcCh5eXNjYW5fdCB5eXNjYW5uZXIsIGNvbnN0IGNoYXIgKm9wZXJhdG9yLCBQ Z0JlbmNoRXhwciAqZXhwcikKIC8qCiAgKiBMaXN0IG9mIGF2YWlsYWJsZSBmdW5jdGlvbnM6 CiAgKiAtIGZuYW1lOiBmdW5jdGlvbiBuYW1lLCAiIS4uLiIgZm9yIHNwZWNpYWwgaW50ZXJu YWwgZnVuY3Rpb25zCi0gKiAtIG5hcmdzOiBudW1iZXIgb2YgYXJndW1lbnRzCi0gKgkJCS0x IGlzIGEgc3BlY2lhbCB2YWx1ZSBmb3IgbGVhc3QgJiBncmVhdGVzdCBtZWFuaW5nICNhcmdz ID49IDEKLSAqCQkJLTIgaXMgZm9yIHRoZSAiQ0FTRSBXSEVOIC4uLiIgZnVuY3Rpb24sIHdo aWNoIGhhcyAjYXJncyA+PSAzIGFuZCBvZGQKKyAqIC0gbmFyZ3M6IG51bWJlciBvZiBhcmd1 bWVudHMuIFNwZWNpYWwgY2FzZXM6CisgKgkJCS0gUEdCRU5DSF9OQVJHU19WQVJJQUJMRSBp cyBhIHNwZWNpYWwgdmFsdWUgZm9yIGxlYXN0ICYgZ3JlYXRlc3QKKyAqCQkJICBtZWFuaW5n ICNhcmdzID49IDE7CisgKgkJCS0gUEdCRU5DSF9OQVJHU19DQVNFIGlzIGZvciB0aGUgIkNB U0UgV0hFTiAuLi4iIGZ1bmN0aW9uLCB3aGljaAorICoJCQkgIGhhcyAjYXJncyA+PSAzIGFu ZCBvZGQ7CisgKiAJCQktIFBHQkVOQ0hfTkFSR1NfSEFTSCBpcyBmb3IgaGFzaCBmdW5jdGlv bnMsIHdoaWNoIGhhdmUgb25lIHJlcXVpcmVkCisgKgkJCSAgYW5kIG9uZSBvcHRpb25hbCBh cmd1bWVudDsKICAqIC0gdGFnOiBmdW5jdGlvbiBpZGVudGlmaWVyIGZyb20gUGdCZW5jaEZ1 bmN0aW9uIGVudW0KICAqLwogc3RhdGljIGNvbnN0IHN0cnVjdApAQCAtMjU5LDEwICsyNjcs MTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCQkiYWJzIiwgMSwgUEdCRU5DSF9BQlMKIAl9 LAogCXsKLQkJImxlYXN0IiwgLTEsIFBHQkVOQ0hfTEVBU1QKKwkJImxlYXN0IiwgUEdCRU5D SF9OQVJHU19WQVJJQUJMRSwgUEdCRU5DSF9MRUFTVAogCX0sCiAJewotCQkiZ3JlYXRlc3Qi LCAtMSwgUEdCRU5DSF9HUkVBVEVTVAorCQkiZ3JlYXRlc3QiLCBQR0JFTkNIX05BUkdTX1ZB UklBQkxFLCBQR0JFTkNIX0dSRUFURVNUCiAJfSwKIAl7CiAJCSJkZWJ1ZyIsIDEsIFBHQkVO Q0hfREVCVUcKQEAgLTM0Nyw3ICszNTUsMjUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCX0s CiAJLyogImNhc2Ugd2hlbiAuLi4gdGhlbiAuLi4gZWxzZSAuLi4gZW5kIiBjb25zdHJ1Y3Rp b24gKi8KIAl7Ci0JCSIhY2FzZV9lbmQiLCAtMiwgUEdCRU5DSF9DQVNFCisJCSIhY2FzZV9l bmQiLCBQR0JFTkNIX05BUkdTX0NBU0UsIFBHQkVOQ0hfQ0FTRQorCX0sCisJeworCQkiaGFz aCIsIFBHQkVOQ0hfTkFSR1NfSEFTSCwgUEdCRU5DSF9IQVNIX01VUk1VUjIKKwl9LAorCXsK KwkJImhhc2hfbXVybXVyMiIsIFBHQkVOQ0hfTkFSR1NfSEFTSCwgUEdCRU5DSF9IQVNIX01V Uk1VUjIKKwl9LAorCXsKKwkJImhhc2hfZm52MWEiLCBQR0JFTkNIX05BUkdTX0hBU0gsIFBH QkVOQ0hfSEFTSF9GTlYxQQorCX0sCisJeworCQkiaGFzaCIsIC0zLCBQR0JFTkNIX0hBU0hf TVVSTVVSMgorCX0sCisJeworCQkiaGFzaF9tdXJtdXIyIiwgLTMsIFBHQkVOQ0hfSEFTSF9N VVJNVVIyCisJfSwKKwl7CisJCSJoYXNoX2ZudjFhIiwgLTMsIFBHQkVOQ0hfSEFTSF9GTlYx QQogCX0sCiAJLyoga2VlcCBhcyBsYXN0IGFycmF5IGVsZW1lbnQgKi8KIAl7CkBAIC00MjMs MjkgKzQ0OSw1MSBAQCBlbGlzdF9sZW5ndGgoUGdCZW5jaEV4cHJMaXN0ICpsaXN0KQogc3Rh dGljIFBnQmVuY2hFeHByICoKIG1ha2VfZnVuYyh5eXNjYW5fdCB5eXNjYW5uZXIsIGludCBm bnVtYmVyLCBQZ0JlbmNoRXhwckxpc3QgKmFyZ3MpCiB7CisJaW50IGxlbiA9IGVsaXN0X2xl bmd0aChhcmdzKTsKKwogCVBnQmVuY2hFeHByICpleHByID0gcGdfbWFsbG9jKHNpemVvZihQ Z0JlbmNoRXhwcikpOwogCiAJQXNzZXJ0KGZudW1iZXIgPj0gMCk7CiAKLQlpZiAoUEdCRU5D SF9GVU5DVElPTlNbZm51bWJlcl0ubmFyZ3MgPj0gMCAmJgotCQlQR0JFTkNIX0ZVTkNUSU9O U1tmbnVtYmVyXS5uYXJncyAhPSBlbGlzdF9sZW5ndGgoYXJncykpCi0JCWV4cHJfeXllcnJv cl9tb3JlKHl5c2Nhbm5lciwgInVuZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIsCi0J CQkJCQkgIFBHQkVOQ0hfRlVOQ1RJT05TW2ZudW1iZXJdLmZuYW1lKTsKLQotCS8qIGNoZWNr IGF0IGxlYXN0IG9uZSBhcmcgZm9yIGxlYXN0ICYgZ3JlYXRlc3QgKi8KLQlpZiAoUEdCRU5D SF9GVU5DVElPTlNbZm51bWJlcl0ubmFyZ3MgPT0gLTEgJiYKLQkJZWxpc3RfbGVuZ3RoKGFy Z3MpID09IDApCi0JCWV4cHJfeXllcnJvcl9tb3JlKHl5c2Nhbm5lciwgImF0IGxlYXN0IG9u ZSBhcmd1bWVudCBleHBlY3RlZCIsCi0JCQkJCQkgIFBHQkVOQ0hfRlVOQ1RJT05TW2ZudW1i ZXJdLmZuYW1lKTsKLQkvKiBzcGVjaWFsIGNhc2U6IGNhc2UgKHdoZW4gLi4uIHRoZW4gLi4u KSsgKGVsc2UgLi4uKT8gZW5kICovCi0JaWYgKFBHQkVOQ0hfRlVOQ1RJT05TW2ZudW1iZXJd Lm5hcmdzID09IC0yKQotCXsKLQkJaW50IGxlbiA9IGVsaXN0X2xlbmd0aChhcmdzKTsKLQot CQkvKiAnZWxzZScgYnJhbmNoIGlzIGFsd2F5cyBwcmVzZW50LCBidXQgY291bGQgYmUgYSBO VUxMLWNvbnN0YW50ICovCi0JCWlmIChsZW4gPCAzIHx8IGxlbiAlIDIgIT0gMSkKLQkJCWV4 cHJfeXllcnJvcl9tb3JlKHl5c2Nhbm5lciwgIm9kZCBhbmQgPj0gMyBudW1iZXIgb2YgYXJn dW1lbnRzIGV4cGVjdGVkIiwKLQkJCQkJCQkgICJjYXNlIGNvbnRyb2wgc3RydWN0dXJlIik7 CisJLyogdmFsaWRhdGUgYXJndW1lbnRzIG51bWJlciBpbmNsdWRpbmcgZmV3IHNwZWNpYWwg Y2FzZXMgKi8KKwlzd2l0Y2ggKFBHQkVOQ0hfRlVOQ1RJT05TW2ZudW1iZXJdLm5hcmdzKQor CXsKKwkJLyogY2hlY2sgYXQgbGVhc3Qgb25lIGFyZyBmb3IgbGVhc3QgJiBncmVhdGVzdCAq LworCQljYXNlIFBHQkVOQ0hfTkFSR1NfVkFSSUFCTEU6CisJCQlpZiAobGVuID09IDApCisJ CQkJZXhwcl95eWVycm9yX21vcmUoeXlzY2FubmVyLCAiYXQgbGVhc3Qgb25lIGFyZ3VtZW50 IGV4cGVjdGVkIiwKKwkJCQkJCQkJICBQR0JFTkNIX0ZVTkNUSU9OU1tmbnVtYmVyXS5mbmFt ZSk7CisJCQlicmVhazsKKworCQkvKiBjYXNlICh3aGVuIC4uLiB0aGVuIC4uLikrIChlbHNl IC4uLik/IGVuZCAqLworCQljYXNlIFBHQkVOQ0hfTkFSR1NfQ0FTRToKKwkJCS8qICdlbHNl JyBicmFuY2ggaXMgYWx3YXlzIHByZXNlbnQsIGJ1dCBjb3VsZCBiZSBhIE5VTEwtY29uc3Rh bnQgKi8KKwkJCWlmIChsZW4gPCAzIHx8IGxlbiAlIDIgIT0gMSkKKwkJCQlleHByX3l5ZXJy b3JfbW9yZSh5eXNjYW5uZXIsCisJCQkJCQkJCSAgIm9kZCBhbmQgPj0gMyBudW1iZXIgb2Yg YXJndW1lbnRzIGV4cGVjdGVkIiwKKwkJCQkJCQkJICAiY2FzZSBjb250cm9sIHN0cnVjdHVy ZSIpOworCQkJYnJlYWs7CisKKwkJLyogaGFzaCBmdW5jdGlvbnMgd2l0aCBvcHRpb25hbCBz ZWVkIGFyZ3VtZW50ICovCisJCWNhc2UgUEdCRU5DSF9OQVJHU19IQVNIOgorCQkJaWYgKGxl biA+IDIpCisJCQkJZXhwcl95eWVycm9yX21vcmUoeXlzY2FubmVyLCAidW5leHBlY3RlZCBu dW1iZXIgb2YgYXJndW1lbnRzIiwKKwkJCQkJCQkJICBQR0JFTkNIX0ZVTkNUSU9OU1tmbnVt YmVyXS5mbmFtZSk7CisKKwkJCWlmIChsZW4gPT0gMSkKKwkJCXsKKwkJCQlQZ0JlbmNoRXhw ciAqdmFyID0gbWFrZV92YXJpYWJsZSgiZGVmYXVsdF9zZWVkIik7CisJCQkJYXJncyA9IG1h a2VfZWxpc3QodmFyLCBhcmdzKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCS8qIGNvbW1vbiBj YXNlOiBwb3NpdGl2ZSBhcmd1bWVudHMgbnVtYmVyICovCisJCWRlZmF1bHQ6CisJCQlBc3Nl cnQoUEdCRU5DSF9GVU5DVElPTlNbZm51bWJlcl0ubmFyZ3MgPj0gMCk7CisKKwkJCWlmIChQ R0JFTkNIX0ZVTkNUSU9OU1tmbnVtYmVyXS5uYXJncyAhPSBsZW4pCisJCQkJZXhwcl95eWVy cm9yX21vcmUoeXlzY2FubmVyLCAidW5leHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzIiwK KwkJCQkJCQkJICBQR0JFTkNIX0ZVTkNUSU9OU1tmbnVtYmVyXS5mbmFtZSk7CiAJfQogCiAJ ZXhwci0+ZXR5cGUgPSBFTk9ERV9GVU5DVElPTjsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDMxZWE2 Y2EuLmFjNjlkMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysr IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNjEsNiArNjEsMTQgQEAKICNkZWZp bmUgRVJSQ09ERV9VTkRFRklORURfVEFCTEUgICI0MlAwMSIKIAogLyoKKyAqIEhhc2hpbmcg Y29uc3RhbnRzCisgKi8KKyNkZWZpbmUgRk5WX1BSSU1FIDB4MTAwMDAwMDAxYjMKKyNkZWZp bmUgRk5WX09GRlNFVF9CQVNJUyAweGNiZjI5Y2U0ODQyMjIzMjUKKyNkZWZpbmUgTU0yX01V TCAweGM2YTRhNzkzNWJkMWU5OTUKKyNkZWZpbmUgTU0yX1JPVCA0NworCisvKgogICogTXVs dGktcGxhdGZvcm0gcHRocmVhZCBpbXBsZW1lbnRhdGlvbnMKICAqLwogCkBAIC05MTUsNiAr OTIzLDUxIEBAIGdldFppcGZpYW5SYW5kKFRTdGF0ZSAqdGhyZWFkLCBpbnQ2NCBtaW4sIGlu dDY0IG1heCwgZG91YmxlIHMpCiB9CiAKIC8qCisgKiBGTlYtMWEgaGFzaCBmdW5jdGlvbgor ICovCitzdGF0aWMgaW50NjQKK2dldEhhc2hGbnYxYShpbnQ2NCB2YWwsIHVpbnQ2NCBzZWVk KQoreworCWludDY0CXJlc3VsdDsKKwlpbnQJCWk7CisKKwlyZXN1bHQgPSBGTlZfT0ZGU0VU X0JBU0lTIF4gc2VlZDsKKwlmb3IgKGkgPSAwOyBpIDwgODsgKytpKQorCXsKKwkJaW50MzIg b2N0ZXQgPSB2YWwgJiAweGZmOworCisJCXZhbCA9IHZhbCA+PiA4OworCQlyZXN1bHQgPSBy ZXN1bHQgXiBvY3RldDsKKwkJcmVzdWx0ID0gcmVzdWx0ICogRk5WX1BSSU1FOworCX0KKwor CXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBNdXJtdXIyIGhhc2ggZnVuY3Rpb24KKyAq Lworc3RhdGljIGludDY0CitnZXRIYXNoTXVybXVyMihpbnQ2NCB2YWwsIHVpbnQ2NCBzZWVk KQoreworCXVpbnQ2NAlyZXN1bHQgPSBzZWVkIF4gKHNpemVvZihpbnQ2NCkgKiBNTTJfTVVM KTsKKwl1aW50NjQJayA9ICh1aW50NjQpIHZhbDsKKworCWsgKj0gTU0yX01VTDsKKwlrIF49 IGsgPj4gTU0yX1JPVDsKKwlrICo9IE1NMl9NVUw7CisKKwlyZXN1bHQgXj0gazsKKwlyZXN1 bHQgKj0gTU0yX01VTDsKKworCXJlc3VsdCBePSByZXN1bHQgPj4gTU0yX1JPVDsKKwlyZXN1 bHQgKj0gTU0yX01VTDsKKwlyZXN1bHQgXj0gcmVzdWx0ID4+IE1NMl9ST1Q7CisKKwlyZXR1 cm4gKGludDY0KSByZXN1bHQ7Cit9CisKKy8qCiAgKiBJbml0aWFsaXplIHRoZSBnaXZlbiBT aW1wbGVTdGF0cyBzdHJ1Y3QgdG8gYWxsIHplcm9lcwogICovCiBzdGF0aWMgdm9pZApAQCAt MjIwOSw2ICsyMjYyLDMwIEBAIGV2YWxTdGFuZGFyZEZ1bmMoCiAJCQkJcmV0dXJuIHRydWU7 CiAJCQl9CiAKKwkJCS8qIGhhc2hpbmcgKi8KKwkJY2FzZSBQR0JFTkNIX0hBU0hfRk5WMUE6 CisJCWNhc2UgUEdCRU5DSF9IQVNIX01VUk1VUjI6CisJCQl7CisJCQkJaW50NjQJdmFsLAor CQkJCQkJc2VlZDsKKworCQkJCUFzc2VydChuYXJncyA9PSAyKTsKKworCQkJCWlmICghY29l cmNlVG9JbnQoJnZhcmdzWzBdLCAmdmFsKSB8fAorCQkJCQkhY29lcmNlVG9JbnQoJnZhcmdz WzFdLCAmc2VlZCkpCisJCQkJCXJldHVybiBmYWxzZTsKKworCQkJCWlmIChmdW5jID09IFBH QkVOQ0hfSEFTSF9NVVJNVVIyKQorCQkJCQlzZXRJbnRWYWx1ZShyZXR2YWwsIGdldEhhc2hN dXJtdXIyKHZhbCwgc2VlZCkpOworCQkJCWVsc2UgaWYgKGZ1bmMgPT0gUEdCRU5DSF9IQVNI X0ZOVjFBKQorCQkJCQlzZXRJbnRWYWx1ZShyZXR2YWwsIGdldEhhc2hGbnYxYSh2YWwsIHNl ZWQpKTsKKwkJCQllbHNlCisJCQkJCS8qIGNhbm5vdCBnZXQgaGVyZSAqLworCQkJCQlBc3Nl cnQoMCk7CisKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwogCQlkZWZhdWx0OgogCQkJLyog Y2Fubm90IGdldCBoZXJlICovCiAJCQlBc3NlcnQoMCk7CkBAIC00OTcyLDYgKzUwNDksMTAg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWV4aXQoMSk7CiAJfQogCisJLyog c2V0IHJhbmRvbSBzZWVkICovCisJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydF90aW1l KTsKKwlzcmFuZG9tKCh1bnNpZ25lZCBpbnQpIElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKHN0 YXJ0X3RpbWUpKTsKKwogCWlmIChpbnRlcm5hbF9zY3JpcHRfdXNlZCkKIAl7CiAJCS8qCkBA IC01MDMzLDYgKzUxMTQsMTkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCX0K IAl9CiAKKwkvKiBzZXQgZGVmYXVsdCBzZWVkIGZvciBoYXNoIGZ1bmN0aW9ucyAqLworCWlm IChsb29rdXBWYXJpYWJsZSgmc3RhdGVbMF0sICJkZWZhdWx0X3NlZWQiKSA9PSBOVUxMKQor CXsKKwkJdWludDY0CXNlZWQgPSAoKHVpbnQ2NCkgKHJhbmRvbSgpICYgMHhGRkZGKSA8PCA0 OCkgfAorCQkJCQkgICAoKHVpbnQ2NCkgKHJhbmRvbSgpICYgMHhGRkZGKSA8PCAzMikgfAor CQkJCQkgICAoKHVpbnQ2NCkgKHJhbmRvbSgpICYgMHhGRkZGKSA8PCAxNikgfAorCQkJCQkg ICAodWludDY0KSAocmFuZG9tKCkgJiAweEZGRkYpOworCisJCWZvciAoaSA9IDA7IGkgPCBu Y2xpZW50czsgaSsrKQorCQkJaWYgKCFwdXRWYXJpYWJsZUludCgmc3RhdGVbaV0sICJzdGFy dHVwIiwgImRlZmF1bHRfc2VlZCIsIChpbnQ2NCkgc2VlZCkpCisJCQkJZXhpdCgxKTsKKwl9 CisKIAlpZiAoIWlzX25vX3ZhY3V1bSkKIAl7CiAJCWZwcmludGYoc3RkZXJyLCAic3RhcnRp bmcgdmFjdXVtLi4uIik7CkBAIC01MDUwLDEwICs1MTQ0LDYgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJfQogCVBRZmluaXNoKGNvbik7CiAKLQkvKiBzZXQgcmFuZG9tIHNl ZWQgKi8KLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOwotCXNyYW5kb20o KHVuc2lnbmVkIGludCkgSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMoc3RhcnRfdGltZSkpOwot CiAJLyogc2V0IHVwIHRocmVhZCBkYXRhIHN0cnVjdHVyZXMgKi8KIAl0aHJlYWRzID0gKFRT dGF0ZSAqKSBwZ19tYWxsb2Moc2l6ZW9mKFRTdGF0ZSkgKiBudGhyZWFkcyk7CiAJbmNsaWVu dHNfZGVhbHQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guaCBi L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmgKaW5kZXggMDcwNWNjZC4uNjk4Mzg2NSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guaAorKysgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5oCkBAIC05Nyw3ICs5Nyw5IEBAIHR5cGVkZWYgZW51bSBQZ0JlbmNoRnVu Y3Rpb24KIAlQR0JFTkNIX0xFLAogCVBHQkVOQ0hfTFQsCiAJUEdCRU5DSF9JUywKLQlQR0JF TkNIX0NBU0UKKwlQR0JFTkNIX0NBU0UsCisJUEdCRU5DSF9IQVNIX0ZOVjFBLAorCVBHQkVO Q0hfSEFTSF9NVVJNVVIyCiB9IFBnQmVuY2hGdW5jdGlvbjsKIAogdHlwZWRlZiBzdHJ1Y3Qg UGdCZW5jaEV4cHIgUGdCZW5jaEV4cHI7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv dC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbCBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9w Z2JlbmNoX3dpdGhfc2VydmVyLnBsCmluZGV4IGE4YjI5NjIuLjNhYjc5NDUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBi L3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCkBAIC0yNTks NiArMjU5LDExIEBAIHBnYmVuY2goCiAJCXFye2NvbW1hbmQ9NDYuOiBpbnQgNDZcYn0sCiAJ CXFye2NvbW1hbmQ9NDcuOiBib29sZWFuIHRydWVcYn0sCiAJCXFye2NvbW1hbmQ9NDguOiBi b29sZWFuIHRydWVcYn0sCisJCXFye2NvbW1hbmQ9NDkuOiBpbnQgLTU4MTc4NzcwODE3Njg3 MjE2NzZcYn0sCisJCXFye2NvbW1hbmQ9NTAuOiBib29sZWFuIHRydWVcYn0sCisJCXFye2Nv bW1hbmQ9NTEuOiBpbnQgLTc3OTM4MjkzMzUzNjU1NDIxNTNcYn0sCisJCXFye2NvbW1hbmQ9 NTIuOiBpbnQgLT9cZCtcYn0sCisJCXFye2NvbW1hbmQ9NTMuOiBib29sZWFuIHRydWVcYn0s CiAJXSwKIAkncGdiZW5jaCBleHByZXNzaW9ucycsCiAJeyAgICcwMDFfcGdiZW5jaF9leHBy ZXNzaW9ucycgPT4gcXstLSBpbnRlZ2VyIGZ1bmN0aW9ucwpAQCAtMzI3LDYgKzMzMiwxMiBA QCBwZ2JlbmNoKAogXHNldCBuNiBkZWJ1Zyg6biBJUyBOVUxMIEFORCBOT1QgOmYgQU5EIDp0 KQogLS0gY29uZGl0aW9uYWwgdHJ1dGgKIFxzZXQgY3MgZGVidWcoQ0FTRSBXSEVOIDEgVEhF TiBUUlVFIEVORCBBTkQgQ0FTRSBXSEVOIDEuMCBUSEVOIFRSVUUgRU5EIEFORCBDQVNFIFdI RU4gOm4gVEhFTiBOVUxMIEVMU0UgVFJVRSBFTkQpCistLSBoYXNoIGZ1bmN0aW9ucworXHNl dCBoMCBkZWJ1ZyhoYXNoKDEwLCA1NDMyKSkKK1xzZXQgaDEgZGVidWcoOmgwID0gaGFzaF9t dXJtdXIyKDEwLCA1NDMyKSkKK1xzZXQgaDMgZGVidWcoaGFzaF9mbnYxYSgxMCwgNTQzMikp Citcc2V0IGg0IGRlYnVnKGhhc2goMTApKQorXHNldCBoNSBkZWJ1ZyhoYXNoKDEwKSA9IGhh c2goMTAsIDpkZWZhdWx0X3NlZWQpKQogLS0gbGF6eSBldmFsdWF0aW9uCiBcc2V0IHp5IDAK IFxzZXQgeXogZGVidWcoY2FzZSB3aGVuIDp6eSA9IDAgdGhlbiAtMSBlbHNlICgxIC8gOnp5 KSBlbmQpCg== --------------6319C75B745F93B17D8604CA--