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 1uf37F-001SSG-H9 for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Jul 2025 21:04:38 +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 1uf37E-00BC0Z-MM for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Jul 2025 21:04:36 +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 1uf37D-00BC0Q-Hd for pgsql-hackers@lists.postgresql.org; Thu, 24 Jul 2025 21:04:36 +0000 Received: from fhigh-a6-smtp.messagingengine.com ([103.168.172.157]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uf379-000fIx-2Y for pgsql-hackers@postgresql.org; Thu, 24 Jul 2025 21:04:35 +0000 Received: from phl-compute-04.internal (phl-compute-04.phl.internal [10.202.2.44]) by mailfhigh.phl.internal (Postfix) with ESMTP id EDCF31400068; Thu, 24 Jul 2025 17:04:29 -0400 (EDT) Received: from phl-imap-03 ([10.202.2.93]) by phl-compute-04.internal (MEProxy); Thu, 24 Jul 2025 17:04:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=compiler.org; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1753391069; x=1753477469; bh=I1X9ZEudBr wUSd46+21QZKaZLgaO725moAvvFnK/Ov0=; b=GOJ/xLfxAi7BIuArUDA6y9EkT0 CcYT86bjA4jISew9ynA29WvVUNmSVpYZufoB1FK7nGSNJ9UZ1GU3RBi484vAe4od UljiZgL01cDRQr8YcKbsiGLoAW3QibWCo2F/9xhUL1kY4m7Evgxc0E9kwFE4Bl3M 3SR+NCrMfhEsj2UiqidDHq8hun2cJwGjan2olAAG5zm0JR7YBly74KMxJKFvoTps SfNupcgyUQJ34ZllkL7kBptLSA1KGbKiaLx3CyrUi38vRSm95/SNbDLAVi9eVlqO tM7g05GGGEJge4reqJWu6XSbXfXpweedKvEF980eNG2jpba1Jykg40+7Palg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1753391069; x=1753477469; bh=I1X9ZEudBrwUSd46+21QZKaZLgaO725moAv vFnK/Ov0=; b=fVIll3yBYCP6DjYiq4Uj3JeEBfiO1V6STAdF8mk/1CrYtblwyD9 9SHbcxDkjbO3XcpGIZT5SpmbhRBxqgI+yNVi+Xieuzz05AjEHVKPBWiadltisuyO /ZmAt/B/qKcHSXERARt353MFGa7mqSai7Gq5oyvfg+1u62M8C2JZBX8pz9GS4Vqy 7PUnIXQc/tcx7UJJb22dWI0oUdXk9SvmLq4KsCCtKp3m+5/WhqRpM04aRSxs72tG t1rhDpAtwHSioRz4Pgx4PaJqJfOauhPL2htktkWKw8DSoTha9b9L7GVZT1nR8w4U duHvSFpYg5mlfP/TMqIOhFkL0jWob9JRTQA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgdekudeijecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefoggffhffvvefkjghfufgtsehmtderreertdejnecuhfhrohhmpedflfhovghlucfl rggtohgsshhonhdfuceojhhovghlsegtohhmphhilhgvrhdrohhrgheqnecuggftrfgrth htvghrnhepleeiueefveeljeelkeeguedvtdfggeeftdeguedtjeejkedvvedtvdeuteek vdelnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepjh hovghlsegtohhmphhilhgvrhdrohhrghdpnhgspghrtghpthhtohepgedpmhhouggvpehs mhhtphhouhhtpdhrtghpthhtoheprhhishhhuhdrphhoshhtghhrvghssehgmhgrihhlrd gtohhmpdhrtghpthhtohepthhhohhmrghsrdhmuhhnrhhosehgmhgrihhlrdgtohhmpdhr tghpthhtohephhhlihhnnhgrkhgrsehikhhirdhfihdprhgtphhtthhopehpghhsqhhlqd hhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: ic6394509:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 729E818E0063; Thu, 24 Jul 2025 17:04:29 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: T90889ce1c5a9472e Date: Thu, 24 Jul 2025 23:03:27 +0200 From: "Joel Jacobson" To: "Thomas Munro" Cc: pgsql-hackers , "Heikki Linnakangas" , "Rishu Bagga" Message-Id: <0b4d402a-9ac2-4aa8-acf8-8231dbe579ea@app.fastmail.com> In-Reply-To: References: <6899c044-4a82-49be-8117-e6f669765f7e@app.fastmail.com> <165530.1752362320@sss.pgh.pa.us> <02a7cd37-e2fc-4212-8b19-f8c239c95fb8@app.fastmail.com> <96f00bf1-cc9d-4520-9d02-9e14e7767c88@app.fastmail.com> <30c2aa7d-dd6c-4b68-a2e4-f217a1a34acf@app.fastmail.com> Subject: Re: Optimize LISTEN/NOTIFY Content-Type: multipart/mixed; boundary=e1d002f53a09478886f8aede5c06de37 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --e1d002f53a09478886f8aede5c06de37 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Wed, Jul 23, 2025, at 04:44, Thomas Munro wrote: > On Wed, Jul 23, 2025 at 1:39=E2=80=AFPM Joel Jacobson wrote: >> In their patch, in asyn.c's SignalBackends(), they do >> SendInterrupt(INTERRUPT_ASYNC_NOTIFY, procno) instead of >> SendProcSignal(pid, PROCSIG_NOTIFY_INTERRUPT, procnos[i]). They don't >> seem to check if the backend is already signalled or not, but maybe >> SendInterrupt() has signal coalescing built-in so it would be a noop >> with almost no cost? > > Yeah: > > + old_pending =3D pg_atomic_fetch_or_u32(&proc->pendingInterrupts, int= erruptMask); > + > + /* > + * If the process is currently blocked waiting for an interrupt to ar= rive, > + * and the interrupt wasn't already pending, wake it up. > + */ > + if ((old_pending & (interruptMask | SLEEPING_ON_INTERRUPTS)) =3D=3D > SLEEPING_ON_INTERRUPTS) > + WakeupOtherProc(proc); Thanks for confirming the coalescing logic in SendInterrupt. That's a great low-level optimization. It's clear we're both targeting the same problem of redundant wake-ups under contention, but approaching it from different architectural levels. The core difference, as I see it, is *where* the state management resides. The "Interrupts vs signals" patch set creates a unified machinery where the 'pending' state for all subsystems is combined into a single atomic bitmask. This is a valid approach. However, I've been exploring an alternative pattern that decouples the state management from the signaling machinery, allowing each subsystem to manage its own state independently. I believe this leads to a simpler, more modular migration path. I've developed a two-patch series for `async.c` to demonstrate this concept. 1. The first patch introduces a lock-free, atomic finite state machine (FSM) entirely within async.c. By using a subsystem-specific atomic integer and CAS operations, async.c can now robustly manage its own listener states (IDLE, SIGNALLED, PROCESSING). This solves the redundant signal problem at the source, as notifiers can now observe a listener's state and refrain from sending a wakeup if one is already pending. 2. The second patch demonstrates that once state is managed locally, the wakeup mechanism becomes trivial.** The expensive `SendProcSignal` call is replaced with a direct `SetLatch`. This leverages the existing, highly-optimized `WaitEventSet` infrastructure as a simple, efficient "poke." This suggests a powerful, incremental migration pattern: first, fix a subsystem's state management internally; second, replace its wakeup mechanism. This vertical, module-by-module approach seems complementary to the horizontal, layer-by-layer refactoring in the "Interrupts vs signals" thread. I'll post a more detailed follow-up in that thread to discuss the broader architectural implications. Attached are the two patches, reframed to better illustrate this two-step pattern. /Joel --e1d002f53a09478886f8aede5c06de37 Content-Disposition: attachment; filename="pgbench-script.txt" Content-Type: text/plain; name="pgbench-script.txt" Content-Transfer-Encoding: base64 IyEvYmluL2Jhc2gKCiMgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFBvc3RncmVTUUwgaW5zdGFu Y2VzIHVzaW5nIGFic29sdXRlIHBhdGhzLgojIFRoaXMgc2NyaXB0IGRvZXMgTk9UIG1vZGlm eSB0aGUgc2hlbGwncyBQQVRIIHZhcmlhYmxlLgoKIyAtLS0gTWFzdGVyIENvbmZpZyAtLS0K TUFTVEVSX05BTUU9Im1hc3RlciIKTUFTVEVSX1BPUlQ9NTQzMgpNQVNURVJfQklOX1BBVEg9 IiRIT01FL3BnLW1hc3Rlci9iaW4iCk1BU1RFUl9EQVRBPSIkSE9NRS9wZy1tYXN0ZXItZGF0 YSIKTUFTVEVSX0xPRz0iL3RtcC9wZy1tYXN0ZXIubG9nIgoKIyAtLS0gUGF0Y2ggdjEgQ29u ZmlnIC0tLQpQQVRDSF9OQU1FPSJwYXRjaC12MSIKUEFUQ0hfUE9SVD01NDMyClBBVENIX0JJ Tl9QQVRIPSIkSE9NRS9wZy1wYXRjaC12MS9iaW4iClBBVENIX0RBVEE9IiRIT01FL3BnLXBh dGNoLXYxLWRhdGEiClBBVENIX0xPRz0iL3RtcC9wZy1wYXRjaC12MS5sb2ciCgojIC0tLSBQ YXRjaCB2MiBDb25maWcgLS0tClBBVENIX1YyX05BTUU9InBhdGNoLXYyIgpQQVRDSF9WMl9Q T1JUPTU0MzIKUEFUQ0hfVjJfQklOX1BBVEg9IiRIT01FL3BnLXBhdGNoLXYyL2JpbiIKUEFU Q0hfVjJfREFUQT0iJEhPTUUvcGctcGF0Y2gtdjItZGF0YSIKUEFUQ0hfVjJfTE9HPSIvdG1w L3BnLXBhdGNoLXYyLmxvZyIKCiMgQmVuY2htYXJrIHNldHRpbmdzCkNIQU5ORUxfTkFNRT0i bXljaGFubmVsIgpDT05ORUNUSU9OUz0oNjQgMTI4KQpEVVJBVElPTj0xMCAjIEJlbmNobWFy ayBkdXJhdGlvbiBpbiBzZWNvbmRzIGZvciBlYWNoIHJ1bgpNRUFTVVJFTUVOVFM9MyAjIE51 bWJlciBvZiBtZWFzdXJlbWVudHMgcGVyIGNvbmZpZ3VyYXRpb24KCiMgQ1NWIG91dHB1dCBm aWxlCkNTVl9PVVRQVVQ9ImJlbmNobWFya19yZXN1bHRzLmNzdiIKCiMgVGVtcG9yYXJ5IGZp bGVzClBHQkVOQ0hfU0NSSVBUPSQobWt0ZW1wKQoKIyAtLS0gQ2xlYW51cCBGdW5jdGlvbiAt LS0KIyBFbnN1cmVzIHRoYXQgc2VydmVycyBhcmUgc3RvcHBlZCBhbmQgdGVtcCBmaWxlcyBh cmUgcmVtb3ZlZCBvbiBzY3JpcHQgZXhpdC4KY2xlYW51cCgpIHsKICBlY2hvICIiCiAgZWNo byAiQ2xlYW5pbmcgdXAuLi4iCiAgIyBFbnN1cmUgYWxsIHNlcnZlcnMgYXJlIHN0b3BwZWQs IHNpbGVuY2luZyBlcnJvcnMgaWYgdGhleSBhcmUgbm90IHJ1bm5pbmcuCiAgIyBVc2UgYWJz b2x1dGUgcGF0aHMgYW5kIGV4cGxpY2l0IGRhdGEgZGlyZWN0b3JpZXMuCiAgIiRNQVNURVJf QklOX1BBVEgvcGdfY3RsIiAtRCAiJE1BU1RFUl9EQVRBIiAtbSBmYXN0IHN0b3AgJj4gL2Rl di9udWxsCiAgIiRQQVRDSF9CSU5fUEFUSC9wZ19jdGwiIC1EICIkUEFUQ0hfREFUQSIgLW0g ZmFzdCBzdG9wICY+IC9kZXYvbnVsbAogICIkUEFUQ0hfVjJfQklOX1BBVEgvcGdfY3RsIiAt RCAiJFBBVENIX1YyX0RBVEEiIC1tIGZhc3Qgc3RvcCAmPiAvZGV2L251bGwKICBybSAtZiAi JFBHQkVOQ0hfU0NSSVBUIgogIGVjaG8gIkNsZWFudXAgY29tcGxldGUuIgp9CgojIFRyYXAg dGhlIHNjcmlwdCdzIGV4aXQgKG5vcm1hbCBvciBpbnRlcnJ1cHRlZCkgdG8gcnVuIHRoZSBj bGVhbnVwIGZ1bmN0aW9uCnRyYXAgY2xlYW51cCBFWElUCgojIEluaXRpYWxpemUgQ1NWIGZp bGUgd2l0aCBoZWFkZXJzCiMgZWNobyAidmVyc2lvbixjb25uZWN0aW9ucyxqb2JzLHRwcyxy dW4iID4gIiRDU1ZfT1VUUFVUIgoKIyAtLS0gQmVuY2htYXJrIEZ1bmN0aW9uIC0tLQojIEEg Z2VuZXJpYyBmdW5jdGlvbiB0byBydW4gdGhlIGJlbmNobWFyayBmb3IgYSBnaXZlbiBjb25m aWd1cmF0aW9uLgojIEl0IHN0YXJ0cywgYmVuY2htYXJrcywgYW5kIHRoZW4gc3RvcHMgdGhl IHNwZWNpZmllZCBzZXJ2ZXIgaW5zdGFuY2UuCnJ1bl9iZW5jaG1hcmsoKSB7CiAgbG9jYWwg bmFtZT0kMQogIGxvY2FsIHBvcnQ9JDIKICBsb2NhbCBiaW5fcGF0aD0kMwogIGxvY2FsIGRh dGFfcGF0aD0kNAogIGxvY2FsIGxvZ19maWxlPSQ1CgogIGVjaG8gIi0tLSBTdGFydGluZyBi ZW5jaG1hcmsgZm9yOiAkbmFtZSAtLS0iCgogICMgU2V0IFBHUE9SVCBmb3IgY2xpZW50IHRv b2xzIChwZ2JlbmNoLCBwc3FsKSBmb3IgdGhpcyBydW4KICBleHBvcnQgUEdQT1JUPSRwb3J0 CgogICMgMS4gU3RhcnQgdGhlIHNlcnZlciB1c2luZyBhYnNvbHV0ZSBwYXRoIGFuZCBleHBs aWNpdCBkYXRhIGRpcmVjdG9yeQogIGVjaG8gIlN0YXJ0aW5nICRuYW1lIHNlcnZlciBvbiBw b3J0ICRwb3J0Li4uIgogICIkYmluX3BhdGgvcGdfY3RsIiAtRCAiJGRhdGFfcGF0aCIgLWwg IiRsb2dfZmlsZSIgLW8gIi1wICRwb3J0IiBzdGFydAogIHNsZWVwIDIgIyBHaXZlIHNlcnZl ciBhIG1vbWVudCB0byBiZWNvbWUgYXZhaWxhYmxlCgogICMgQ3JlYXRlIHRoZSBwZ2JlbmNo IHNjcmlwdCBjb250ZW50CiAgY2F0ID4gIiRQR0JFTkNIX1NDUklQVCIgPDwgRU9GCk5PVElG WSAke0NIQU5ORUxfTkFNRX07CkVPRgoKICAjIDIuIFN0YXJ0IHRoZSBsaXN0ZW5lciBpbiB0 aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBzZXJ2ZXIKICAoZWNobyAiTElTVEVOICR7Q0hBTk5F TF9OQU1FfTsiOyBzbGVlcCAxMDAwMDApIHwgIiRiaW5fcGF0aC9wc3FsIiAtZCBwb3N0Z3Jl cyAmPiAvZGV2L251bGwgJgogIGxvY2FsIGxpc3RlbmVyX3BpZD0kIQogIAogICMgMy4gUnVu IHRoZSBiZW5jaG1hcmsgbG9vcAogIGVjaG8gIlJ1bm5pbmcgcGdiZW5jaCBmb3IgY29ubmVj dGlvbiBjb3VudHM6ICR7Q09OTkVDVElPTlNbKl19IgogIGZvciBjIGluICIke0NPTk5FQ1RJ T05TW0BdfSI7IGRvCiAgICBlY2hvICIgIFRlc3Rpbmcgd2l0aCAkYyBjb25uZWN0aW9ucyAo JE1FQVNVUkVNRU5UUyBtZWFzdXJlbWVudHMgcGVyIHJ1bikuLi4iCiAgICAjIFJ1biBtdWx0 aXBsZSBtZWFzdXJlbWVudHMgZm9yIGVhY2ggY29ubmVjdGlvbiBjb3VudAogICAgZm9yIG0g aW4gJChzZXEgMSAkTUVBU1VSRU1FTlRTKTsgZG8KICAgICAgIyBSdW4gcGdiZW5jaCBhbmQg ZXh0cmFjdCBUUFMgdmFsdWUKICAgICAgdHBzPSQoIiRiaW5fcGF0aC9wZ2JlbmNoIiAtZCBw b3N0Z3JlcyAtZiAiJFBHQkVOQ0hfU0NSSVBUIiAtYyAiJGMiIC1qICIkYyIgLVQgIiREVVJB VElPTiIgLW4gXAogICAgICAgIHwgZ3JlcCAtRSAnXnRwcycgXAogICAgICAgIHwgYXdrICd7 cHJpbnRmICIlLjBmIiwgJDN9JykKICAgICAgCiAgICAgICMgV3JpdGUgdG8gQ1NWOiB2ZXJz aW9uLGNvbm5lY3Rpb25zLGpvYnMsdHBzLHJ1bgogICAgICBlY2hvICIkbmFtZSwkYywkYywk dHBzLCRtIiA+PiAiJENTVl9PVVRQVVQiCiAgICBkb25lCiAgZG9uZQogIAogICMgNC4gU3Rv cCB0aGUgbGlzdGVuZXIgYW5kIHRoZSBzZXJ2ZXIKICBraWxsICIkbGlzdGVuZXJfcGlkIiAm PiAvZGV2L251bGwKICBlY2hvICJTdG9wcGluZyAkbmFtZSBzZXJ2ZXIuLi4iCiAgIiRiaW5f cGF0aC9wZ19jdGwiIC1EICIkZGF0YV9wYXRoIiAtbSBmYXN0IHN0b3AgJj4gL2Rldi9udWxs CiAgZWNobyAiLS0tIEJlbmNobWFyayBmb3IgJG5hbWUgY29tcGxldGUgLS0tIgogIGVjaG8g IiIKfQoKIyAtLS0gTWFpbiBFeGVjdXRpb24gLS0tCgojIDEuIFJ1biBiZW5jaG1hcmsgZm9y IG1hc3RlcgojIHJ1bl9iZW5jaG1hcmsgIiRNQVNURVJfTkFNRSIgIiRNQVNURVJfUE9SVCIg IiRNQVNURVJfQklOX1BBVEgiICIkTUFTVEVSX0RBVEEiICIkTUFTVEVSX0xPRyIKCiMgMi4g UnVuIGJlbmNobWFyayBmb3IgcGF0Y2gtdjEKIyBydW5fYmVuY2htYXJrICIkUEFUQ0hfTkFN RSIgIiRQQVRDSF9QT1JUIiAiJFBBVENIX0JJTl9QQVRIIiAiJFBBVENIX0RBVEEiICIkUEFU Q0hfTE9HIgoKIyAzLiBSdW4gYmVuY2htYXJrIGZvciBwYXRjaC12MgpydW5fYmVuY2htYXJr ICIkUEFUQ0hfVjJfTkFNRSIgIiRQQVRDSF9WMl9QT1JUIiAiJFBBVENIX1YyX0JJTl9QQVRI IiAiJFBBVENIX1YyX0RBVEEiICIkUEFUQ0hfVjJfTE9HIgoKIyA0LiBHZW5lcmF0ZSByZXBv cnQgdXNpbmcgUG9zdGdyZVNRTAplY2hvICIiCmVjaG8gIiMgQkVOQ0hNQVJLIgplY2hvICIi CmVjaG8gIiMjIFRQUyIKCiMgU3RhcnQgdGhlIG1hc3RlciBzZXJ2ZXIgdG8gcnVuIHRoZSBh bmFseXNpcwpleHBvcnQgUEdQT1JUPSRNQVNURVJfUE9SVAoiJE1BU1RFUl9CSU5fUEFUSC9w Z19jdGwiIC1EICIkTUFTVEVSX0RBVEEiIC1sICIkTUFTVEVSX0xPRyIgLW8gIi1wICRNQVNU RVJfUE9SVCIgc3RhcnQgJj4gL2Rldi9udWxsCnNsZWVwIDIKCiMgQ3JlYXRlIGFuYWx5c2lz IGRhdGFiYXNlIGFuZCBsb2FkIGRhdGEKIiRNQVNURVJfQklOX1BBVEgvcHNxbCIgLWQgcG9z dGdyZXMgLXEgPDwgRU9GCi0tIENyZWF0ZSBhIHRlbXBvcmFyeSBkYXRhYmFzZSBmb3IgYW5h bHlzaXMKRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgYmVuY2hfYW5hbHlzaXM7CkNSRUFURSBE QVRBQkFTRSBiZW5jaF9hbmFseXNpczsKXGMgYmVuY2hfYW5hbHlzaXMKCi0tIENyZWF0ZSB0 YWJsZSBmb3IgYmVuY2htYXJrIHJlc3VsdHMKQ1JFQVRFIFRBQkxFIGJlbmNobWFya19yZXN1 bHRzICgKICAgIHZlcnNpb24gVEVYVCwKICAgIGNvbm5lY3Rpb25zIElOVCwKICAgIGpvYnMg SU5ULAogICAgdHBzIE5VTUVSSUMsCiAgICBydW4gSU5UCik7CgotLSBMb2FkIENTViBkYXRh ClxDT1BZIGJlbmNobWFya19yZXN1bHRzIEZST00gJyRDU1ZfT1VUUFVUJyBDU1YgSEVBREVS CgotLSBHZW5lcmF0ZSBjb21wYXJpc29uIHJlcG9ydApXSVRIIGF2Z19yZXN1bHRzIEFTICgK ICAgIFNFTEVDVCAKICAgICAgICB2ZXJzaW9uLAogICAgICAgIGNvbm5lY3Rpb25zLAogICAg ICAgIEFWRyh0cHMpIEFTIGF2Z190cHMsCiAgICAgICAgU1REREVWKHRwcykgQVMgc3RkZGV2 X3RwcywKICAgICAgICBDT1VOVCgqKSBBUyBydW5zCiAgICBGUk9NIGJlbmNobWFya19yZXN1 bHRzCiAgICBHUk9VUCBCWSB2ZXJzaW9uLCBjb25uZWN0aW9ucwopLApjb21wYXJpc29uIEFT ICgKICAgIFNFTEVDVCAKICAgICAgICBtLmNvbm5lY3Rpb25zLAogICAgICAgIG0uYXZnX3Rw cyBBUyBtYXN0ZXJfdHBzLAogICAgICAgIHAxLmF2Z190cHMgQVMgcGF0Y2hfdjFfdHBzLAog ICAgICAgIHAyLmF2Z190cHMgQVMgcGF0Y2hfdjJfdHBzLAogICAgICAgIENBU0UgCiAgICAg ICAgICAgIFdIRU4gbS5hdmdfdHBzID4gMCBUSEVOICgocDEuYXZnX3RwcyAtIG0uYXZnX3Rw cykgLyBtLmF2Z190cHMgKiAxMDApCiAgICAgICAgICAgIEVMU0UgMAogICAgICAgIEVORCBB UyByZWxhdGl2ZV9kaWZmX3BhdGNoX3YxX3BjdCwKICAgICAgICBDQVNFIAogICAgICAgICAg ICBXSEVOIG0uYXZnX3RwcyA+IDAgVEhFTiAoKHAyLmF2Z190cHMgLSBtLmF2Z190cHMpIC8g bS5hdmdfdHBzICogMTAwKQogICAgICAgICAgICBFTFNFIDAKICAgICAgICBFTkQgQVMgcmVs YXRpdmVfZGlmZl9wYXRjaF92Ml9wY3QKICAgIEZST00gYXZnX3Jlc3VsdHMgbQogICAgSk9J TiBhdmdfcmVzdWx0cyBwMSBPTiBtLmNvbm5lY3Rpb25zID0gcDEuY29ubmVjdGlvbnMKICAg IEpPSU4gYXZnX3Jlc3VsdHMgcDIgT04gbS5jb25uZWN0aW9ucyA9IHAyLmNvbm5lY3Rpb25z CiAgICBXSEVSRSBtLnZlcnNpb24gPSAnbWFzdGVyJyBBTkQgcDEudmVyc2lvbiA9ICdwYXRj aC12MScgQU5EIHAyLnZlcnNpb24gPSAncGF0Y2gtdjInCiAgICBPUkRFUiBCWSBtLmNvbm5l Y3Rpb25zCikKClNFTEVDVCAKICAgIGNvbm5lY3Rpb25zIEFTICJOIGJhY2tlbmRzIiwKICAg IFJPVU5EKG1hc3Rlcl90cHMpIEFTICJtYXN0ZXIiLAogICAgUk9VTkQocGF0Y2hfdjFfdHBz KSBBUyAicGF0Y2gtdjEiLAogICAgUk9VTkQocGF0Y2hfdjJfdHBzKSBBUyAicGF0Y2gtdjIi CkZST00gY29tcGFyaXNvbgpPUkRFUiBCWSBjb25uZWN0aW9uczsKRU9GCgplY2hvICIiCmVj aG8gIiMjIFRQUyBzcGVlZC11cCB2cyBtYXN0ZXIiCgoiJE1BU1RFUl9CSU5fUEFUSC9wc3Fs IiAtZCBiZW5jaF9hbmFseXNpcyAtcSA8PCBFT0YKU0VMRUNUIAogICAgY29ubmVjdGlvbnMg QVMgIk4gYmFja2VuZHMiLAogICAgQ0FTRSBXSEVOIHJlbGF0aXZlX2RpZmZfcGF0Y2hfdjFf cGN0ID49IDAgVEhFTiAnKycgRUxTRSAnJyBFTkQgfHwgCiAgICBST1VORChyZWxhdGl2ZV9k aWZmX3BhdGNoX3YxX3BjdCkgfHwgJyUnIEFTICJwYXRjaC12MSIsCiAgICBDQVNFIFdIRU4g cmVsYXRpdmVfZGlmZl9wYXRjaF92Ml9wY3QgPj0gMCBUSEVOICcrJyBFTFNFICcnIEVORCB8 fCAKICAgIFJPVU5EKHJlbGF0aXZlX2RpZmZfcGF0Y2hfdjJfcGN0KSB8fCAnJScgQVMgInBh dGNoLXYyIgpGUk9NICgKICAgIFdJVEggYXZnX3Jlc3VsdHMgQVMgKAogICAgICAgIFNFTEVD VCAKICAgICAgICAgICAgdmVyc2lvbiwKICAgICAgICAgICAgY29ubmVjdGlvbnMsCiAgICAg ICAgICAgIEFWRyh0cHMpIEFTIGF2Z190cHMKICAgICAgICBGUk9NIGJlbmNobWFya19yZXN1 bHRzCiAgICAgICAgR1JPVVAgQlkgdmVyc2lvbiwgY29ubmVjdGlvbnMKICAgICkKICAgIFNF TEVDVCAKICAgICAgICBtLmNvbm5lY3Rpb25zLAogICAgICAgIENBU0UgCiAgICAgICAgICAg IFdIRU4gbS5hdmdfdHBzID4gMCBUSEVOICgocDEuYXZnX3RwcyAtIG0uYXZnX3RwcykgLyBt LmF2Z190cHMgKiAxMDApCiAgICAgICAgICAgIEVMU0UgMAogICAgICAgIEVORCBBUyByZWxh dGl2ZV9kaWZmX3BhdGNoX3YxX3BjdCwKICAgICAgICBDQVNFIAogICAgICAgICAgICBXSEVO IG0uYXZnX3RwcyA+IDAgVEhFTiAoKHAyLmF2Z190cHMgLSBtLmF2Z190cHMpIC8gbS5hdmdf dHBzICogMTAwKQogICAgICAgICAgICBFTFNFIDAKICAgICAgICBFTkQgQVMgcmVsYXRpdmVf ZGlmZl9wYXRjaF92Ml9wY3QKICAgIEZST00gYXZnX3Jlc3VsdHMgbQogICAgSk9JTiBhdmdf cmVzdWx0cyBwMSBPTiBtLmNvbm5lY3Rpb25zID0gcDEuY29ubmVjdGlvbnMKICAgIEpPSU4g YXZnX3Jlc3VsdHMgcDIgT04gbS5jb25uZWN0aW9ucyA9IHAyLmNvbm5lY3Rpb25zCiAgICBX SEVSRSBtLnZlcnNpb24gPSAnbWFzdGVyJyBBTkQgcDEudmVyc2lvbiA9ICdwYXRjaC12MScg QU5EIHAyLnZlcnNpb24gPSAncGF0Y2gtdjInCikgQVMgY29tcGFyaXNvbgpPUkRFUiBCWSBj b25uZWN0aW9uczsKRU9GCgojIFN0b3AgdGhlIHNlcnZlcgoiJE1BU1RFUl9CSU5fUEFUSC9w Z19jdGwiIC1EICIkTUFTVEVSX0RBVEEiIC1tIGZhc3Qgc3RvcCAmPiAvZGV2L251bGwKCmVj aG8gIiIKZWNobyAiQ1NWIHJlc3VsdHMgc2F2ZWQgdG86ICRDU1ZfT1VUUFVUIgo= --e1d002f53a09478886f8aede5c06de37 Content-Disposition: attachment; filename="pgbench-results.txt" Content-Type: text/plain; name="pgbench-results.txt" Content-Transfer-Encoding: base64 IyBCRU5DSE1BUksKCkEgc2luZ2xlIGJhY2tlbmQgZG9lcyBgTElTVEVOIG15Y2hhbm5lbDtg IGFuZCBzdGF5cyBpZGxlLAp0aGVuIHBnYmVuY2ggaXMgcnVuIDMgdGltZXMgZm9yIGVhY2gg PE4gYmFja2VuZHM+LgoKc2NyaXB0LnNxbDogTk9USUZZIG15Y2hhbm5lbDsKCiUgcGdiZW5j aCIgLWYgc2NyaXB0LnNxbCAtYyA8TiBiYWNrZW5kcz4gLWogPE4gYmFja2VuZHM+IC1UIDEw IC1uCgojIyBUUFMKCiBOIGJhY2tlbmRzIHwgbWFzdGVyIHwgcGF0Y2gtdjEgfCBwYXRjaC12 MgotLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAgICAgICAg ICAxIHwgMTE3MzQzIHwgICAxNTE0MjIgfCAgIDE1MDczNQogICAgICAgICAgMiB8IDE1ODQy NyB8ICAgMjM2NzA1IHwgICAyMzkwMDQKICAgICAgICAgIDQgfCAxNzc0NTQgfCAgIDI1MDc4 MyB8ICAgMjUwNzgyCiAgICAgICAgICA4IHwgMTE2NTIxIHwgICAxNTU0NjYgfCAgIDE4MDQx OAogICAgICAgICAxNiB8ICA0NTYyNyB8ICAgMTQ0NzQwIHwgICAxNjM0OTEKICAgICAgICAg MzIgfCAgMzcyODEgfCAgIDEzNTYwMiB8ICAgMTQ2NjU5CiAgICAgICAgIDY0IHwgIDM2NjA4 IHwgICAxMjM4NzAgfCAgIDEzMTIwMgogICAgICAgIDEyOCB8ICAzNDc5OCB8ICAgMTIwMzAy IHwgICAxMTkwNDEKKDggcm93cykKCgojIyBUUFMgc3BlZWQtdXAgdnMgbWFzdGVyCgogTiBi YWNrZW5kcyB8IHBhdGNoLXYxIHwgcGF0Y2gtdjIKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLQogICAgICAgICAgMSB8ICsyOSUgICAgIHwgKzI4JQogICAgICAgICAgMiB8 ICs0OSUgICAgIHwgKzUxJQogICAgICAgICAgNCB8ICs0MSUgICAgIHwgKzQxJQogICAgICAg ICAgOCB8ICszMyUgICAgIHwgKzU1JQogICAgICAgICAxNiB8ICsyMTclICAgIHwgKzI1OCUK ICAgICAgICAgMzIgfCArMjY0JSAgICB8ICsyOTMlCiAgICAgICAgIDY0IHwgKzIzOCUgICAg fCArMjU4JQogICAgICAgIDEyOCB8ICsyNDYlICAgIHwgKzI0MiUKKDggcm93cykK --e1d002f53a09478886f8aede5c06de37 Content-Disposition: attachment; filename*0="0001-Optimize-LISTEN-NOTIFY-signaling-with-a-lock-free-at.pat"; filename*1="ch" Content-Type: application/octet-stream; name="=?UTF-8?Q?0001-Optimize-LISTEN-NOTIFY-signaling-with-a-lock-free-at.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAxNzc3NzI4M2JkYTVmYTQxYjQzMGU0ZjcxYTcyNDZkM2YwNGE5NGJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9y Zz4KRGF0ZTogVHVlLCAyMiBKdWwgMjAyNSAxMDozMjozNCArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMS8yXSBPcHRpbWl6ZSBMSVNURU4vTk9USUZZIHNpZ25hbGluZyB3aXRoIGEgbG9jay1m cmVlIGF0b21pYwogc3RhdGUgbWFjaGluZQoKVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIHBv d2VyZnVsIHBhdHRlcm4gZm9yIG1vZGVybml6aW5nIGludGVyLXByb2Nlc3MKY29tbXVuaWNh dGlvbiBieSByZWZhY3RvcmluZyB0aGUgTElTVEVOL05PVElGWSBzdWJzeXN0ZW0gdG8gdXNl IGEKbG9jay1mcmVlLCBhdG9taWMgZmluaXRlIHN0YXRlIG1hY2hpbmUgKEZTTSkuIFRoaXMg ZGlyZWN0bHkgYWRkcmVzc2VzCnRoZSBoaXN0b3JpY2FsIGxhY2sgb2Ygc2FmZSwgZWZmaWNp ZW50IHN0YXRlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgoKUHJldmlvdXNseSwgaWYg bXVsdGlwbGUgdHJhbnNhY3Rpb25zIHNlbnQgbm90aWZpY2F0aW9ucyBjb25jdXJyZW50bHks CmVhY2ggd291bGQgdW5jb25kaXRpb25hbGx5IGF0dGVtcHQgdG8gc2lnbmFsIGFsbCBsaXN0 ZW5pbmcgYmFja2VuZHMuClRoaXMgcmVzdWx0ZWQgaW4gYSBzdG9ybSBvZiBzdXBlcmZsdW91 cyBzaWduYWxzIHRvIGxpc3RlbmVycyB0aGF0IHdlcmUKYWxyZWFkeSBwZW5kaW5nIGEgd2Fr ZXVwLCBjYXVzaW5nIHVubmVjZXNzYXJ5IHN5c3RlbSBjYWxsIG92ZXJoZWFkLgoKQnkgaW50 cm9kdWNpbmcgYW4gYXRvbWljIHBlci1iYWNrZW5kIHN0YXRlIChJRExFLCBTSUdOQUxMRUQs IFBST0NFU1NJTkcpCmluIHNoYXJlZCBtZW1vcnkgYW5kIG1hbmlwdWxhdGVkIHZpYSBjb21w YXJlLWFuZC1zd2FwIChDQVMpLCB0aGlzCmluZWZmaWNpZW5jeSBpcyBlbGltaW5hdGVkLiBB IG5vdGlmaWVyIGNhbiBub3cgYXRvbWljYWxseSB0cmFuc2l0aW9uIGEKbGlzdGVuZXIncyBz dGF0ZSBmcm9tIElETEUgdG8gU0lHTkFMTEVELCBlbnN1cmluZyB0aGF0IG9ubHkgdGhlIGZp cnN0Cm5vdGlmaWVyIGZvciBhIGdpdmVuIGlkbGUgbGlzdGVuZXIgZGlzcGF0Y2hlcyBhIHdh a2V1cC4gVGhlIEZTTSBhbHNvCnJvYnVzdGx5IGhhbmRsZXMgcmFjZSBjb25kaXRpb25zIHdo ZXJlIG5ldyBub3RpZmljYXRpb25zIGFycml2ZSB3aGlsZSBhCmxpc3RlbmVyIGlzIFBST0NF U1NJTkcsIGd1YXJhbnRlZWluZyBubyB3b3JrIGlzIGV2ZXIgbWlzc2VkLgoKVGhpcyBGU00g cGF0dGVybiBpcyBhIGdlbmVyYWxpemFibGUgc29sdXRpb24gZm9yIG1hbmFnaW5nIGNvbmN1 cnJlbmN5IGluClBvc3RncmVTUUwuIEJ5IG1vZGVsaW5nIGludGVyLXByb2Nlc3MgaW50ZXJh Y3Rpb25zIGFzIGV4cGxpY2l0IHN0YXRlCnRyYW5zaXRpb25zLCB3ZSBjYW4gYnVpbGQgbW9y ZSByb2J1c3QgYW5kIHBlcmZvcm1hbnQgc3Vic3lzdGVtcy4gVGhpcwpjb21taXQgZGVtb25z dHJhdGVzIHRoZSBwYXR0ZXJuJ3MgZWZmZWN0aXZlbmVzcyB3aXRoaW4gYXN5bmMuYywgYW5k IGJ5CmNsZWFubHkgc29sdmluZyB0aGUgc3RhdGUgbWFuYWdlbWVudCBwcm9ibGVtIGZpcnN0 LCBpdCBlbmFibGVzIGEKc3Vic2VxdWVudCwgdHJpdmlhbCBvcHRpbWl6YXRpb24gb2YgdGhl IHdha2V1cCBtZWNoYW5pc20gaXRzZWxmLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Fz eW5jLmMgfCAyMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRz L2FzeW5jLmggfCAgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTg1IGluc2VydGlvbnMoKyks IDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fz eW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDRiZDM3ZDViZWI1 Li5hZTIwMDE3YWY5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC0xNTAsOCArMTUwLDE5 IEBACiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInBvcnQv YXRvbWljcy5oIgogCiAKKy8qCisgKiBBc3luYyBub3RpZmljYXRpb24gc3RhdGUgbWFjaGlu ZSBzdGF0ZXMKKyAqLwordHlwZWRlZiBlbnVtIEFzeW5jTGlzdGVuZXJTdGF0ZQoreworCUFT WU5DX1NUQVRFX0lETEUgPSAwLAkJLyogQmFja2VuZCBpcyBpZGxlLCB3YWl0aW5nIGZvciBz aWduYWwgKi8KKwlBU1lOQ19TVEFURV9TSUdOQUxMRUQgPSAxLAkvKiBCYWNrZW5kIGhhcyBi ZWVuIHNpZ25hbGVkLCB3aWxsIHByb2Nlc3Mgc29vbiAqLworCUFTWU5DX1NUQVRFX1BST0NF U1NJTkcgPSAyCS8qIEJhY2tlbmQgaXMgYWN0aXZlbHkgcHJvY2Vzc2luZyBub3RpZmljYXRp b25zICovCit9IEFzeW5jTGlzdGVuZXJTdGF0ZTsKKwogLyoKICAqIE1heGltdW0gc2l6ZSBv ZiBhIE5PVElGWSBwYXlsb2FkLCBpbmNsdWRpbmcgdGVybWluYXRpbmcgTlVMTC4gIFRoaXMK ICAqIG11c3QgYmUga2VwdCBzbWFsbCBlbm91Z2ggc28gdGhhdCBhIG5vdGlmaWNhdGlvbiBt ZXNzYWdlIGZpdHMgb24gb25lCkBAIC0yNDYsNiArMjU3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UXVldWVCYWNrZW5kU3RhdHVzCiAJT2lkCQkJZGJvaWQ7CQkJLyogYmFja2VuZCdzIGRhdGFi YXNlIE9JRCwgb3IgSW52YWxpZE9pZCAqLwogCVByb2NOdW1iZXIJbmV4dExpc3RlbmVyOwkv KiBpZCBvZiBuZXh0IGxpc3RlbmVyLCBvciBJTlZBTElEX1BST0NfTlVNQkVSICovCiAJUXVl dWVQb3NpdGlvbiBwb3M7CQkJLyogYmFja2VuZCBoYXMgcmVhZCBxdWV1ZSB1cCB0byBoZXJl ICovCisJcGdfYXRvbWljX3VpbnQzMiBzdGF0ZTsJCS8qIGFzeW5jIHN0YXRlIG1hY2hpbmUg c3RhdGUgKi8KIH0gUXVldWVCYWNrZW5kU3RhdHVzOwogCiAvKgpAQCAtMzAxLDYgKzMxMyw3 IEBAIHN0YXRpYyBBc3luY1F1ZXVlQ29udHJvbCAqYXN5bmNRdWV1ZUNvbnRyb2w7CiAjZGVm aW5lIFFVRVVFX0JBQ0tFTkRfREJPSUQoaSkJCShhc3luY1F1ZXVlQ29udHJvbC0+YmFja2Vu ZFtpXS5kYm9pZCkKICNkZWZpbmUgUVVFVUVfTkVYVF9MSVNURU5FUihpKQkJKGFzeW5jUXVl dWVDb250cm9sLT5iYWNrZW5kW2ldLm5leHRMaXN0ZW5lcikKICNkZWZpbmUgUVVFVUVfQkFD S0VORF9QT1MoaSkJCShhc3luY1F1ZXVlQ29udHJvbC0+YmFja2VuZFtpXS5wb3MpCisjZGVm aW5lIFFVRVVFX0JBQ0tFTkRfU1RBVEUoaSkJCShhc3luY1F1ZXVlQ29udHJvbC0+YmFja2Vu ZFtpXS5zdGF0ZSkKIAogLyoKICAqIFRoZSBTTFJVIGJ1ZmZlciBhcmVhIHRocm91Z2ggd2hp Y2ggd2UgYWNjZXNzIHRoZSBub3RpZmljYXRpb24gcXVldWUKQEAgLTQwNSwxMiArNDE4LDEw IEBAIHN0YXRpYyBOb3RpZmljYXRpb25MaXN0ICpwZW5kaW5nTm90aWZpZXMgPSBOVUxMOwog CiAvKgogICogSW5ib3VuZCBub3RpZmljYXRpb25zIGFyZSBpbml0aWFsbHkgcHJvY2Vzc2Vk IGJ5IEhhbmRsZU5vdGlmeUludGVycnVwdCgpLAotICogY2FsbGVkIGZyb20gaW5zaWRlIGEg c2lnbmFsIGhhbmRsZXIuIFRoYXQganVzdCBzZXRzIHRoZQotICogbm90aWZ5SW50ZXJydXB0 UGVuZGluZyBmbGFnIGFuZCBzZXRzIHRoZSBwcm9jZXNzCisgKiBjYWxsZWQgZnJvbSBpbnNp ZGUgYSBzaWduYWwgaGFuZGxlci4gVGhhdCBqdXN0IHNldHMgdGhlIHByb2Nlc3MKICAqIGxh dGNoLiBQcm9jZXNzTm90aWZ5SW50ZXJydXB0KCkgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aGVu ZXZlciBpdCdzIHNhZmUgdG8KICAqIGFjdHVhbGx5IGRlYWwgd2l0aCB0aGUgaW50ZXJydXB0 LgogICovCi12b2xhdGlsZSBzaWdfYXRvbWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZyA9 IGZhbHNlOwogCiAvKiBUcnVlIGlmIHdlJ3ZlIHJlZ2lzdGVyZWQgYW4gb25fc2htZW1fZXhp dCBjbGVhbnVwICovCiBzdGF0aWMgYm9vbCB1bmxpc3RlbkV4aXRSZWdpc3RlcmVkID0gZmFs c2U7CkBAIC01MjcsNiArNTM4LDcgQEAgQXN5bmNTaG1lbUluaXQodm9pZCkKIAkJCVFVRVVF X0JBQ0tFTkRfREJPSUQoaSkgPSBJbnZhbGlkT2lkOwogCQkJUVVFVUVfTkVYVF9MSVNURU5F UihpKSA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCQlTRVRfUVVFVUVfUE9TKFFVRVVFX0JB Q0tFTkRfUE9TKGkpLCAwLCAwKTsKKwkJCXBnX2F0b21pY19pbml0X3UzMigmUVVFVUVfQkFD S0VORF9TVEFURShpKSwgQVNZTkNfU1RBVEVfSURMRSk7CiAJCX0KIAl9CiAKQEAgLTEwOTks NiArMTExMSw4IEBAIEV4ZWNfTGlzdGVuUHJlQ29tbWl0KHZvaWQpCiAJUVVFVUVfQkFDS0VO RF9QT1MoTXlQcm9jTnVtYmVyKSA9IG1heDsKIAlRVUVVRV9CQUNLRU5EX1BJRChNeVByb2NO dW1iZXIpID0gTXlQcm9jUGlkOwogCVFVRVVFX0JBQ0tFTkRfREJPSUQoTXlQcm9jTnVtYmVy KSA9IE15RGF0YWJhc2VJZDsKKwkvKiBJbml0aWFsaXplIHRoZSBhdG9taWMgc3RhdGUgdG8g SURMRSAqLworCXBnX2F0b21pY193cml0ZV91MzIoJlFVRVVFX0JBQ0tFTkRfU1RBVEUoTXlQ cm9jTnVtYmVyKSwgQVNZTkNfU1RBVEVfSURMRSk7CiAJLyogSW5zZXJ0IGJhY2tlbmQgaW50 byBsaXN0IG9mIGxpc3RlbmVycyBhdCBjb3JyZWN0IHBvc2l0aW9uICovCiAJaWYgKHByZXZM aXN0ZW5lciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQogCXsKQEAgLTEyNDIsNiArMTI1Niw4 IEBAIGFzeW5jUXVldWVVbnJlZ2lzdGVyKHZvaWQpCiAJLyogTWFyayBvdXIgZW50cnkgYXMg aW52YWxpZCAqLwogCVFVRVVFX0JBQ0tFTkRfUElEKE15UHJvY051bWJlcikgPSBJbnZhbGlk UGlkOwogCVFVRVVFX0JBQ0tFTkRfREJPSUQoTXlQcm9jTnVtYmVyKSA9IEludmFsaWRPaWQ7 CisJLyogUmVzZXQgc3RhdGUgdG8gSURMRSB0byBwcmV2ZW50IHpvbWJpZSBsaXN0ZW5lcnMg Ki8KKwlwZ19hdG9taWNfd3JpdGVfdTMyKCZRVUVVRV9CQUNLRU5EX1NUQVRFKE15UHJvY051 bWJlciksIEFTWU5DX1NUQVRFX0lETEUpOwogCS8qIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUg bGlzdCAqLwogCWlmIChRVUVVRV9GSVJTVF9MSVNURU5FUiA9PSBNeVByb2NOdW1iZXIpCiAJ CVFVRVVFX0ZJUlNUX0xJU1RFTkVSID0gUVVFVUVfTkVYVF9MSVNURU5FUihNeVByb2NOdW1i ZXIpOwpAQCAtMTYzNCwyNSArMTY1MCw4NCBAQCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCWZv ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKIAl7CiAJCWludDMyCQlwaWQgPSBwaWRz W2ldOworCQlQcm9jTnVtYmVyCXByb2NubyA9IHByb2Nub3NbaV07CisJCXVpbnQzMgkJZXhw ZWN0ZWQ7CisJCWJvb2wJCXNpZ25hbF9uZWVkZWQgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBJ ZiB3ZSBhcmUgc2lnbmFsaW5nIG91ciBvd24gcHJvY2Vzcywgbm8gbmVlZCB0byBpbnZvbHZl IHRoZSBrZXJuZWw7Ci0JCSAqIGp1c3Qgc2V0IHRoZSBmbGFnIGRpcmVjdGx5LgorCQkgKiBJ bXBsZW1lbnQgc3RhdGUgbWFjaGluZSB0cmFuc2l0aW9ucyBmb3IgdGhlIG5vdGlmaWVyLgor CQkgKiBXZSB1c2UgYSBsb29wIHRvIGhhbmRsZSByYWNlIGNvbmRpdGlvbnMgd2hlcmUgdGhl IHN0YXRlCisJCSAqIGNoYW5nZXMgYmV0d2VlbiBvdXIgcmVhZCBhbmQgdGhlIENBUyBvcGVy YXRpb24uCiAJCSAqLwotCQlpZiAocGlkID09IE15UHJvY1BpZCkKKwkJdWludDMyCWN1cnJl bnRfc3RhdGUgPSBwZ19hdG9taWNfcmVhZF9tZW1iYXJyaWVyX3UzMigmUVVFVUVfQkFDS0VO RF9TVEFURShwcm9jbm8pKTsKKworCQlzd2l0Y2ggKGN1cnJlbnRfc3RhdGUpCiAJCXsKLQkJ CW5vdGlmeUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCQkJY29udGludWU7CisJCQljYXNl IEFTWU5DX1NUQVRFX0lETEU6CisJCQkJLyogVHJ5IHRvIHRyYW5zaXRpb24gZnJvbSBJRExF IHRvIFNJR05BTExFRCAqLworCQkJCWV4cGVjdGVkID0gQVNZTkNfU1RBVEVfSURMRTsKKwkJ CQlpZiAocGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZRVUVVRV9CQUNLRU5EX1NU QVRFKHByb2NubyksCisJCQkJCQkJCQkJCQkJJmV4cGVjdGVkLAorCQkJCQkJCQkJCQkJCUFT WU5DX1NUQVRFX1NJR05BTExFRCkpCisJCQkJeworCQkJCQkvKiBTdWNjZXNzIC0gbmVlZCB0 byBzZW5kIHNpZ25hbCAqLworCQkJCQlzaWduYWxfbmVlZGVkID0gdHJ1ZTsKKwkJCQkJaWYg KFRyYWNlX25vdGlmeSkKKwkJCQkJCWVsb2coREVCVUcxLCAiU2lnbmFsQmFja2VuZHM6IHRy YW5zaXRpb25lZCBiYWNrZW5kICVkIGZyb20gSURMRSB0byBTSUdOQUxMRUQiLCBwaWQpOwor CQkJCX0KKwkJCQkvKiBBbm90aGVyIG5vdGlmaWVyIGFscmVhZHkgc2lnbmFsZWQgLSB3ZSdy ZSBkb25lICovCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVNZTkNfU1RBVEVfU0lHTkFMTEVE OgorCQkJCS8qIEJhY2tlbmQgaXMgYWxyZWFkeSBzaWduYWxlZCAtIG5vdGhpbmcgdG8gZG8g Ki8KKwkJCQlpZiAoVHJhY2Vfbm90aWZ5KQorCQkJCQllbG9nKERFQlVHMSwgIlNpZ25hbEJh Y2tlbmRzOiBiYWNrZW5kICVkIGFscmVhZHkgaW4gU0lHTkFMTEVEIHN0YXRlLCBza2lwcGlu ZyIsIHBpZCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVNZTkNfU1RBVEVfUFJPQ0VTU0lO RzoKKwkJCQkvKiBUcnkgdG8gdHJhbnNpdGlvbiBmcm9tIFBST0NFU1NJTkcgdG8gU0lHTkFM TEVEICovCisJCQkJZXhwZWN0ZWQgPSBBU1lOQ19TVEFURV9QUk9DRVNTSU5HOworCQkJCWlm IChwZ19hdG9taWNfY29tcGFyZV9leGNoYW5nZV91MzIoJlFVRVVFX0JBQ0tFTkRfU1RBVEUo cHJvY25vKSwKKwkJCQkJCQkJCQkJCQkmZXhwZWN0ZWQsCisJCQkJCQkJCQkJCQkJQVNZTkNf U1RBVEVfU0lHTkFMTEVEKSkKKwkJCQl7CisJCQkJCS8qIFN1Y2Nlc3MgLSBuZWVkIHRvIHNl bmQgc2lnbmFsIGZvciByZS1zY2FuICovCisJCQkJCXNpZ25hbF9uZWVkZWQgPSB0cnVlOwor CQkJCQlpZiAoVHJhY2Vfbm90aWZ5KQorCQkJCQkJZWxvZyhERUJVRzEsICJTaWduYWxCYWNr ZW5kczogdHJhbnNpdGlvbmVkIGJhY2tlbmQgJWQgZnJvbSBQUk9DRVNTSU5HIHRvIFNJR05B TExFRCBmb3IgcmUtc2NhbiIsIHBpZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQkvKiBB bm90aGVyIG5vdGlmaWVyIGFscmVhZHkgc2lnbmFsZWQgLSB3ZSdyZSBkb25lICovCisJCQkJ YnJlYWs7CisKKwkJCWRlZmF1bHQ6CisJCQkJLyogU2hvdWxkIG5ldmVyIGhhcHBlbiAqLwor CQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGFzeW5jIHN0YXRlICV1IGZvciBiYWNrZW5k ICVkIiwKKwkJCQkJCWN1cnJlbnRfc3RhdGUsIHBpZCk7CiAJCX0KIAotCQkvKgotCQkgKiBO b3RlOiBhc3N1bWluZyB0aGluZ3MgYXJlbid0IGJyb2tlbiwgYSBzaWduYWwgZmFpbHVyZSBo ZXJlIGNvdWxkCi0JCSAqIG9ubHkgb2NjdXIgaWYgdGhlIHRhcmdldCBiYWNrZW5kIGV4aXRl ZCBzaW5jZSB3ZSByZWxlYXNlZAotCQkgKiBOb3RpZnlRdWV1ZUxvY2s7IHdoaWNoIGlzIHVu bGlrZWx5IGJ1dCBjZXJ0YWlubHkgcG9zc2libGUuIFNvIHdlCi0JCSAqIGp1c3QgbG9nIGEg bG93LWxldmVsIGRlYnVnIG1lc3NhZ2UgaWYgaXQgaGFwcGVucy4KLQkJICovCi0JCWlmIChT ZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCwgcHJvY25vc1tp XSkgPCAwKQotCQkJZWxvZyhERUJVRzMsICJjb3VsZCBub3Qgc2lnbmFsIGJhY2tlbmQgd2l0 aCBQSUQgJWQ6ICVtIiwgcGlkKTsKKwkJLyogU2VuZCBzaWduYWwgaWYgbmVlZGVkICovCisJ CWlmIChzaWduYWxfbmVlZGVkKQorCQl7CisJCQkvKgorCQkJICogRm9yIG91ciBvd24gcHJv Y2Vzcywgbm8gbmVlZCB0byBpbnZvbHZlIHRoZSBrZXJuZWwKKwkJCSAqLworCQkJaWYgKHBp ZCA9PSBNeVByb2NQaWQpCisJCQl7CisJCQkJU2V0TGF0Y2goTXlMYXRjaCk7CisJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBOb3RlOiBhc3N1bWluZyB0aGluZ3MgYXJl bid0IGJyb2tlbiwgYSBzaWduYWwgZmFpbHVyZSBoZXJlIGNvdWxkCisJCQkJICogb25seSBv Y2N1ciBpZiB0aGUgdGFyZ2V0IGJhY2tlbmQgZXhpdGVkIHNpbmNlIHdlIHJlbGVhc2VkCisJ CQkJICogTm90aWZ5UXVldWVMb2NrOyB3aGljaCBpcyB1bmxpa2VseSBidXQgY2VydGFpbmx5 IHBvc3NpYmxlLiBTbyB3ZQorCQkJCSAqIGp1c3QgbG9nIGEgbG93LWxldmVsIGRlYnVnIG1l c3NhZ2UgaWYgaXQgaGFwcGVucy4KKwkJCQkgKi8KKwkJCQlpZiAoU2VuZFByb2NTaWduYWwo cGlkLCBQUk9DU0lHX05PVElGWV9JTlRFUlJVUFQsIHByb2NubykgPCAwKQorCQkJCQllbG9n KERFQlVHMywgImNvdWxkIG5vdCBzaWduYWwgYmFja2VuZCB3aXRoIFBJRCAlZDogJW0iLCBw aWQpOworCQkJfQorCQl9CiAJfQogCiAJcGZyZWUocGlkcyk7CkBAIC0xODA1LDIwICsxODgw LDQzIEBAIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lkKQogewogCS8qCiAJICogTm90ZTog dGhpcyBpcyBjYWxsZWQgYnkgYSBTSUdOQUwgSEFORExFUi4gWW91IG11c3QgYmUgdmVyeSB3 YXJ5IHdoYXQKLQkgKiB5b3UgZG8gaGVyZS4KKwkgKiB5b3UgZG8gaGVyZS4gVGhlIGFjdHVh bCBzdGF0ZSB0cmFuc2l0aW9uIGhhcyBhbHJlYWR5IGJlZW4gZG9uZSBieQorCSAqIHRoZSBu b3RpZmllciBiZWZvcmUgc2VuZGluZyB0aGUgc2lnbmFsLCBzbyB3ZSBvbmx5IG5lZWQgdG8g c2V0IHRoZQorCSAqIGxhdGNoIHRvIGVuc3VyZSB0aGUgYmFja2VuZCB3YWtlcyB1cCBhbmQg cHJvY2Vzc2VzIHRoZSBub3RpZmljYXRpb24uCiAJICovCiAKLQkvKiBzaWduYWwgdGhhdCB3 b3JrIG5lZWRzIHRvIGJlIGRvbmUgKi8KLQlub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1 ZTsKLQogCS8qIG1ha2Ugc3VyZSB0aGUgZXZlbnQgaXMgcHJvY2Vzc2VkIGluIGR1ZSBjb3Vy c2UgKi8KIAlTZXRMYXRjaChNeUxhdGNoKTsKIH0KIAorLyoKKyAqIElzTm90aWZ5SW50ZXJy dXB0UGVuZGluZworICoKKyAqCQlDaGVjayBpZiB0aGVyZSdzIGEgcGVuZGluZyBub3RpZnkg aW50ZXJydXB0IGZvciB0aGlzIGJhY2tlbmQKKyAqLworYm9vbAorSXNOb3RpZnlJbnRlcnJ1 cHRQZW5kaW5nKHZvaWQpCit7CisJdWludDMyCQlzdGF0ZTsKKworCS8qIElmIG5vdCByZWdp c3RlcmVkIGFzIGEgbGlzdGVuZXIsIG5vIG5vdGlmaWNhdGlvbnMgYXJlIHBlbmRpbmcgKi8K KwlpZiAoIWFtUmVnaXN0ZXJlZExpc3RlbmVyKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgor CSAqIFJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgd2l0aCBhIG1lbW9yeSBiYXJyaWVyIHRvIGVu c3VyZSB3ZSBzZWUKKwkgKiB0aGUgbW9zdCByZWNlbnQgdmFsdWUgd3JpdHRlbiBieSBub3Rp ZmllcnMuCisJICovCisJc3RhdGUgPSBwZ19hdG9taWNfcmVhZF9tZW1iYXJyaWVyX3UzMigm UVVFVUVfQkFDS0VORF9TVEFURShNeVByb2NOdW1iZXIpKTsKKworCS8qIE5vdGlmaWNhdGlv biBpcyBwZW5kaW5nIGlmIHN0YXRlIGlzIFNJR05BTExFRCAqLworCXJldHVybiAoc3RhdGUg PT0gQVNZTkNfU1RBVEVfU0lHTkFMTEVEKTsKK30KKwogLyoKICAqIFByb2Nlc3NOb3RpZnlJ bnRlcnJ1cHQKICAqCi0gKgkJVGhpcyBpcyBjYWxsZWQgaWYgd2Ugc2VlIG5vdGlmeUludGVy cnVwdFBlbmRpbmcgc2V0LCBqdXN0IGJlZm9yZQorICoJCVRoaXMgaXMgY2FsbGVkIGlmIHdl IHNlZSBhIG5vdGlmaWNhdGlvbiBpbnRlcnJ1cHQgaXMgcGVuZGluZywganVzdCBiZWZvcmUK ICAqCQl0cmFuc21pdHRpbmcgUmVhZHlGb3JRdWVyeSBhdCB0aGUgZW5kIG9mIGEgZnJvbnRl bmQgY29tbWFuZCwgYW5kCiAgKgkJYWxzbyBpZiBhIG5vdGlmeSBzaWduYWwgb2NjdXJzIHdo aWxlIHJlYWRpbmcgZnJvbSB0aGUgZnJvbnRlbmQuCiAgKgkJSGFuZGxlTm90aWZ5SW50ZXJy dXB0KCkgd2lsbCBjYXVzZSB0aGUgcmVhZCB0byBiZSBpbnRlcnJ1cHRlZApAQCAtMTgzNyw3 ICsxOTM1LDcgQEAgUHJvY2Vzc05vdGlmeUludGVycnVwdChib29sIGZsdXNoKQogCQlyZXR1 cm47CQkJCQkvKiBub3QgcmVhbGx5IGlkbGUgKi8KIAogCS8qIExvb3AgaW4gY2FzZSBhbm90 aGVyIHNpZ25hbCBhcnJpdmVzIHdoaWxlIHNlbmRpbmcgbWVzc2FnZXMgKi8KLQl3aGlsZSAo bm90aWZ5SW50ZXJydXB0UGVuZGluZykKKwl3aGlsZSAoSXNOb3RpZnlJbnRlcnJ1cHRQZW5k aW5nKCkpCiAJCVByb2Nlc3NJbmNvbWluZ05vdGlmeShmbHVzaCk7CiB9CiAKQEAgLTIxODIs MjggKzIyODAsODEgQEAgYXN5bmNRdWV1ZUFkdmFuY2VUYWlsKHZvaWQpCiBzdGF0aWMgdm9p ZAogUHJvY2Vzc0luY29taW5nTm90aWZ5KGJvb2wgZmx1c2gpCiB7Ci0JLyogV2UgKm11c3Qq IHJlc2V0IHRoZSBmbGFnICovCi0Jbm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwor CXVpbnQzMgkJZXhwZWN0ZWQ7CiAKLQkvKiBEbyBub3RoaW5nIGVsc2UgaWYgd2UgYXJlbid0 IGFjdGl2ZWx5IGxpc3RlbmluZyAqLworCS8qIERvIG5vdGhpbmcgaWYgd2UgYXJlbid0IGFj dGl2ZWx5IGxpc3RlbmluZyAqLwogCWlmIChsaXN0ZW5DaGFubmVscyA9PSBOSUwpCiAJCXJl dHVybjsKIAorCS8qCisJICogUGVyZm9ybSBzdGF0ZSB0cmFuc2l0aW9uIGZyb20gU0lHTkFM TEVEIHRvIFBST0NFU1NJTkcuCisJICogVGhpcyBpcyB0aGUgImFjcXVpcmUgbG9jayIgb3Bl cmF0aW9uIGZvciB0aGUgbGlzdGVuZXIuCisJICovCisJZXhwZWN0ZWQgPSBBU1lOQ19TVEFU RV9TSUdOQUxMRUQ7CisJaWYgKCFwZ19hdG9taWNfY29tcGFyZV9leGNoYW5nZV91MzIoJlFV RVVFX0JBQ0tFTkRfU1RBVEUoTXlQcm9jTnVtYmVyKSwKKwkJCQkJCQkJCQkmZXhwZWN0ZWQs CisJCQkJCQkJCQkJQVNZTkNfU1RBVEVfUFJPQ0VTU0lORykpCisJeworCQkvKgorCQkgKiBD QVMgZmFpbGVkIC0gdGhlIHN0YXRlIHdhcyBub3QgU0lHTkFMTEVELiBUaGlzIHNob3VsZCBu b3QgaGFwcGVuCisJCSAqIGFzIFByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQgb25seSBjYWxscyB1 cyB3aGVuIHN0YXRlIGlzIFNJR05BTExFRC4KKwkJICovCisJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIGFzeW5jIHN0YXRlICV1IGluIFByb2Nlc3NJbmNvbWluZ05vdGlmeSwgZXhwZWN0 ZWQgU0lHTkFMTEVEIiwKKwkJCSBleHBlY3RlZCk7CisJfQorCiAJaWYgKFRyYWNlX25vdGlm eSkKLQkJZWxvZyhERUJVRzEsICJQcm9jZXNzSW5jb21pbmdOb3RpZnkiKTsKKwkJZWxvZyhE RUJVRzEsICJQcm9jZXNzSW5jb21pbmdOb3RpZnk6IHRyYW5zaXRpb25lZCB0byBQUk9DRVNT SU5HIik7CiAKIAlzZXRfcHNfZGlzcGxheSgibm90aWZ5IGludGVycnVwdCIpOwogCiAJLyoK LQkgKiBXZSBtdXN0IHJ1biBhc3luY1F1ZXVlUmVhZEFsbE5vdGlmaWNhdGlvbnMgaW5zaWRl IGEgdHJhbnNhY3Rpb24sIGVsc2UKLQkgKiBiYWQgdGhpbmdzIGhhcHBlbiBpZiBpdCBnZXRz IGFuIGVycm9yLgotCSAqLworCQkqIFdlIG11c3QgcnVuIGFzeW5jUXVldWVSZWFkQWxsTm90 aWZpY2F0aW9ucyBpbnNpZGUgYSB0cmFuc2FjdGlvbiwgZWxzZQorCQkqIGJhZCB0aGluZ3Mg aGFwcGVuIGlmIGl0IGdldHMgYW4gZXJyb3IuCisJCSovCiAJU3RhcnRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAogCWFzeW5jUXVldWVSZWFkQWxsTm90aWZpY2F0aW9ucygpOwogCiAJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKKwkvKgorCSAqIFRyeSB0byB0cmFuc2l0aW9u IGZyb20gUFJPQ0VTU0lORyBiYWNrIHRvIElETEUuCisJICogVGhpcyBpcyB0aGUgInJlbGVh c2UgbG9jayIgb3BlcmF0aW9uIGZvciB0aGUgbGlzdGVuZXIuCisJICovCisJZXhwZWN0ZWQg PSBBU1lOQ19TVEFURV9QUk9DRVNTSU5HOworCWlmIChwZ19hdG9taWNfY29tcGFyZV9leGNo YW5nZV91MzIoJlFVRVVFX0JBQ0tFTkRfU1RBVEUoTXlQcm9jTnVtYmVyKSwKKwkJCQkJCQkJ CQkmZXhwZWN0ZWQsCisJCQkJCQkJCQkJQVNZTkNfU1RBVEVfSURMRSkpCisJeworCQkvKiBT dWNjZXNzIC0gd2UncmUgZG9uZSwgdHJhbnNpdGlvbmVkIHRvIElETEUgKi8KKwkJaWYgKFRy YWNlX25vdGlmeSkKKwkJCWVsb2coREVCVUcxLCAiUHJvY2Vzc0luY29taW5nTm90aWZ5OiB0 cmFuc2l0aW9uZWQgdG8gSURMRSIpOworCX0KKwllbHNlCisJeworCQkvKiBDQVMgZmFpbGVk IC0gY2hlY2sgd2hhdCB0aGUgbmV3IHN0YXRlIGlzICovCisJCWlmIChleHBlY3RlZCA9PSBB U1lOQ19TVEFURV9TSUdOQUxMRUQpCisJCXsKKwkJCS8qCisJCQkJKiBBIG5vdGlmaWVyIHNl dCBvdXIgc3RhdGUgdG8gU0lHTkFMTEVEIHdoaWxlIHdlIHdlcmUgcHJvY2Vzc2luZy4KKwkJ CQkqIFdlIGFyZSBkb25lIHdpdGggdGhpcyBiYXRjaCBvZiB3b3JrLCBidXQgd2Uga25vdyB0 aGVyZSBpcyBtb3JlCisJCQkJKiB0byBkby4gUmF0aGVyIHRoYW4gbG9vcCBoZXJlIGFuZCBy aXNrIHN0YXJ2aW5nIG90aGVyIGJhY2tlbmQKKwkJCQkqIGFjdGl2aXR5LCB3ZSBzZXQgb3Vy IG93biBsYXRjaCB0byBlbnN1cmUgd2UgYXJlIHdva2VuIHVwIGFnYWluCisJCQkJKiB0byBy ZS1wcm9jZXNzLCBhbmQgdGhlbiBleGl0LiBUaGUgc3RhdGUgaXMgbGVmdCBhcyBTSUdOQUxM RUQuCisJCQkJKi8KKwkJCWlmIChUcmFjZV9ub3RpZnkpCisJCQkJZWxvZyhERUJVRzEsICJQ cm9jZXNzSW5jb21pbmdOb3RpZnk6IHNpZ25hbGxlZCB3aGlsZSBwcm9jZXNzaW5nIik7CisJ CQlTZXRMYXRjaChNeUxhdGNoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEFueSBvdGhl ciBzdGF0ZSBpcyBhbiBlcnJvciAqLworCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgYXN5 bmMgc3RhdGUgJXUgd2hlbiB0cnlpbmcgdG8gcmV0dXJuIHRvIElETEUiLAorCQkJCQlleHBl Y3RlZCk7CisJCX0KKwl9CisKIAkvKgogCSAqIElmIHRoaXMgaXNuJ3QgYW4gZW5kLW9mLWNv bW1hbmQgY2FzZSwgd2UgbXVzdCBmbHVzaCB0aGUgbm90aWZ5IG1lc3NhZ2VzCiAJICogdG8g ZW5zdXJlIGZyb250ZW5kIGdldHMgdGhlbSBwcm9tcHRseS4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCBhMjk3NjA2Y2RkNy4uZTFkODBjYmVmZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTUxMiw3ICs1MTIsNyBAQCBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdChib29sIGJsb2Nr ZWQpCiAJCQlQcm9jZXNzQ2F0Y2h1cEludGVycnVwdCgpOwogCiAJCS8qIFByb2Nlc3Mgbm90 aWZ5IGludGVycnVwdHMsIGlmIGFueSAqLwotCQlpZiAobm90aWZ5SW50ZXJydXB0UGVuZGlu ZykKKwkJaWYgKElzTm90aWZ5SW50ZXJydXB0UGVuZGluZygpKQogCQkJUHJvY2Vzc05vdGlm eUludGVycnVwdCh0cnVlKTsKIAl9CiAJZWxzZSBpZiAoUHJvY0RpZVBlbmRpbmcpCkBAIC00 NjA0LDcgKzQ2MDQsNyBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25z dCBjaGFyICp1c2VybmFtZSkKIAkJCQkgKiB3ZXJlIHJlY2VpdmVkIGR1cmluZyB0aGUganVz dC1maW5pc2hlZCB0cmFuc2FjdGlvbiwgdGhleSdsbAogCQkJCSAqIGJlIHNlZW4gYnkgdGhl IGNsaWVudCBiZWZvcmUgUmVhZHlGb3JRdWVyeSBpcy4KIAkJCQkgKi8KLQkJCQlpZiAobm90 aWZ5SW50ZXJydXB0UGVuZGluZykKKwkJCQlpZiAoSXNOb3RpZnlJbnRlcnJ1cHRQZW5kaW5n KCkpCiAJCQkJCVByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQoZmFsc2UpOwogCiAJCQkJLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9hc3luYy5oCmluZGV4IGY3NWMzZGY5NTU2Li43ZjJlMGFjMGI5ZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9hc3luYy5oCkBAIC0xNyw3ICsxNyw2IEBACiAKIGV4dGVybiBQR0RMTElNUE9S VCBib29sIFRyYWNlX25vdGlmeTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X25vdGlm eV9xdWV1ZV9wYWdlczsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZzsKIAogZXh0ZXJuIFNpemUgQXN5bmNTaG1lbVNp emUodm9pZCk7CiBleHRlcm4gdm9pZCBBc3luY1NobWVtSW5pdCh2b2lkKTsKQEAgLTQ2LDQg KzQ1LDcgQEAgZXh0ZXJuIHZvaWQgSGFuZGxlTm90aWZ5SW50ZXJydXB0KHZvaWQpOwogLyog cHJvY2VzcyBpbnRlcnJ1cHRzICovCiBleHRlcm4gdm9pZCBQcm9jZXNzTm90aWZ5SW50ZXJy dXB0KGJvb2wgZmx1c2gpOwogCisvKiBjaGVjayBpZiBub3RpZmljYXRpb24gaW50ZXJydXB0 IGlzIHBlbmRpbmcgKi8KK2V4dGVybiBib29sIElzTm90aWZ5SW50ZXJydXB0UGVuZGluZyh2 b2lkKTsKKwogI2VuZGlmCQkJCQkJCS8qIEFTWU5DX0ggKi8KLS0gCjIuNDcuMQoK --e1d002f53a09478886f8aede5c06de37 Content-Disposition: attachment; filename*0="0002-Optimize-LISTEN-NOTIFY-wakeup-by-replacing-signal-wi.pat"; filename*1="ch" Content-Type: application/octet-stream; name="=?UTF-8?Q?0002-Optimize-LISTEN-NOTIFY-wakeup-by-replacing-signal-wi.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAzMWU0MTk3NDdhYjkyZGJjMjlkMGQ5ZGI1OGQ4OGZmMmQyY2FmNWM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9y Zz4KRGF0ZTogVGh1LCAyNCBKdWwgMjAyNSAyMToxNzoxOSArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMi8yXSBPcHRpbWl6ZSBMSVNURU4vTk9USUZZIHdha2V1cCBieSByZXBsYWNpbmcgc2ln bmFsIHdpdGgKIGRpcmVjdCBTZXRMYXRjaAoKQnVpbGRpbmcgdXBvbiB0aGUgcm9idXN0IGF0 b21pYyBzdGF0ZSBtYWNoaW5lIGludHJvZHVjZWQgaW4gdGhlIHByZXZpb3VzCmNvbW1pdCwg dGhpcyBjaGFuZ2UgY29tcGxldGVzIHRoZSBtb2Rlcm5pemF0aW9uIG9mIE5PVElGWSBJUEMg YnkKcmVwbGFjaW5nIGl0cyB3YWtldXAgbWVjaGFuaXNtLiBXaXRoIGludGVyLXByb2Nlc3Mg c3RhdGUgbm93IG1hbmFnZWQKcmVsaWFibHksIHRoZSBoZWF2eXdlaWdodCBTSUdVU1IxIHNp Z25hbCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFuZCBpcwpyZXBsYWNlZCB3aXRoIGEgbXVj aCBtb3JlIGVmZmljaWVudCwgZGlyZWN0ICJwb2tlLiIKClRoZSBhc3luYy5jIG5vdGlmaWVy IG5vdyByZXBsYWNlcyBpdHMgY2FsbCB0byBTZW5kUHJvY1NpZ25hbCB3aXRoIGEKZGlyZWN0 IGNhbGwgdG8gU2V0TGF0Y2ggb24gdGhlIHRhcmdldCBiYWNrZW5kJ3MgcHJvY0xhdGNoLiBU aGlzIGlzIGEKc2lnbmlmaWNhbnQgb3B0aW1pemF0aW9uIGJlY2F1c2UgV2FpdExhdGNoLCB3 aGljaCBsaXN0ZW5lcnMgYWxyZWFkeSB1c2UKZm9yIGJsb2NraW5nLCBpcyB1bmRlcnBpbm5l ZCBieSB0aGUgbW9kZXJuIFdhaXRFdmVudFNldCBhYnN0cmFjdGlvbgooa3F1ZXVlLCBlcG9s bCwgZXRjLikuIFdlIG5vdyBsZXZlcmFnZSB0aGlzIGV4aXN0aW5nLCBoaWdobHkgZWZmaWNp ZW50CmluZnJhc3RydWN0dXJlIGZvciB0aGUgd2FrZXVwLCBjb21wbGV0ZWx5IGJ5cGFzc2lu ZyB0aGUga2lsbCgpIHN5c2NhbGwKYW5kIHRoZSBTSUdVU1IxIHNpZ25hbCBoYW5kbGVyIGZv ciBhbGwgTk9USUZZIGV2ZW50cy4KClRoaXMgZGVtb25zdHJhdGVzIGEgcG93ZXJmdWwsIHR3 by1zdGVwIG1pZ3JhdGlvbiBwYXR0ZXJuOgoKMS4gRmlyc3QsIHNvbHZlIGEgc3Vic3lzdGVt J3Mgc3RhdGUgc3luY2hyb25pemF0aW9uIHByb2JsZW0gd2l0aCBhCiAgIGxvY2stZnJlZSwg YXRvbWljIEZTTSB0byBlbGltaW5hdGUgcmVkdW5kYW50IHNpZ25hbGluZy4KCjIuIFRoZW4s IHdpdGggc3RhdGUgbWFuYWdlbWVudCBoYW5kbGVkLCBtYWtlIHRoZSB3YWtldXAgaXRzZWxm IGNoZWFwZXIKICAgYnkgcmVwbGFjaW5nIHRoZSBleHBlbnNpdmUgc2lnbmFsIHdpdGggYSBk aXJlY3QgU2V0TGF0Y2guCgpUaGlzIHN0YWdlZCBhcHByb2FjaCBhbGxvd3MgdXMgdG8gbW9k ZXJuaXplIHN1YnN5c3RlbXMgaW5jcmVtZW50YWxseSBhbmQKc2FmZWx5LiBCeSBhcHBseWlu ZyB0aGlzIHBhdHRlcm4gdG8gYXN5bmMuYywgd2UgcHJvdmUgaXRzIHZpYWJpbGl0eSBhbmQK c2ltcGxpY2l0eSwgY3JlYXRpbmcgYSBjbGVhciB0ZW1wbGF0ZSBmb3Igb3RoZXIgcGFydHMg b2YgdGhlIHN5c3RlbSB0bwpmb2xsb3cgaW4gbW92aW5nIHRvd2FyZHMgYSBtb3JlIHBlcmZv cm1hbnQsIHNpZ25hbC1mcmVlIElQQyBtb2RlbC4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9hc3luYy5jIHwgMjUgKysrKysrKysrKysrKysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDE5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5j LmMKaW5kZXggYWUyMDAxN2FmOWIuLmM4NzE3NzRiNzJjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5j LmMKQEAgLTE0Miw2ICsxNDIsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAj aW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CkBAIC0xNzE5LDEzICsxNzIwLDI1IEBAIFNpZ25hbEJhY2tlbmRzKHZvaWQpCiAJCQllbHNl CiAJCQl7CiAJCQkJLyoKLQkJCQkgKiBOb3RlOiBhc3N1bWluZyB0aGluZ3MgYXJlbid0IGJy b2tlbiwgYSBzaWduYWwgZmFpbHVyZSBoZXJlIGNvdWxkCi0JCQkJICogb25seSBvY2N1ciBp ZiB0aGUgdGFyZ2V0IGJhY2tlbmQgZXhpdGVkIHNpbmNlIHdlIHJlbGVhc2VkCi0JCQkJICog Tm90aWZ5UXVldWVMb2NrOyB3aGljaCBpcyB1bmxpa2VseSBidXQgY2VydGFpbmx5IHBvc3Np YmxlLiBTbyB3ZQotCQkJCSAqIGp1c3QgbG9nIGEgbG93LWxldmVsIGRlYnVnIG1lc3NhZ2Ug aWYgaXQgaGFwcGVucy4KKwkJCQkgKiBHZXQgdGhlIHRhcmdldCBiYWNrZW5kJ3MgUEdQUk9D IGFuZCBzZXQgaXRzIGxhdGNoLgorCQkJCSAqCisJCQkJICogTm90ZTogVGhlIHRhcmdldCBi YWNrZW5kIG1pZ2h0IGV4aXQgYWZ0ZXIgd2UgcmVsZWFzZWQKKwkJCQkgKiBOb3RpZnlRdWV1 ZUxvY2sgYnV0IGJlZm9yZSB3ZSBzZXQgdGhlIGxhdGNoLiBXZSBuZWVkIHRvCisJCQkJICog aGFuZGxlIHRoZSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgUEdQUk9DIHNsb3QgbWlnaHQg YmUKKwkJCQkgKiByZWN5Y2xlZCBieSBhIG5ldyBwcm9jZXNzIHdpdGggYSBkaWZmZXJlbnQg UElELgogCQkJCSAqLwotCQkJCWlmIChTZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfTk9U SUZZX0lOVEVSUlVQVCwgcHJvY25vKSA8IDApCi0JCQkJCWVsb2coREVCVUczLCAiY291bGQg bm90IHNpZ25hbCBiYWNrZW5kIHdpdGggUElEICVkOiAlbSIsIHBpZCk7CisJCQkJUEdQUk9D ICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocHJvY25vKTsKKworCQkJCS8qIFZlcmlmeSB0 aGUgUElEIGhhc24ndCBjaGFuZ2VkIChiYWNrZW5kIGhhc24ndCBleGl0ZWQpICovCisJCQkJ aWYgKHByb2MtPnBpZCA9PSBwaWQpCisJCQkJeworCQkJCQlTZXRMYXRjaCgmcHJvYy0+cHJv Y0xhdGNoKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogQmFja2VuZCBleGl0 ZWQgYW5kIHNsb3Qgd2FzIHJlY3ljbGVkICovCisJCQkJCWVsb2coREVCVUczLCAiY291bGQg bm90IHNpZ25hbCBiYWNrZW5kIHdpdGggUElEICVkOiBwcm9jZXNzIG5vIGxvbmdlciBleGlz dHMiLCBwaWQpOworCQkJCX0KIAkJCX0KIAkJfQogCX0KLS0gCjIuNDcuMQoK --e1d002f53a09478886f8aede5c06de37--