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 1qRvho-003doI-4D for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Aug 2023 14:23:04 +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 1qRvhk-0083YH-Pp for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Aug 2023 14:23:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qRvhk-0083Y9-8G for pgsql-hackers@lists.postgresql.org; Fri, 04 Aug 2023 14:23:00 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qRvhh-000Vo7-EH for pgsql-hackers@lists.postgresql.org; Fri, 04 Aug 2023 14:22:59 +0000 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-3fe2fb9b4d7so20532995e9.1 for ; Fri, 04 Aug 2023 07:22:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691158976; x=1691763776; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=ItiVwjm/qm/qdZBuruPomLQp2NZ4F67d+ap//62Ovwo=; b=K6xTd8WosnMwUepB8AzuVMBHDCPGEZXND0Pnc2ffBw63mPzgTbXn6s1VS0xy4NHo97 fxYnvZsAVi4dkbuMlVSEAiD4DcQRkZwP9zbSz2q8F5Pa3mMNBz0+UZtXpPgkUfvKMeNa Gi6aEmBKb8vvNV/XjU/w5vzOufCsg9CnnvWNKR7HqHC7BB5y/c08NqyxRmi1bndq9b+W +mJYv6zob/6AG7JXQR0Yfa3YH4F1NzCMmeLmpQ9qaBeo33mp7HAIxBN/Vyn7N30shuby J/XLPxNhpItCQHSXk//NBMFoMxnX3jYb+5XLTvPiL1SAPrKEqPDMB+mV1jgd4RrmW0MR Znig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691158976; x=1691763776; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ItiVwjm/qm/qdZBuruPomLQp2NZ4F67d+ap//62Ovwo=; b=YLf0cAijvaaoFY20ZiZkwxtJv0G+fOhwxz7uLxz0ipdTA4d0ZUxqfFrmkZT4w2xvzP SSYUP9ZcpG297RmvYnMbsAqQmcxIsk8G+O0ozXOCpjbq6OKu2FmMHboe1ZOOZuZWUXlm tFZSkq2T8VemgDfTXMShzucqFLBbqrOEcRaaRJChmrY5BFZfQ7Vv45yZda4ACSDEn2oY tEIwLX3uQvZL6Yr7un7tWUnaC1SyCim/h5THXZbxVosrgTLjzLQgCk09O5tUpGfgGsaX GqMaVQ0A4FF175vWTFhQZPgQCu9RktjqDXXwlYsuHTFLJoOM5k2swDhXHW0ybc7La6qa yVzQ== X-Gm-Message-State: AOJu0YwgXnKM6nd0b/SLYe6vFvECfB/dCVNxxpNP0/Q3xg2eXtuXC4sF ik0SOdJnjGuzd/CWg2eE11AM/yebBUY= X-Google-Smtp-Source: AGHT+IEJbtd0Pu3Y2YHJ1w+Cqc2PkrobpntCXH+3Gdo51vpNN3yCVVqaelQUie205Elu1+b1JbKUxg== X-Received: by 2002:a7b:c4cb:0:b0:3fc:7d2:e0c0 with SMTP id g11-20020a7bc4cb000000b003fc07d2e0c0mr1682471wmk.27.1691158975778; Fri, 04 Aug 2023 07:22:55 -0700 (PDT) Received: from ?IPV6:2a01:cb11:55e:1700:b990:c4cc:ef8a:a310? ([2a01:cb11:55e:1700:b990:c4cc:ef8a:a310]) by smtp.gmail.com with ESMTPSA id v20-20020a7bcb54000000b003fbfef555d2sm6838700wmj.23.2023.08.04.07.22.54 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 04 Aug 2023 07:22:55 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------CqlcyQmxEHfrb7553LQ4HEVk" Message-ID: <0e2ae164-dc89-03c3-cf7f-de86378053ac@gmail.com> Date: Fri, 4 Aug 2023 16:22:54 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: "Drouvot, Bertrand" Subject: WIP: new system catalog pg_wait_event To: PostgreSQL Hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------CqlcyQmxEHfrb7553LQ4HEVk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi hackers, Now that fa88928470 generates automatically code and documentation related to wait events, why not exposing the wait events description through a system catalog relation? (the idea has been proposed on twitter by Yves Colin [1]). I think that could be useful to: - join this new relation with pg_stat_activity and have a quick understanding of what the sessions are waiting for (if any). - quickly compare the wait events across versions (what are the new ones if any,..) Please find attached a POC patch creating this new system catalog pg_wait_event. The patch: - updates the documentation - adds a new option to generate-wait_event_types.pl to generate the pg_wait_event.dat - creates the pg_wait_event.h - works with autoconf It currently does not: - works with meson (has to be done) - add tests (not sure it's needed) - create an index on the new system catalog (not sure it's needed as the data fits in 4 pages (8kB default size)). Outcome example: postgres=# select a.pid, a.application_name, a.wait_event,d.description from pg_stat_activity a, pg_wait_event d where a.wait_event = d.wait_event_name and state='active'; pid | application_name | wait_event | description ---------+------------------+-------------+------------------------------------------------------------------- 2937546 | pgbench | WALInitSync | Waiting for a newly initialized WAL file to reach durable storage (1 row) There is still some work to be done to generate the pg_wait_event.dat file, specially when the same wait event name can be found in multiple places (like for example "WALWrite" in IO and LWLock), leading to: postgres=# select * from pg_wait_event where wait_event_name = 'WALWrite'; wait_event_name | description -----------------+---------------------------------------------------------------------------------- WALWrite | Waiting for a write to a WAL file. Waiting for WAL buffers to be written to disk WALWrite | Waiting for WAL buffers to be written to disk (2 rows) which is obviously not right (we'll probably have to add the wait class name to the game). I'm sharing it now (even if it's still WIP) so that you can start sharing your thoughts about it. [1]: https://twitter.com/Ycolin/status/1676598065048743948 Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------CqlcyQmxEHfrb7553LQ4HEVk Content-Type: text/plain; charset=UTF-8; name="v1-0001-pg_wait_event.patch" Content-Disposition: attachment; filename="v1-0001-pg_wait_event.patch" Content-Transfer-Encoding: base64 RnJvbSBjNTZjZTEzYWY3MTkzYmYwZDY3OWVjMGE3NTMzYWI2ODY0NjRmMzRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2 b3QucGdAZ21haWwuY29tPgpEYXRlOiBUdWUsIDEgQXVnIDIwMjMgMDM6NTU6NTEgKzAwMDAK U3ViamVjdDogW1BBVENIIHYxXSBwZ193YWl0X2V2ZW50CgpBZGRpbmcgYSBuZXcgc2hhcmVk IGNhdGFsb2cgcmVsYXRpb24sIG5hbWVseSBwZ193YWl0X2V2ZW50LCB0aGF0IGRlc2NyaWJl cyB0aGUKd2FpdCBldmVudHMuCgpUaGUgY29udGVudCBpcyBhdXRvLWdlbmVyYXRlZCB3aXRo IGdlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMucGwuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgNjIgKysrKysrKysrKysrKysrKysrCiBz cmMvYmFja2VuZC9jYXRhbG9nLy5naXRpZ25vcmUgICAgICAgICAgICAgICAgfCAgMSArCiBz cmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAxMyArKy0t CiBzcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYyAgICAgICAgICAgICAgICAgfCAgNCAr LQogLi4uL2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMucGwgICAgIHwgNjUg KysrKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgg ICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfd2FpdF9ldmVu dC5oICAgICAgICAgICB8IDQ1ICsrKysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMTg0 IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAgMjYuNyUgZG9jL3NyYy9zZ21sLwog IDE2LjUlIHNyYy9iYWNrZW5kL2NhdGFsb2cvCiAgMzMuNiUgc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvCiAgMjMuMCUgc3JjL2luY2x1ZGUvY2F0YWxvZy8KCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IDMwN2FkODhiNTAuLmYxODFhNWNlZGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0z NjksNiArMzY5LDExIEBACiAgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1w Zy11c2VyLW1hcHBpbmciPjxzdHJ1Y3RuYW1lPnBnX3VzZXJfbWFwcGluZzwvc3RydWN0bmFt ZT48L2xpbms+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5tYXBwaW5ncyBvZiB1c2VycyB0byBm b3JlaWduIHNlcnZlcnM8L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctd2FpdC1ldmVudCI+PHN0cnVj dG5hbWU+cGdfd2FpdF9ldmVudDwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT53YWl0IGV2ZW50cyBkZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93Pgog ICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KQEAgLTk2NjgsNCArOTY3 Myw2MSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICA8L3RhYmxlPgogIDwvc2Vj dDE+CiAKKworIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy13YWl0LWV2ZW50Ij4KKyAgPHRpdGxl PjxzdHJ1Y3RuYW1lPnBnX3dhaXRfZXZlbnQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8 aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctd2FpdC1ldmVudCI+CisgICA8cHJpbWFyeT5w Z193YWl0X2V2ZW50PC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAg IFRoZSBjYXRhbG9nIDxzdHJ1Y3RuYW1lPnBnX3dhaXRfZXZlbnQ8L3N0cnVjdG5hbWU+IHN0 b3JlcyBkZXNjcmlwdGlvbiBhYm91dAorICAgdGhlIHdhaXQgZXZlbnRzLgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICBVbmxpa2UgbW9zdCBzeXN0ZW0gY2F0YWxvZ3MsIDxzdHJ1Y3Ru YW1lPnBnX3dhaXRfZXZlbnQ8L3N0cnVjdG5hbWU+CisgICBpcyBzaGFyZWQgYWNyb3NzIGFs bCBkYXRhYmFzZXMgb2YgYSBjbHVzdGVyOiB0aGVyZSBpcyBvbmx5IG9uZQorICAgY29weSBv ZiA8c3RydWN0bmFtZT5wZ193YWl0X2V2ZW50PC9zdHJ1Y3RuYW1lPiBwZXIgY2x1c3Rlciwg bm90CisgICBvbmUgcGVyIGRhdGFiYXNlLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3dhaXRfZXZlbnQ8L3N0cnVjdG5hbWU+IENvbHVtbnM8 L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53YWl0X2V2ZW50 X25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgV2FpdCBldmVudCBuYW1lCisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPmRlc2NyaXB0aW9uPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4 dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFdhaXQgZXZl bnQgZGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKwogPC9j aGFwdGVyPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy8uZ2l0aWdub3JlIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy8uZ2l0aWdub3JlCmluZGV4IDIzN2ZmNTQxNjUuLjdmMmYz MDQ1ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvLmdpdGlnbm9yZQorKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nLy5naXRpZ25vcmUKQEAgLTQsMyArNCw0IEBACiAvc3lz dGVtX2NvbnN0cmFpbnRzLnNxbAogL3BnXypfZC5oCiAvYmtpLXN0YW1wCisvcGdfd2FpdF9l dmVudC5kYXQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUgYi9z cmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IGE2MDEwN2JmOTQuLjY4YTk3ZmJk Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtNzIsNyArNzIsOCBAQCBDQVRBTE9HX0hF QURFUlMgOj0gXAogCXBnX2NvbGxhdGlvbi5oIHBnX3BhcmFtZXRlcl9hY2wuaCBwZ19wYXJ0 aXRpb25lZF90YWJsZS5oIFwKIAlwZ19yYW5nZS5oIHBnX3RyYW5zZm9ybS5oIFwKIAlwZ19z ZXF1ZW5jZS5oIHBnX3B1YmxpY2F0aW9uLmggcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgg XAotCXBnX3B1YmxpY2F0aW9uX3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIHBnX3N1YnNjcmlw dGlvbl9yZWwuaAorCXBnX3B1YmxpY2F0aW9uX3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIHBn X3N1YnNjcmlwdGlvbl9yZWwuaCBcCisJcGdfd2FpdF9ldmVudC5oCiAKIEdFTkVSQVRFRF9I RUFERVJTIDo9ICQoQ0FUQUxPR19IRUFERVJTOiUuaD0lX2QuaCkgc2NoZW1hcGcuaCBzeXN0 ZW1fZmtfaW5mby5oCiAKQEAgLTg5LDkgKzkwLDEzIEBAIFBPU1RHUkVTX0JLSV9EQVRBID0g JChhZGRwcmVmaXggJCh0b3Bfc3JjZGlyKS9zcmMvaW5jbHVkZS9jYXRhbG9nLyxcCiAJcGdf dHNfdGVtcGxhdGUuZGF0IHBnX3R5cGUuZGF0IFwKIAkpCiAKLWFsbDogZGlzdHByZXAgZ2Vu ZXJhdGVkLWhlYWRlci1zeW1saW5rcworYWxsOiBkaXN0cHJlcCBnZW5lcmF0ZWQtaGVhZGVy LXN5bWxpbmtzIHBnX3dhaXRfZXZlbnQuZGF0CiAKLWRpc3RwcmVwOiBia2ktc3RhbXAKK3Bn X3dhaXRfZXZlbnQuZGF0OgorCSQoUEVSTCkgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9nZW5lcmF0ZS13YWl0X2V2ZW50X3R5cGVzLnBsIC0tZGF0YSAkKHRv cF9zcmNkaXIpL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMu dHh0CisJJChMTl9TKSAiJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3dh aXRfZXZlbnQuZGF0IiAnJCh0b3Bfc3JjZGlyKS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3dh aXRfZXZlbnQuZGF0JworCitkaXN0cHJlcDogcGdfd2FpdF9ldmVudC5kYXQgYmtpLXN0YW1w CiAKIC5QSE9OWTogZ2VuZXJhdGVkLWhlYWRlci1zeW1saW5rcwogCkBAIC0xNDMsNCArMTQ4 LDQgQEAgdW5pbnN0YWxsLWRhdGE6CiBjbGVhbjoKIAogbWFpbnRhaW5lci1jbGVhbjogY2xl YW4KLQlybSAtZiBia2ktc3RhbXAgcG9zdGdyZXMuYmtpIHN5c3RlbV9jb25zdHJhaW50cy5z cWwgJChHRU5FUkFURURfSEVBREVSUykKKwlybSAtZiBwZ193YWl0X2V2ZW50LmRhdCBia2kt c3RhbXAgcG9zdGdyZXMuYmtpIHN5c3RlbV9jb25zdHJhaW50cy5zcWwgJChHRU5FUkFURURf SEVBREVSUykgJCh0b3Bfc3JjZGlyKS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3dhaXRfZXZl bnQuZGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCmluZGV4IDFiZjZjNTYzM2MuLmRhMTIyNDc1 NTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Rh Ymxlc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3dhaXRfZXZlbnQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTI1 NSw3ICsyNTYsOCBAQCBJc1NoYXJlZFJlbGF0aW9uKE9pZCByZWxhdGlvbklkKQogCQlyZWxh dGlvbklkID09IFNoYXJlZERlc2NyaXB0aW9uUmVsYXRpb25JZCB8fAogCQlyZWxhdGlvbklk ID09IFNoYXJlZFNlY0xhYmVsUmVsYXRpb25JZCB8fAogCQlyZWxhdGlvbklkID09IFN1YnNj cmlwdGlvblJlbGF0aW9uSWQgfHwKLQkJcmVsYXRpb25JZCA9PSBUYWJsZVNwYWNlUmVsYXRp b25JZCkKKwkJcmVsYXRpb25JZCA9PSBUYWJsZVNwYWNlUmVsYXRpb25JZCB8fAorCQlyZWxh dGlvbklkID09IFdhaXRFdmVudFJlbGF0aW9uSWQpCiAJCXJldHVybiB0cnVlOwogCS8qIFRo ZXNlIGFyZSB0aGVpciBpbmRleGVzICovCiAJaWYgKHJlbGF0aW9uSWQgPT0gQXV0aElkT2lk SW5kZXhJZCB8fApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvZ2Vu ZXJhdGUtd2FpdF9ldmVudF90eXBlcy5wbCBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMucGwKaW5kZXggNTYzMzVlODczMC4uODFmMjFl YWY0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvZ2VuZXJhdGUt d2FpdF9ldmVudF90eXBlcy5wbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9n ZW5lcmF0ZS13YWl0X2V2ZW50X3R5cGVzLnBsCkBAIC01LDYgKzUsNyBAQAogIyAtIHdhaXRf ZXZlbnRfdHlwZXMuaCAoaWYgLS1jb2RlIGlzIHBhc3NlZCkKICMgLSBwZ3N0YXRfd2FpdF9l dmVudC5jIChpZiAtLWNvZGUgaXMgcGFzc2VkKQogIyAtIHdhaXRfZXZlbnRfdHlwZXMuc2dt bCAoaWYgLS1kb2NzIGlzIHBhc3NlZCkKKyMgLSBwZ193YWl0X2V2ZW50LmRhdCAoaWYgLS1k YXRhIGlzIHBhc3NlZCkKICMKICMgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjMs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAjIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CkBAIC0yMCw2ICsyMSw3IEBAIHVzZSBHZXRvcHQ6Okxvbmc7CiBteSAkb3V0cHV0X3BhdGgg PSAnLic7CiBteSAkZ2VuX2RvY3MgPSAwOwogbXkgJGdlbl9jb2RlID0gMDsKK215ICRnZW5f ZGF0YSA9IDA7CiAKIG15ICRjb250aW51ZSA9ICJcbiI7CiBteSAlaGFzaHdlOwpAQCAtMjcs MTQgKzI5LDIxIEBAIG15ICVoYXNod2U7CiBHZXRPcHRpb25zKAogCSdvdXRkaXI6cycgPT4g XCRvdXRwdXRfcGF0aCwKIAknZG9jcycgPT4gXCRnZW5fZG9jcywKKwknZGF0YScgPT4gXCRn ZW5fZGF0YSwKIAknY29kZScgPT4gXCRnZW5fY29kZSkgfHwgdXNhZ2UoKTsKIAotZGllICJO ZWVkcyB0byBzcGVjaWZ5IC0tZG9jcyBvciAtLWNvZGUiCi0gIGlmICghJGdlbl9kb2NzICYm ICEkZ2VuX2NvZGUpOworZGllICJOZWVkcyB0byBzcGVjaWZ5IC0tZG9jcywgLS1jb2RlIG9y IC0tZGF0YSIKKyAgaWYgKCEkZ2VuX2RvY3MgJiYgISRnZW5fY29kZSAmJiAhJGdlbl9kYXRh KTsKIAogZGllICJOb3QgcG9zc2libGUgdG8gc3BlY2lmeSAtLWRvY3MgYW5kIC0tY29kZSBz aW11bHRhbmVvdXNseSIKICAgaWYgKCRnZW5fZG9jcyAmJiAkZ2VuX2NvZGUpOwogCitkaWUg Ik5vdCBwb3NzaWJsZSB0byBzcGVjaWZ5IC0tZG9jcyBhbmQgLS1kYXRhIHNpbXVsdGFuZW91 c2x5IgorICBpZiAoJGdlbl9kb2NzICYmICRnZW5fZGF0YSk7CisKK2RpZSAiTm90IHBvc3Np YmxlIHRvIHNwZWNpZnkgLS1jb2RlIGFuZCAtLWRhdGEgc2ltdWx0YW5lb3VzbHkiCisgIGlm ICgkZ2VuX2NvZGUgJiYgJGdlbl9kYXRhKTsKKwogb3BlbiBteSAkd2FpdF9ldmVudF9uYW1l cywgJzwnLCAkQVJHVlswXSBvciBkaWU7CiAKIG15IEBsaW5lczsKQEAgLTIzOSw3ICsyNDgs NTkgQEAgZWxzaWYgKCRnZW5fZG9jcykKIAlyZW5hbWUoJHN0bXAsICIkb3V0cHV0X3BhdGgv d2FpdF9ldmVudF90eXBlcy5zZ21sIikKIAkgIHx8IGRpZSAicmVuYW1lOiAkc3RtcCB0byAk b3V0cHV0X3BhdGgvd2FpdF9ldmVudF90eXBlcy5zZ21sOiAkISI7CiB9CisjIEdlbmVyYXRl IHRoZSAuZGF0IGZpbGUuCitlbHNpZiAoJGdlbl9kYXRhKQorewogCisJIyBJbmNsdWRlIFBJ RCBpbiBzdWZmaXggaW4gY2FzZSBwYXJhbGxlbCBtYWtlIHJ1bnMgdGhpcyBzY3JpcHQKKwkj IG11bHRpcGxlIHRpbWVzLgorCW15ICRkdG1wID0gIiRvdXRwdXRfcGF0aC9wZ193YWl0X2V2 ZW50LmRhdC50bXAkJCI7CisJb3BlbiBteSAkZCwgJz4nLCAkZHRtcCBvciBkaWUgIkNvdWxk IG5vdCBvcGVuICRkdG1wOiAkISI7CisKKwlteSAkZGF0YV9oZWFkZXJfY29tbWVudCA9Cisn Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgJXMKKyMgICAgSW5pdGlhbCBjb250ZW50cyBvZiB0 aGUgcGdfd2FpdF9ldmVudCBzeXN0ZW0gY2F0YWxvZy4KKyMKKyMgUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisjIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisjCisjIE5PVEVTCisjICAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyMgICoqKiBETyBOT1QgRURJVCBUSElTIEZJTEUhICoqKgorIyAgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisjCisjICBJdCBoYXMgYmVlbiBHRU5FUkFU RUQgYnkgc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvZ2VuZXJhdGUtd2FpdF9ldmVudF90 eXBlcy5wbAorIworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyc7CisKKwlwcmludGYgJGQgJGRhdGFf aGVhZGVyX2NvbW1lbnQsICdwZ193YWl0X2V2ZW50LmRhdCc7CisJcHJpbnRmICRkICJbXG5c biI7CisKKwkjIHVjKCkgaXMgYmVpbmcgdXNlZCB0byBmb3JjZSB0aGUgY29tcGFyaXNvbiB0 byBiZSBjYXNlLWluc2Vuc2l0aXZlLgorCWZvcmVhY2ggbXkgJHdhaXRjbGFzcyAoc29ydCB7 IHVjKCRhKSBjbXAgdWMoJGIpIH0ga2V5cyAlaGFzaHdlKQorCXsKKwkJZm9yZWFjaCBteSAk d2V2IChAeyAkaGFzaHdleyR3YWl0Y2xhc3N9IH0pCisJCXsKKwkJCW15ICRuZXdfZGVzYyA9 IHN1YnN0ciAkd2V2LT5bMl0sIDEsIC0yOworCQkJJG5ld19kZXNjID1+IHMvJy9cXCcvZzsK KwkJCSRuZXdfZGVzYyA9fiBzLzwuKj4oLio/KTwuKj4vJDEvZzsKKwkJCSRuZXdfZGVzYyA9 fiBzLzx4cmVmIGxpbmtlbmQ9Imd1Yy0oLio/KSJcLz4vJDEvZzsKKwkJCSRuZXdfZGVzYyA9 fiBzLzsgc2VlLiokLy87CisKKwkJCXByaW50ZiAkZCAieyB3YWl0X2V2ZW50X25hbWUgPT4g JyR3ZXYtPlsxXScsIGRlc2NyaXB0aW9uID0+ICclcycgfSxcbiIsCisJCQkJCQkkbmV3X2Rl c2M7CisJCX0KKwl9CisKKwlwcmludGYgJGQgIlxuXSI7CisJY2xvc2UgJGQ7CisKKwlyZW5h bWUoJGR0bXAsICIkb3V0cHV0X3BhdGgvcGdfd2FpdF9ldmVudC5kYXQiKQorCSAgfHwgZGll ICJyZW5hbWU6ICRkdG1wIHRvICRvdXRwdXRfcGF0aC9wZ193YWl0X2V2ZW50LmRhdDogJCEi OworfQogY2xvc2UgJHdhaXRfZXZlbnRfbmFtZXM7CiAKIHN1YiB1c2FnZQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL2NhdHZlcnNpb24uaAppbmRleCBmNTA3YjQ5YmIyLi41YTUzNDc3MWVkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcsNiBAQAogICovCiAKIC8qCQkJ CQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyMzA3MjYx CisjZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDIzMDgwMTEKIAogI2VuZGlmCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfd2FpdF9ldmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjk2NDdkNDViZDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3dhaXRfZXZlbnQuaApAQCAtMCwwICsxLDQ1IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBwZ193YWl0X2V2ZW50LmgKKyAqCSAgZGVmaW5pdGlvbiBv ZiB0aGUgIndhaXQgZXZlbnQiIHN5c3RlbSBjYXRhbG9nIChwZ193YWl0X2V2ZW50KQorICoK KyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ193YWl0X2V2ZW50LmgKKyAqCisgKiBOT1RFUworICoJICBU aGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNjaGVt YQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2lmbmRlZiBQR19TRV9ICisjZGVmaW5lIFBHX1dBSVRfRVZFTlRfSAorCisjaW5jbHVkZSAi Y2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3dhaXRfZXZlbnRfZC5o IgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfd2FpdF9ldmVudCBkZWZpbml0aW9u LiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3Bn X3dhaXRfZXZlbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ193YWl0 X2V2ZW50LDg0MDMsV2FpdEV2ZW50UmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTgor eworI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBz dGFydCBoZXJlICovCisJdGV4dAkJd2FpdF9ldmVudF9uYW1lIEJLSV9GT1JDRV9OT1RfTlVM TDsKKworCXRleHQJCWRlc2NyaXB0aW9uIEJLSV9GT1JDRV9OT1RfTlVMTDsKKyNlbmRpZgor fSBGb3JtRGF0YV9wZ193YWl0X2V2ZW50OworCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKiAg ICAgIEZvcm1fcGdfd2FpdF9ldmVudCBjb3JyZXNwb25kcyB0byBhIHBvaW50ZXIgdG8gYSB0 dXBsZSB3aXRoCisgKiAgICAgIHRoZSBmb3JtYXQgb2YgcGdfd2FpdF9ldmVudCByZWxhdGlv bi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBGb3JtRGF0YV9wZ193YWl0 X2V2ZW50ICogRm9ybV9wZ193YWl0X2V2ZW50OworCisjZW5kaWYJCQkJCQkJLyogUEdfV0FJ VF9FVkVOVF9IICovCi0tIAoyLjM0LjEKCg== --------------CqlcyQmxEHfrb7553LQ4HEVk--