Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pSyNB-0008AE-9a for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Feb 2023 10:53:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pSyN9-0003xx-CZ for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Feb 2023 10:53:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pSyN8-0003xo-Vr for pgsql-hackers@lists.postgresql.org; Fri, 17 Feb 2023 10:53:47 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pSyN2-0004Pn-R6 for pgsql-hackers@postgresql.org; Fri, 17 Feb 2023 10:53:46 +0000 Received: by mail-wm1-x332.google.com with SMTP id l25so1231287wms.1 for ; Fri, 17 Feb 2023 02:53:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=hY99DuQ3XDCRbDmHotfMrkrPYQyMGLR7yBtt3kiyso4=; b=XY5VHeH+D3Trsix9q8dUhIsaq/d+1M4inxB6WN2207W58FUgXt/VPUqDPQGV4DK0Uq 3M4iwtH+GQ7m4W54EgJ1Lb7TuIZLrOciTGtGWBQpu9b7PJF31xKThPtV3UKLv3Nj+Ax2 q2JGTsCYfWbKIRd8Jg6a27YVEzM79+Lb1JaIf9aUXmcPaku//uZCfH2LPRxCwBbybjDB 5b6K2mtwbrTayCuzI2YRZLEbKz14/1Rp58vzHtbm+I1XvMWDw/o7e61ORlh9nD1d3i4H Y+z9c1bz86u6sVboH+h5VGJzFXhSZSsfeA0+J0TUsiHy48/iIE6OlzISl0Jow0Vv3RG2 6Biw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=hY99DuQ3XDCRbDmHotfMrkrPYQyMGLR7yBtt3kiyso4=; b=jx9yxJ4yRKCM+Uv7HPL+kcAmCaUp6L473naNtZtKMDLAfOzGfIeB4kjajhSfWIFVv+ IMGUZJzELwQyVLgraaSUxuMEbbwWXrNBbeEFdI+SRm14eCwVtUBWXAvOdC9rorllDTzz xLOTUf+Neeue/Z99ny8VEwMCg2SJ/DKct3asTfqilX5KeR2Kj6Pbhb7X1/C6mt+BouhH Wol9GdKXFC6Asa7ySrr9q6RUnoACjmEouGQ2tu/lVWXlisodPg5YKsFZnjMKcOattyGU 0ION8TMN6CpIoHQG1X6XXgNu1K9LJBPhxY/5LDftYoOTOBdl0g9U938whQ18g8FT7WxB IZFQ== X-Gm-Message-State: AO0yUKV+6+MZdesskyHDG0yv69LiaUXmcm7oV3R8CwUYm1KQ/AJWKeJJ OZ9nvEyKKnZqal0PL5uIY77+7rOlynqt+A== X-Google-Smtp-Source: AK7set8FpuGNRSPgC9wyl7N3ZzGI3FrpW04KrYJVWEVfeEkoRqrt3MujKiypjndZwPm0IpgdHA9+hQ== X-Received: by 2002:a05:600c:1f06:b0:3dc:3b29:7a4 with SMTP id bd6-20020a05600c1f0600b003dc3b2907a4mr4231753wmb.0.1676631218328; Fri, 17 Feb 2023 02:53:38 -0800 (PST) Received: from [192.168.1.244] ([176.43.99.98]) by smtp.gmail.com with ESMTPSA id 9-20020a05600c22c900b003e224ff61a8sm1270898wmg.43.2023.02.17.02.53.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 17 Feb 2023 02:53:37 -0800 (PST) Content-Type: multipart/mixed; boundary="------------bznyIeA1GF2EfYLd5FwvujdK" Message-ID: <9a8f5783-c001-43ae-4287-63776a08f1bd@gmail.com> Date: Fri, 17 Feb 2023 13:53:36 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: Refactor calculations to use instr_time Content-Language: en-US To: Andres Freund Cc: pgsql-hackers References: <1feedb83-7aa9-cb4b-5086-598349d3f555@gmail.com> <20230216161322.zg2k7ytvqiiqmwgc@awork3.anarazel.de> From: Nazir Bilal Yavuz In-Reply-To: <20230216161322.zg2k7ytvqiiqmwgc@awork3.anarazel.de> 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. --------------bznyIeA1GF2EfYLd5FwvujdK Content-Type: multipart/alternative; boundary="------------vbLhLUDptgEVEbKs7k3IjTPN" --------------vbLhLUDptgEVEbKs7k3IjTPN Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 2/16/23 19:13, Andres Freund wrote: >> +#define WALSTAT_ACC(fld, var_to_add) \ >> + (stats_shmem->stats.fld += var_to_add.fld) >> +#define WALLSTAT_ACC_INSTR_TIME_TYPE(fld) \ >> + (stats_shmem->stats.fld += INSTR_TIME_GET_MICROSEC(PendingWalStats.fld)) >> + WALSTAT_ACC(wal_records, diff); >> + WALSTAT_ACC(wal_fpi, diff); >> + WALSTAT_ACC(wal_bytes, diff); >> + WALSTAT_ACC(wal_buffers_full, PendingWalStats); >> + WALSTAT_ACC(wal_write, PendingWalStats); >> + WALSTAT_ACC(wal_sync, PendingWalStats); >> + WALLSTAT_ACC_INSTR_TIME_TYPE(wal_write_time); >> + WALLSTAT_ACC_INSTR_TIME_TYPE(wal_sync_time); >> #undef WALSTAT_ACC >> - >> LWLockRelease(&stats_shmem->lock); > WALSTAT_ACC is undefined, but WALLSTAT_ACC_INSTR_TIME_TYPE isn't. > > I'd not remove the newline before LWLockRelease(). > > >> /* >> diff --git a/src/include/pgstat.h b/src/include/pgstat.h >> index db9675884f3..295c5eabf38 100644 >> --- a/src/include/pgstat.h >> +++ b/src/include/pgstat.h >> @@ -445,6 +445,21 @@ typedef struct PgStat_WalStats >> TimestampTz stat_reset_timestamp; >> } PgStat_WalStats; >> >> +/* Created for accumulating wal_write_time and wal_sync_time as a >> instr_time > Minor code-formatting point: In postgres we don't put code in the same line as > a multi-line comment starting with the /*. So either > > /* single line comment */ > or > /* > * multi line > * comment > */ Thanks for the review. I updated the patch. Regards, Nazir Bilal Yavuz Microsoft --------------vbLhLUDptgEVEbKs7k3IjTPN Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit

Hi,


On 2/16/23 19:13, Andres Freund wrote:
+#define WALSTAT_ACC(fld, var_to_add) \
+ 	(stats_shmem->stats.fld += var_to_add.fld)
+#define WALLSTAT_ACC_INSTR_TIME_TYPE(fld) \
+	(stats_shmem->stats.fld += INSTR_TIME_GET_MICROSEC(PendingWalStats.fld))
+	WALSTAT_ACC(wal_records, diff);
+	WALSTAT_ACC(wal_fpi, diff);
+	WALSTAT_ACC(wal_bytes, diff);
+	WALSTAT_ACC(wal_buffers_full, PendingWalStats);
+	WALSTAT_ACC(wal_write, PendingWalStats);
+	WALSTAT_ACC(wal_sync, PendingWalStats);
+	WALLSTAT_ACC_INSTR_TIME_TYPE(wal_write_time);
+	WALLSTAT_ACC_INSTR_TIME_TYPE(wal_sync_time);
 #undef WALSTAT_ACC
-
 	LWLockRelease(&stats_shmem->lock);
WALSTAT_ACC is undefined, but WALLSTAT_ACC_INSTR_TIME_TYPE isn't.

I'd not remove the newline before LWLockRelease().


 	/*
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index db9675884f3..295c5eabf38 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -445,6 +445,21 @@ typedef struct PgStat_WalStats
 	TimestampTz stat_reset_timestamp;
 } PgStat_WalStats;
 
+/* Created for accumulating wal_write_time and wal_sync_time as a
instr_time
Minor code-formatting point: In postgres we don't put code in the same line as
a multi-line comment starting with the /*. So either

/* single line comment */
or
/*
 * multi line
 * comment
 */


Thanks for the review. I updated the patch.


Regards,
Nazir Bilal Yavuz
Microsoft



--------------vbLhLUDptgEVEbKs7k3IjTPN-- --------------bznyIeA1GF2EfYLd5FwvujdK Content-Type: text/x-diff; charset=UTF-8; name="v2-0001-Refactor-instr_time-calculations.patch" Content-Disposition: attachment; filename="v2-0001-Refactor-instr_time-calculations.patch" Content-Transfer-Encoding: base64 RnJvbSBlMzcyM2FjYThiNzliMDcxOTA4MzRiMGNmZDE0NDBkYmJmNzA2ODYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXppciBCaWxhbCBZYXZ1eiA8YnlhdnV6ODFAZ21h aWwuY29tPgpEYXRlOiBUaHUsIDIgRmViIDIwMjMgMTU6MDY6NDggKzAzMDAKU3ViamVjdDog W1BBVENIIHYyXSBSZWZhY3RvciBpbnN0cl90aW1lIGNhbGN1bGF0aW9ucwoKLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgfCAgNiArKy0tLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgICAgICB8ICA2ICsrLS0tLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3dhbC5jIHwgMjcgKysrKysrKysrKysrKy0t LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAgIHwg MTggKysrKysrKysrKysrKysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygr KSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4 IGY5ZjBmNmRiOGQxLi4zYzM1ZGMxY2EyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtMjIwNiw4ICsyMjA2LDcgQEAgWExvZ1dyaXRlKFhMb2d3cnRScXN0IFdyaXRl UnFzdCwgVGltZUxpbmVJRCB0bGksIGJvb2wgZmxleGlibGUpCiAJCQkJCWluc3RyX3RpbWUJ ZHVyYXRpb247CiAKIAkJCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChkdXJhdGlvbik7Ci0J CQkJCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZHVyYXRpb24sIHN0YXJ0KTsKLQkJCQkJUGVuZGlu Z1dhbFN0YXRzLndhbF93cml0ZV90aW1lICs9IElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGR1 cmF0aW9uKTsKKwkJCQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKFBlbmRpbmdXYWxTdGF0cy53 YWxfd3JpdGVfdGltZSwgZHVyYXRpb24sIHN0YXJ0KTsKIAkJCQl9CiAKIAkJCQlQZW5kaW5n V2FsU3RhdHMud2FsX3dyaXRlKys7CkBAIC04MjAxLDggKzgyMDAsNyBAQCBpc3N1ZV94bG9n X2ZzeW5jKGludCBmZCwgWExvZ1NlZ05vIHNlZ25vLCBUaW1lTGluZUlEIHRsaSkKIAkJaW5z dHJfdGltZQlkdXJhdGlvbjsKIAogCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGR1cmF0aW9u KTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwgc3RhcnQpOwotCQlQZW5kaW5n V2FsU3RhdHMud2FsX3N5bmNfdGltZSArPSBJTlNUUl9USU1FX0dFVF9NSUNST1NFQyhkdXJh dGlvbik7CisJCUlOU1RSX1RJTUVfQUNDVU1fRElGRihQZW5kaW5nV2FsU3RhdHMud2FsX3N5 bmNfdGltZSwgZHVyYXRpb24sIHN0YXJ0KTsKIAl9CiAKIAlQZW5kaW5nV2FsU3RhdHMud2Fs X3N5bmMrKzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxl LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCmluZGV4IDBhNTE2MjRk ZjNiLi5lNTVmODZiNjc1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxl L2J1ZmZpbGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCkBA IC00NjksOCArNDY5LDcgQEAgQnVmRmlsZUxvYWRCdWZmZXIoQnVmRmlsZSAqZmlsZSkKIAlp ZiAodHJhY2tfaW9fdGltaW5nKQogCXsKIAkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChpb190 aW1lKTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChpb190aW1lLCBpb19zdGFydCk7Ci0JCUlO U1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2UudGVtcF9ibGtfcmVhZF90aW1lLCBpb190aW1l KTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UudGVtcF9ibGtfcmVh ZF90aW1lLCBpb190aW1lLCBpb19zdGFydCk7CiAJfQogCiAJLyogd2UgY2hvb3NlIG5vdCB0 byBhZHZhbmNlIGN1ck9mZnNldCBoZXJlICovCkBAIC01NDQsOCArNTQzLDcgQEAgQnVmRmls ZUR1bXBCdWZmZXIoQnVmRmlsZSAqZmlsZSkKIAkJaWYgKHRyYWNrX2lvX3RpbWluZykKIAkJ ewogCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChpb190aW1lKTsKLQkJCUlOU1RSX1RJTUVf U1VCVFJBQ1QoaW9fdGltZSwgaW9fc3RhcnQpOwotCQkJSU5TVFJfVElNRV9BREQocGdCdWZm ZXJVc2FnZS50ZW1wX2Jsa193cml0ZV90aW1lLCBpb190aW1lKTsKKwkJCUlOU1RSX1RJTUVf QUNDVU1fRElGRihwZ0J1ZmZlclVzYWdlLnRlbXBfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUs IGlvX3N0YXJ0KTsKIAkJfQogCiAJCWZpbGUtPmN1ck9mZnNldCArPSBieXRlc3Rvd3JpdGU7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfd2FsLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfd2FsLmMKaW5kZXggZTg1OThi MmY0ZTAuLmFiMjg2OWEwZTI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfd2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3dhbC5jCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1 bWVudC5oIgogCiAKLVBnU3RhdF9XYWxTdGF0cyBQZW5kaW5nV2FsU3RhdHMgPSB7MH07CitQ Z1N0YXRfUGVuZGluZ1dhbFVzYWdlIFBlbmRpbmdXYWxTdGF0cyA9IHswfTsKIAogLyoKICAq IFdBTCB1c2FnZSBjb3VudGVycyBzYXZlZCBmcm9tIHBnV0FMVXNhZ2UgYXQgdGhlIHByZXZp b3VzIGNhbGwgdG8KQEAgLTg5LDI0ICs4OSwyNSBAQCBwZ3N0YXRfZmx1c2hfd2FsKGJvb2wg bm93YWl0KQogCSAqIHByZXZpb3VzIGNvdW50ZXJzIGZyb20gdGhlIGN1cnJlbnQgb25lcy4K IAkgKi8KIAlXYWxVc2FnZUFjY3VtRGlmZigmZGlmZiwgJnBnV2FsVXNhZ2UsICZwcmV2V2Fs VXNhZ2UpOwotCVBlbmRpbmdXYWxTdGF0cy53YWxfcmVjb3JkcyA9IGRpZmYud2FsX3JlY29y ZHM7Ci0JUGVuZGluZ1dhbFN0YXRzLndhbF9mcGkgPSBkaWZmLndhbF9mcGk7Ci0JUGVuZGlu Z1dhbFN0YXRzLndhbF9ieXRlcyA9IGRpZmYud2FsX2J5dGVzOwogCiAJaWYgKCFub3dhaXQp CiAJCUxXTG9ja0FjcXVpcmUoJnN0YXRzX3NobWVtLT5sb2NrLCBMV19FWENMVVNJVkUpOwog CWVsc2UgaWYgKCFMV0xvY2tDb25kaXRpb25hbEFjcXVpcmUoJnN0YXRzX3NobWVtLT5sb2Nr LCBMV19FWENMVVNJVkUpKQogCQlyZXR1cm4gdHJ1ZTsKIAotI2RlZmluZSBXQUxTVEFUX0FD QyhmbGQpIHN0YXRzX3NobWVtLT5zdGF0cy5mbGQgKz0gUGVuZGluZ1dhbFN0YXRzLmZsZAot CVdBTFNUQVRfQUNDKHdhbF9yZWNvcmRzKTsKLQlXQUxTVEFUX0FDQyh3YWxfZnBpKTsKLQlX QUxTVEFUX0FDQyh3YWxfYnl0ZXMpOwotCVdBTFNUQVRfQUNDKHdhbF9idWZmZXJzX2Z1bGwp OwotCVdBTFNUQVRfQUNDKHdhbF93cml0ZSk7Ci0JV0FMU1RBVF9BQ0Mod2FsX3N5bmMpOwot CVdBTFNUQVRfQUNDKHdhbF93cml0ZV90aW1lKTsKLQlXQUxTVEFUX0FDQyh3YWxfc3luY190 aW1lKTsKKyNkZWZpbmUgV0FMU1RBVF9BQ0MoZmxkLCB2YXJfdG9fYWRkKSBcCisgCShzdGF0 c19zaG1lbS0+c3RhdHMuZmxkICs9IHZhcl90b19hZGQuZmxkKQorI2RlZmluZSBXQUxMU1RB VF9BQ0NfSU5TVFJfVElNRV9UWVBFKGZsZCkgXAorCShzdGF0c19zaG1lbS0+c3RhdHMuZmxk ICs9IElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKFBlbmRpbmdXYWxTdGF0cy5mbGQpKQorCVdB TFNUQVRfQUNDKHdhbF9yZWNvcmRzLCBkaWZmKTsKKwlXQUxTVEFUX0FDQyh3YWxfZnBpLCBk aWZmKTsKKwlXQUxTVEFUX0FDQyh3YWxfYnl0ZXMsIGRpZmYpOworCVdBTFNUQVRfQUNDKHdh bF9idWZmZXJzX2Z1bGwsIFBlbmRpbmdXYWxTdGF0cyk7CisJV0FMU1RBVF9BQ0Mod2FsX3dy aXRlLCBQZW5kaW5nV2FsU3RhdHMpOworCVdBTFNUQVRfQUNDKHdhbF9zeW5jLCBQZW5kaW5n V2FsU3RhdHMpOworCVdBTExTVEFUX0FDQ19JTlNUUl9USU1FX1RZUEUod2FsX3dyaXRlX3Rp bWUpOworCVdBTExTVEFUX0FDQ19JTlNUUl9USU1FX1RZUEUod2FsX3N5bmNfdGltZSk7Cisj dW5kZWYgV0FMTFNUQVRfQUNDX0lOU1RSX1RJTUVfVFlQRQogI3VuZGVmIFdBTFNUQVRfQUND CiAKIAlMV0xvY2tSZWxlYXNlKCZzdGF0c19zaG1lbS0+bG9jayk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IGRiOTY3 NTg4NGYzLi5jYzEwM2RmN2QyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgK KysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTQ0NSw2ICs0NDUsMjIgQEAgdHlwZWRl ZiBzdHJ1Y3QgUGdTdGF0X1dhbFN0YXRzCiAJVGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1l c3RhbXA7CiB9IFBnU3RhdF9XYWxTdGF0czsKIAorLyoKKyAqIENyZWF0ZWQgZm9yIGFjY3Vt dWxhdGluZyB3YWxfd3JpdGVfdGltZSBhbmQgd2FsX3N5bmNfdGltZSBhcyBhIGluc3RyX3Rp bWUKKyAqIGJ1dCBpbnN0cl90aW1lIGNhbid0IGJlIHVzZWQgYXMgYSB0eXBlIHdoZXJlIGl0 IGVuZHMgdXAgb24tZGlzaworICogYmVjYXVzZSBpdHMgdW5pdHMgbWF5IGNoYW5nZS4gUGdT dGF0X1dhbFN0YXRzIHR5cGUgaXMgdXNlZCBmb3IKKyAqIGluLW1lbW9yeS9vbi1kaXNrIGRh dGEuIFNvLCBQZ1N0YXRfUGVuZGluZ1dhbFVzYWdlIGlzIGNyZWF0ZWQgZm9yCisgKiBhY2N1 bXVsYXRpbmcgaW50ZXJ2YWxzIGFzIGEgaW5zdHJfdGltZS4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgUGdTdGF0X1BlbmRpbmdXYWxVc2FnZQoreworCVBnU3RhdF9Db3VudGVyIHdhbF9idWZm ZXJzX2Z1bGw7CisJUGdTdGF0X0NvdW50ZXIgd2FsX3dyaXRlOworCVBnU3RhdF9Db3VudGVy IHdhbF9zeW5jOworCWluc3RyX3RpbWUgd2FsX3dyaXRlX3RpbWU7CisJaW5zdHJfdGltZSB3 YWxfc3luY190aW1lOworfSBQZ1N0YXRfUGVuZGluZ1dhbFVzYWdlOworCiAKIC8qCiAgKiBG dW5jdGlvbnMgaW4gcGdzdGF0LmMKQEAgLTc1OCw3ICs3NzQsNyBAQCBleHRlcm4gUEdETExJ TVBPUlQgU2Vzc2lvbkVuZFR5cGUgcGdTdGF0U2Vzc2lvbkVuZENhdXNlOwogICovCiAKIC8q IHVwZGF0ZWQgZGlyZWN0bHkgYnkgYmFja2VuZHMgYW5kIGJhY2tncm91bmQgcHJvY2Vzc2Vz ICovCi1leHRlcm4gUEdETExJTVBPUlQgUGdTdGF0X1dhbFN0YXRzIFBlbmRpbmdXYWxTdGF0 czsKK2V4dGVybiBQR0RMTElNUE9SVCBQZ1N0YXRfUGVuZGluZ1dhbFVzYWdlIFBlbmRpbmdX YWxTdGF0czsKIAogCiAjZW5kaWYJCQkJCQkJLyogUEdTVEFUX0ggKi8KLS0gCjIuMzkuMQoK --------------bznyIeA1GF2EfYLd5FwvujdK--