From unknown Fri Sep 05 11:50:18 2025 X-Loop: help-debbugs@gnu.org Subject: bug#11875: EMACS_TIME simplification Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Jul 2012 20:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 11875 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 11875@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.134169403321451 (code B ref -1); Sat, 07 Jul 2012 20:48:01 +0000 Received: (at submit) by debbugs.gnu.org; 7 Jul 2012 20:47:13 +0000 Received: from localhost ([127.0.0.1]:55216 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SnbuI-0005Zu-QO for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:47:13 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42064) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SnbuC-0005Zh-D9 for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:47:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SnbpC-000189-Tt for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:41:58 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:58023) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SnbpC-000185-Q9 for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:41:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47678) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Snbp8-00081k-32 for bug-gnu-emacs@gnu.org; Sat, 07 Jul 2012 16:41:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Snbp3-00016o-5M for bug-gnu-emacs@gnu.org; Sat, 07 Jul 2012 16:41:49 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:53994) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Snbp2-00016f-I1 for bug-gnu-emacs@gnu.org; Sat, 07 Jul 2012 16:41:45 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 1F415A60003 for ; Sat, 7 Jul 2012 13:41:43 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Nt-lIgGEH0Ul for ; Sat, 7 Jul 2012 13:41:41 -0700 (PDT) Received: from [192.168.1.4] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 445FFA60001 for ; Sat, 7 Jul 2012 13:41:41 -0700 (PDT) Message-ID: <4FF89F06.3030904@cs.ucla.edu> Date: Sat, 07 Jul 2012 13:41:42 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000705060609090203090308" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) This is a multi-part message in MIME format. --------------000705060609090203090308 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch Attached is a patch to the Emacs trunk bzr 108944 that simplifies EMACS_TIME calculation. It replaces macros (which typically do not work with GDB) with functions, typedefs, and enums, making time-related code easier to debug. The functional style also makes the source code easier to read and maintain. I would have appreciated having this in my recent round of changes to the time code. I plan to install this after a bit more testing but thought I'd post it for review first. --------------000705060609090203090308 Content-Type: text/plain; charset=UTF-8; name="timefun.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="timefun.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1zcmMvQ2hhbmdlTG9nJwotLS0gbGliLXNyYy9DaGFu Z2VMb2cJMjAxMi0wNy0wNyAwMDoyMDo1NiArMDAwMAorKysgbGliLXNyYy9DaGFuZ2VMb2cJ MjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtMSwzICsxLDggQEAKKzIwMTItMDctMDcg IFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJRU1BQ1NfVElNRSBzaW1w bGlmaWNhdGlvbi4KKwkqIHByb2ZpbGUuYyAoVFYyKTogUmVtb3ZlIG5vLWxvbmdlci1uZWVk ZWQgc3RhdGljIHZhci4KKwogMjAxMi0wNy0wNyAgSnVhbm1hIEJhcnJhbnF1ZXJvICA8bGVr a3R1QGdtYWlsLmNvbT4KIAogCSogbWFrZWZpbGUudzMyLWluICgkKEJMRCkvY3RhZ3MuJChP KSwgJChCTEQpL2V0YWdzLiQoTykpOgoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1zcmMvcHJv ZmlsZS5jJwotLS0gbGliLXNyYy9wcm9maWxlLmMJMjAxMi0wNi0zMCAxNTozMjo1MSArMDAw MAorKysgbGliLXNyYy9wcm9maWxlLmMJMjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAt MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPGludHByb3BzLmg+CiAjaW5jbHVkZSA8c3lzdGlt ZS5oPgogCi1zdGF0aWMgRU1BQ1NfVElNRSBUVjEsIFRWMjsKK3N0YXRpYyBFTUFDU19USU1F IFRWMTsKIHN0YXRpYyBpbnQgd2F0Y2hfbm90X3N0YXJ0ZWQgPSAxOyAvKiBmbGFnICovCiBz dGF0aWMgY2hhciB0aW1lX3N0cmluZ1tJTlRfU1RSTEVOX0JPVU5EICh1aW50bWF4X3QpICsg c2l6ZW9mICIuIgogCQkJKyBMT0cxMF9FTUFDU19USU1FX1JFU09MVVRJT05dOwpAQCAtNDYs NyArNDYsNyBAQAogc3RhdGljIHZvaWQKIHJlc2V0X3dhdGNoICh2b2lkKQogewotICBFTUFD U19HRVRfVElNRSAoVFYxKTsKKyAgVFYxID0gY3VycmVudF9lbWFjc190aW1lICgpOwogICB3 YXRjaF9ub3Rfc3RhcnRlZCA9IDA7CiB9CiAKQEAgLTU3LDE0ICs1NywxMSBAQAogc3RhdGlj IGNoYXIgKgogZ2V0X3RpbWUgKHZvaWQpCiB7Ci0gIHVpbnRtYXhfdCBzOwotICBpbnQgbnM7 CisgIEVNQUNTX1RJTUUgVFYyID0gc3ViX2VtYWNzX3RpbWUgKGN1cnJlbnRfZW1hY3NfdGlt ZSAoKSwgVFYxKTsKKyAgdWludG1heF90IHMgPSBFTUFDU19TRUNTIChUVjIpOworICBpbnQg bnMgPSBFTUFDU19OU0VDUyAoVFYyKTsKICAgaWYgKHdhdGNoX25vdF9zdGFydGVkKQogICAg IGV4aXQgKEVYSVRfRkFJTFVSRSk7ICAvKiBjYWxsIHJlc2V0X3dhdGNoIGZpcnN0ICEgKi8K LSAgRU1BQ1NfR0VUX1RJTUUgKFRWMik7Ci0gIEVNQUNTX1NVQl9USU1FIChUVjIsIFRWMiwg VFYxKTsKLSAgcyA9IEVNQUNTX1NFQ1MgKFRWMik7Ci0gIG5zID0gRU1BQ1NfTlNFQ1MgKFRW Mik7CiAgIHNwcmludGYgKHRpbWVfc3RyaW5nLCAiJSJQUkl1TUFYIi4lMCpkIiwgcywgTE9H MTBfRU1BQ1NfVElNRV9SRVNPTFVUSU9OLCBucyk7CiAgIHJldHVybiB0aW1lX3N0cmluZzsK IH0KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxv ZwkyMDEyLTA3LTA3IDE5OjMzOjI4ICswMDAwCisrKyBzcmMvQ2hhbmdlTG9nCTIwMTItMDct MDcgMjA6MDQ6MDIgKzAwMDAKQEAgLTEsNSArMSwzMSBAQAogMjAxMi0wNy0wNyAgUGF1bCBF Z2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKKwlFTUFDU19USU1FIHNpbXBsaWZpY2F0 aW9uLgorCVRoaXMgcmVwbGFjZXMgbWFjcm9zICh3aGljaCB0eXBpY2FsbHkgZG8gbm90IHdv cmsgaW4gR0RCKQorCXdpdGggZnVuY3Rpb25zLCB0eXBlZGVmcyBhbmQgZW51bXMsIG1ha2lu ZyB0aGUgY29kZSBlYXNpZXIgdG8gZGVidWcuCisJVGhlIGZ1bmN0aW9uYWwgc3R5bGUgYWxz byBtYWtlcyBjb2RlIGVhc2llciB0byByZWFkIGFuZCBtYWludGFpbi4KKwkqIHN5c3RpbWUu aDogSW5jbHVkZSA8c3lzL3RpbWUuaD4gb24gYWxsIGhvc3RzLCBub3QganVzdCBpZgorCVdJ TkRPV1NOVCwgc2luY2UgJ3N0cnVjdCB0aW1ldmFsJyBpcyBuZWVkZWQgaW4gZ2VuZXJhbC4K KwkoRU1BQ1NfVElNRSk6IE5vdyBhIHR5cGVkZWYsIG5vdCBhIG1hY3JvLgorCShFTUFDU19U SU1FX1JFU09MVVRJT04sIExPRzEwX0VNQUNTX1RJTUVfUkVTT0xVVElPTik6IE5vdyBjb25z dGFudHMsCisJbm90IG1hY3Jvcy4KKwkoRU1BQ1NfU0VDUywgRU1BQ1NfTlNFQ1MsIEVNQUNT X1RJTUVfU0lHTiwgRU1BQ1NfVElNRV9WQUxJRF9QKQorCShFTUFDU19USU1FX0ZST01fRE9V QkxFLCBFTUFDU19USU1FX1RPX0RPVUJMRSwgRU1BQ1NfVElNRV9FUSkKKwkoRU1BQ1NfVElN RV9ORSwgRU1BQ1NfVElNRV9HVCwgRU1BQ1NfVElNRV9HRSwgRU1BQ1NfVElNRV9MVCkKKwko RU1BQ1NfVElNRV9MRSk6IE5vdyBmdW5jdGlvbnMsIG5vdCBtYWNyb3MuCisJKEVNQUNTX1NF VF9TRUNTLCBFTUFDU19TRVRfTlNFQ1MsIEVNQUNTX1NFVF9TRUNTX05TRUNTKQorCShFTUFD U19TRVRfVVNFQ1MsIEVNQUNTX1NFVF9TRUNTX1VTRUNTKTogUmVtb3ZlIHRoZXNlIG1hY3Jv cywKKwl3aGljaCBhcmUgbm90IGZ1bmN0aW9ucy4gIEFsbCB1c2VzIHJld3JpdHRlbiB0byB1 c2U6CisJKG1ha2VfZW1hY3NfdGltZSk6IE5ldyBmdW5jdGlvbi4KKwkoRU1BQ1NfU0VDU19B RERSLCBFTUFDU19TRVRfSU5WQUxJRF9USU1FLCBFTUFDU19HRVRfVElNRSkKKwkoRU1BQ1Nf QUREX1RJTUUsIEVNQUNTX1NVQl9USU1FKTogUmVtb3ZlIHRoZXNlIG1hY3Jvcywgd2hpY2gg YXJlCisJbm90IGZ1bmN0aW9ucy4gIEFsbCB1c2VzIHJld3JpdHRlbiB0byB1c2UgdGhlIGZv bGxvd2luZywgcmVzcGVjdGl2ZWx5OgorCShlbWFjc19zZWNzX2FkZHIsIGludmFsaWRfZW1h Y3NfdGltZSwgZ2V0X2VtYWNzX3RpbWUpCisJKGFkZF9lbWFjc190aW1lLCBzdWJfZW1hY3Nf dGltZSk6IE5ldyBmdW5jdGlvbnMuCisJKiBhdGltZXIuYzogRG9uJ3QgaW5jbHVkZSA8c3lz L3RpbWUuaD4sCWFzICJzeXN0aW1lLmgiIGRvZXMgdGhpcy4KKwkqIGZpbGVpby5jIChGY29w eV9maWxlKToKKwkqIHh0ZXJtLmMgKFhUZmxhc2gpOiBHZXQgdGhlIGN1cnJlbnQgdGltZSBj bG9zZXIgdG8gd2hlbiBpdCdzIHVzZWQuCisKIAkqIGxyZWFkLmMgKGxvYWRfcGF0aF9jaGVj ayk6IE5vdyBzdGF0aWMuCiAKIAlGaXggc29tZSBtaW5vciAtLXdpdGgtbnMgcHJvYmxlbXMg Zm91bmQgYnkgc3RhdGljIGNoZWNraW5nLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxv Yy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0wNy0wNiAwNTowNzo0NCArMDAwMAorKysgc3Jj L2FsbG9jLmMJMjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtNTM4MCw3ICs1MzgwLDcg QEAKICAgaW50IG1lc3NhZ2VfcDsKICAgTGlzcF9PYmplY3QgdG90YWxbOF07CiAgIHB0cmRp ZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Ci0gIEVNQUNTX1RJTUUgdDEsIHQyLCB0 MzsKKyAgRU1BQ1NfVElNRSB0MTsKIAogICBpZiAoYWJvcnRfb25fZ2MpCiAgICAgYWJvcnQg KCk7CkBAIC01NDI5LDcgKzU0MjksNyBAQAogICAgICAgfQogICB9CiAKLSAgRU1BQ1NfR0VU X1RJTUUgKHQxKTsKKyAgdDEgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CiAKICAgLyogSW4g Y2FzZSB1c2VyIGNhbGxzIGRlYnVnX3ByaW50IGR1cmluZyBHQywKICAgICAgZG9uJ3QgbGV0 IHRoYXQgY2F1c2UgYSByZWN1cnNpdmUgR0MuICAqLwpAQCAtNTY4Myw4ICs1NjgzLDggQEAK ICAgLyogQWNjdW11bGF0ZSBzdGF0aXN0aWNzLiAgKi8KICAgaWYgKEZMT0FUUCAoVmdjX2Vs YXBzZWQpKQogICAgIHsKLSAgICAgIEVNQUNTX0dFVF9USU1FICh0Mik7Ci0gICAgICBFTUFD U19TVUJfVElNRSAodDMsIHQyLCB0MSk7CisgICAgICBFTUFDU19USU1FIHQyID0gY3VycmVu dF9lbWFjc190aW1lICgpOworICAgICAgRU1BQ1NfVElNRSB0MyA9IHN1Yl9lbWFjc190aW1l ICh0MiwgdDEpOwogICAgICAgVmdjX2VsYXBzZWQgPSBtYWtlX2Zsb2F0IChYRkxPQVRfREFU QSAoVmdjX2VsYXBzZWQpCiAJCQkJKyBFTUFDU19USU1FX1RPX0RPVUJMRSAodDMpKTsKICAg ICB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2F0aW1lci5jJwotLS0gc3JjL2F0aW1lci5j CTIwMTItMDctMDUgMDY6MzI6NDEgKzAwMDAKKysrIHNyYy9hdGltZXIuYwkyMDEyLTA3LTA3 IDA0OjUzOjM4ICswMDAwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiYmxvY2tpbnB1 dC5oIgogI2luY2x1ZGUgImF0aW1lci5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1 ZGUgPHN5cy90aW1lLmg+CiAKIC8qIEZyZWUtbGlzdCBvZiBhdGltZXIgc3RydWN0dXJlcy4g ICovCiAKQEAgLTkzLDEwICs5Miw3IEBACiAjaWZuZGVmIEhBVkVfU0VUSVRJTUVSCiAgIGlm IChFTUFDU19OU0VDUyAodGltZXN0YW1wKSAhPSAwCiAgICAgICAmJiBFTUFDU19TRUNTICh0 aW1lc3RhbXApIDwgVFlQRV9NQVhJTVVNICh0aW1lX3QpKQotICAgIHsKLSAgICAgIEVNQUNT X1NFVF9VU0VDUyAodGltZXN0YW1wLCAwKTsKLSAgICAgIEVNQUNTX1NFVF9TRUNTICh0aW1l c3RhbXAsIEVNQUNTX1NFQ1MgKHRpbWVzdGFtcCkgKyAxKTsKLSAgICB9CisgICAgdGltZXN0 YW1wID0gbWFrZV9lbWFjc190aW1lIChFTUFDU19TRUNTICh0aW1lc3RhbXApICsgMSwgMCk7 CiAjZW5kaWYgLyogbm90IEhBVkVfU0VUSVRJTUVSICovCiAKICAgLyogR2V0IGFuIGF0aW1l ciBzdHJ1Y3R1cmUgZnJvbSB0aGUgZnJlZS1saXN0LCBvciBhbGxvY2F0ZQpAQCAtMTI1LDEz ICsxMjEsMTEgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBVElNRVJfUkVMQVRJVkU6 Ci0gICAgICBFTUFDU19HRVRfVElNRSAodC0+ZXhwaXJhdGlvbik7Ci0gICAgICBFTUFDU19B RERfVElNRSAodC0+ZXhwaXJhdGlvbiwgdC0+ZXhwaXJhdGlvbiwgdGltZXN0YW1wKTsKKyAg ICAgIHQtPmV4cGlyYXRpb24gPSBhZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1l ICgpLCB0aW1lc3RhbXApOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFUSU1FUl9DT05U SU5VT1VTOgotICAgICAgRU1BQ1NfR0VUX1RJTUUgKHQtPmV4cGlyYXRpb24pOwotICAgICAg RU1BQ1NfQUREX1RJTUUgKHQtPmV4cGlyYXRpb24sIHQtPmV4cGlyYXRpb24sIHRpbWVzdGFt cCk7CisgICAgICB0LT5leHBpcmF0aW9uID0gYWRkX2VtYWNzX3RpbWUgKGN1cnJlbnRfZW1h Y3NfdGltZSAoKSwgdGltZXN0YW1wKTsKICAgICAgIHQtPmludGVydmFsID0gdGltZXN0YW1w OwogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg1LDMxICsyNzksMjUgQEAKIHsKICAgaWYg KGF0aW1lcnMpCiAgICAgewotICAgICAgRU1BQ1NfVElNRSBub3csIHRpbWVzdGFtcDsKICNp ZmRlZiBIQVZFX1NFVElUSU1FUgogICAgICAgc3RydWN0IGl0aW1lcnZhbCBpdDsKICNlbmRp ZgogCiAgICAgICAvKiBEZXRlcm1pbmUgcy91cyB0aWxsIHRoZSBuZXh0IHRpbWVyIGlzIHJp cGUuICAqLwotICAgICAgRU1BQ1NfR0VUX1RJTUUgKG5vdyk7CisgICAgICBFTUFDU19USU1F IG5vdyA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKIAogICAgICAgLyogRG9uJ3Qgc2V0IHRo ZSBpbnRlcnZhbCB0byAwOyB0aGlzIGRpc2FibGVzIHRoZSB0aW1lci4gICovCi0gICAgICBp ZiAoRU1BQ1NfVElNRV9MRSAoYXRpbWVycy0+ZXhwaXJhdGlvbiwgbm93KSkKLQl7Ci0JICBF TUFDU19TRVRfU0VDUyAodGltZXN0YW1wLCAwKTsKLQkgIEVNQUNTX1NFVF9VU0VDUyAodGlt ZXN0YW1wLCAxMDAwKTsKLQl9Ci0gICAgICBlbHNlCi0JRU1BQ1NfU1VCX1RJTUUgKHRpbWVz dGFtcCwgYXRpbWVycy0+ZXhwaXJhdGlvbiwgbm93KTsKLQorICAgICAgRU1BQ1NfVElNRSBp bnRlcnZhbCA9IChFTUFDU19USU1FX0xFIChhdGltZXJzLT5leHBpcmF0aW9uLCBub3cpCisJ CQkgICAgID8gbWFrZV9lbWFjc190aW1lICgwLCAxMDAwICogMTAwMCkKKwkJCSAgICAgOiBz dWJfZW1hY3NfdGltZSAoYXRpbWVycy0+ZXhwaXJhdGlvbiwgbm93KSk7CiAKICNpZmRlZiBI QVZFX1NFVElUSU1FUgogCiAgICAgICBtZW1zZXQgKCZpdCwgMCwgc2l6ZW9mIGl0KTsKLSAg ICAgIGl0Lml0X3ZhbHVlID0gbWFrZV90aW1ldmFsICh0aW1lc3RhbXApOworICAgICAgaXQu aXRfdmFsdWUgPSBtYWtlX3RpbWV2YWwgKGludGVydmFsKTsKICAgICAgIHNldGl0aW1lciAo SVRJTUVSX1JFQUwsICZpdCwgMCk7CiAjZWxzZSAvKiBub3QgSEFWRV9TRVRJVElNRVIgKi8K LSAgICAgIGFsYXJtIChtYXggKEVNQUNTX1NFQ1MgKHRpbWVzdGFtcCksIDEpKTsKKyAgICAg IGFsYXJtIChtYXggKEVNQUNTX1NFQ1MgKGludGVydmFsKSwgMSkpOwogI2VuZGlmIC8qIG5v dCBIQVZFX1NFVElUSU1FUiAqLwogICAgIH0KIH0KQEAgLTM0NCw3ICszMzIsNyBAQAogCiAg IHdoaWxlIChhdGltZXJzCiAJICYmIChwZW5kaW5nX2F0aW1lcnMgPSBpbnRlcnJ1cHRfaW5w dXRfYmxvY2tlZCkgPT0gMAotCSAmJiAoRU1BQ1NfR0VUX1RJTUUgKG5vdyksCisJICYmIChu b3cgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCksCiAJICAgICBFTUFDU19USU1FX0xFIChhdGlt ZXJzLT5leHBpcmF0aW9uLCBub3cpKSkKICAgICB7CiAgICAgICBzdHJ1Y3QgYXRpbWVyICp0 OwpAQCAtMzU1LDcgKzM0Myw3IEBACiAKICAgICAgIGlmICh0LT50eXBlID09IEFUSU1FUl9D T05USU5VT1VTKQogCXsKLQkgIEVNQUNTX0FERF9USU1FICh0LT5leHBpcmF0aW9uLCBub3cs IHQtPmludGVydmFsKTsKKwkgIHQtPmV4cGlyYXRpb24gPSBhZGRfZW1hY3NfdGltZSAobm93 LCB0LT5pbnRlcnZhbCk7CiAJICBzY2hlZHVsZV9hdGltZXIgKHQpOwogCX0KICAgICAgIGVs c2UKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYnVmZmVyLmMnCi0tLSBzcmMvYnVmZmVyLmMJ MjAxMi0wNy0wNiAwNzozNDozNyArMDAwMAorKysgc3JjL2J1ZmZlci5jCTIwMTItMDctMDcg MDQ6NTM6MzggKzAwMDAKQEAgLTcwNSw3ICs3MDUsNyBAQAogICBCVkFSIChiLCBmaWxlbmFt ZSkgPSBRbmlsOwogICBCVkFSIChiLCBmaWxlX3RydWVuYW1lKSA9IFFuaWw7CiAgIEJWQVIg KGIsIGRpcmVjdG9yeSkgPSAoY3VycmVudF9idWZmZXIpID8gQlZBUiAoY3VycmVudF9idWZm ZXIsIGRpcmVjdG9yeSkgOiBRbmlsOwotICBFTUFDU19TRVRfU0VDU19OU0VDUyAoYi0+bW9k dGltZSwgMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKKyAgYi0+bW9kdGltZSA9IG1ha2Vf ZW1hY3NfdGltZSAoMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKICAgYi0+bW9kdGltZV9z aXplID0gLTE7CiAgIFhTRVRGQVNUSU5UIChCVkFSIChiLCBzYXZlX2xlbmd0aCksIDApOwog ICBiLT5sYXN0X3dpbmRvd19zdGFydCA9IDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Rp c3BuZXcuYycKLS0tIHNyYy9kaXNwbmV3LmMJMjAxMi0wNy0wNSAxODozNTo0OCArMDAwMAor Kysgc3JjL2Rpc3BuZXcuYwkyMDEyLTA3LTA3IDIwOjAwOjA0ICswMDAwCkBAIC0zMTkwLDcg KzMxOTAsNiBAQAogICAgIGZvcmNlX3AgPSAxOwogICBlbHNlIGlmICghZm9yY2VfcCAmJiBO VU1CRVJQIChWcmVkaXNwbGF5X3ByZWVtcHRpb25fcGVyaW9kKSkKICAgICB7Ci0gICAgICBF TUFDU19USU1FIHRtOwogICAgICAgZG91YmxlIHAgPSBYRkxPQVRJTlQgKFZyZWRpc3BsYXlf cHJlZW1wdGlvbl9wZXJpb2QpOwogCiAgICAgICBpZiAoZGV0ZWN0X2lucHV0X3BlbmRpbmdf aWdub3JlX3NxdWVlemFibGVzICgpKQpAQCAtMzE5OSw5ICszMTk4LDkgQEAKIAkgIGdvdG8g ZG9fcGF1c2U7CiAJfQogCi0gICAgICBFTUFDU19HRVRfVElNRSAodG0pOwogICAgICAgcHJl ZW1wdGlvbl9wZXJpb2QgPSBFTUFDU19USU1FX0ZST01fRE9VQkxFIChwKTsKLSAgICAgIEVN QUNTX0FERF9USU1FIChwcmVlbXB0aW9uX25leHRfY2hlY2ssIHRtLCBwcmVlbXB0aW9uX3Bl cmlvZCk7CisgICAgICBwcmVlbXB0aW9uX25leHRfY2hlY2sgPSBhZGRfZW1hY3NfdGltZSAo Y3VycmVudF9lbWFjc190aW1lICgpLAorCQkJCQkgICAgICBwcmVlbXB0aW9uX3BlcmlvZCk7 CiAgICAgfQogCiAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikpCkBAIC0zMzQzLDEyICszMzQy LDEwIEBACiAJZm9yY2VfcCA9IDE7CiAgICAgICBlbHNlIGlmICghZm9yY2VfcCAmJiBOVU1C RVJQIChWcmVkaXNwbGF5X3ByZWVtcHRpb25fcGVyaW9kKSkKIAl7Ci0JICBFTUFDU19USU1F IHRtOwogCSAgZG91YmxlIHAgPSBYRkxPQVRJTlQgKFZyZWRpc3BsYXlfcHJlZW1wdGlvbl9w ZXJpb2QpOwotCi0JICBFTUFDU19HRVRfVElNRSAodG0pOwogCSAgcHJlZW1wdGlvbl9wZXJp b2QgPSBFTUFDU19USU1FX0ZST01fRE9VQkxFIChwKTsKLQkgIEVNQUNTX0FERF9USU1FIChw cmVlbXB0aW9uX25leHRfY2hlY2ssIHRtLCBwcmVlbXB0aW9uX3BlcmlvZCk7CisJICBwcmVl bXB0aW9uX25leHRfY2hlY2sgPSBhZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1l ICgpLAorCQkJCQkJICBwcmVlbXB0aW9uX3BlcmlvZCk7CiAJfQogCiAgICAgICAvKiBVcGRh dGUgVy4gICovCkBAIC0zNTk1LDExICszNTkyLDExIEBACiAjaWYgUEVSSU9ESUNfUFJFRU1Q VElPTl9DSEVDS0lORwogCSAgICBpZiAoIWZvcmNlX3ApCiAJICAgICAgewotCQlFTUFDU19U SU1FIHRtOwotCQlFTUFDU19HRVRfVElNRSAodG0pOworCQlFTUFDU19USU1FIHRtID0gY3Vy cmVudF9lbWFjc190aW1lICgpOwogCQlpZiAoRU1BQ1NfVElNRV9MVCAocHJlZW1wdGlvbl9u ZXh0X2NoZWNrLCB0bSkpCiAJCSAgewotCQkgICAgRU1BQ1NfQUREX1RJTUUgKHByZWVtcHRp b25fbmV4dF9jaGVjaywgdG0sIHByZWVtcHRpb25fcGVyaW9kKTsKKwkJICAgIHByZWVtcHRp b25fbmV4dF9jaGVjayA9IGFkZF9lbWFjc190aW1lICh0bSwKKwkJCQkJCQkgICAgcHJlZW1w dGlvbl9wZXJpb2QpOwogCQkgICAgaWYgKGRldGVjdF9pbnB1dF9wZW5kaW5nX2lnbm9yZV9z cXVlZXphYmxlcyAoKSkKIAkJICAgICAgYnJlYWs7CiAJCSAgfQpAQCAtNDcwMCwxMSArNDY5 NywxMCBAQAogI2lmIFBFUklPRElDX1BSRUVNUFRJT05fQ0hFQ0tJTkcKIAkgIGlmICghZm9y Y2VfcCkKIAkgICAgewotCSAgICAgIEVNQUNTX1RJTUUgdG07Ci0JICAgICAgRU1BQ1NfR0VU X1RJTUUgKHRtKTsKKwkgICAgICBFTUFDU19USU1FIHRtID0gY3VycmVudF9lbWFjc190aW1l ICgpOwogCSAgICAgIGlmIChFTUFDU19USU1FX0xUIChwcmVlbXB0aW9uX25leHRfY2hlY2ss IHRtKSkKIAkJewotCQkgIEVNQUNTX0FERF9USU1FIChwcmVlbXB0aW9uX25leHRfY2hlY2ss IHRtLCBwcmVlbXB0aW9uX3BlcmlvZCk7CisJCSAgcHJlZW1wdGlvbl9uZXh0X2NoZWNrID0g YWRkX2VtYWNzX3RpbWUgKHRtLCBwcmVlbXB0aW9uX3BlcmlvZCk7CiAJCSAgaWYgKGRldGVj dF9pbnB1dF9wZW5kaW5nX2lnbm9yZV9zcXVlZXphYmxlcyAoKSkKIAkJICAgIGJyZWFrOwog CQl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2VkaXRmbnMuYycKLS0tIHNyYy9lZGl0Zm5z LmMJMjAxMi0wNy0wNyAwMTo1Nzo0MiArMDAwMAorKysgc3JjL2VkaXRmbnMuYwkyMDEyLTA3 LTA3IDIwOjAwOjA0ICswMDAwCkBAIC0xNDA4LDEwICsxNDA4LDcgQEAKIHBpY29zZWNvbmQg Y291bnRzLiAgKi8pCiAgICh2b2lkKQogewotICBFTUFDU19USU1FIHQ7Ci0KLSAgRU1BQ1Nf R0VUX1RJTUUgKHQpOwotICByZXR1cm4gbWFrZV9saXNwX3RpbWUgKHQpOworICByZXR1cm4g bWFrZV9saXNwX3RpbWUgKGN1cnJlbnRfZW1hY3NfdGltZSAoKSk7CiB9CiAKIERFRlVOICgi Z2V0LWludGVybmFsLXJ1bi10aW1lIiwgRmdldF9pbnRlcm5hbF9ydW5fdGltZSwgU2dldF9p bnRlcm5hbF9ydW5fdGltZSwKQEAgLTE0MjgsNyArMTQyNSw2IEBACiAgIHN0cnVjdCBydXNh Z2UgdXNhZ2U7CiAgIHRpbWVfdCBzZWNzOwogICBpbnQgdXNlY3M7Ci0gIEVNQUNTX1RJTUUg dDsKIAogICBpZiAoZ2V0cnVzYWdlIChSVVNBR0VfU0VMRiwgJnVzYWdlKSA8IDApCiAgICAg LyogVGhpcyBzaG91bGRuJ3QgaGFwcGVuLiAgV2hhdCBhY3Rpb24gaXMgYXBwcm9wcmlhdGU/ ICAqLwpAQCAtMTQ0Miw4ICsxNDM4LDcgQEAKICAgICAgIHVzZWNzIC09IDEwMDAwMDA7CiAg ICAgICBzZWNzKys7CiAgICAgfQotICBFTUFDU19TRVRfU0VDU19VU0VDUyAodCwgc2Vjcywg dXNlY3MpOwotICByZXR1cm4gbWFrZV9saXNwX3RpbWUgKHQpOworICByZXR1cm4gbWFrZV9s aXNwX3RpbWUgKG1ha2VfZW1hY3NfdGltZSAoc2VjcywgdXNlY3MgKiAxMDAwKSk7CiAjZWxz ZSAvKiAhIEhBVkVfR0VUUlVTQUdFICAqLwogI2lmZGVmIFdJTkRPV1NOVAogICByZXR1cm4g dzMyX2dldF9pbnRlcm5hbF9ydW5fdGltZSAoKTsKQEAgLTE1NjAsOCArMTU1NSw3IEBACiAJ ICAvKiBSZXR1cm4gdGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgdGltZSB0aGF0IGlzIG5v dCBncmVhdGVyCiAJICAgICB0aGFuIHRoZSByZXF1ZXN0ZWQgdGltZS4gICovCiAJICB0aW1l X3Qgc2VjID0gaGk7Ci0JICBFTUFDU19TRVRfU0VDU19OU0VDUyAoKnJlc3VsdCwgKHNlYyA8 PCAxNikgKyBsbywKLQkJCQl1cyAqIDEwMDAgKyBwcyAvIDEwMDApOworCSAgKnJlc3VsdCA9 IG1ha2VfZW1hY3NfdGltZSAoKHNlYyA8PCAxNikgKyBsbywgdXMgKiAxMDAwICsgcHMgLyAx MDAwKTsKIAl9CiAgICAgICBlbHNlCiAJewpAQCAtMTU4Nyw3ICsxNTgxLDcgQEAKIHsKICAg RU1BQ1NfVElNRSB0OwogICBpZiAoTklMUCAoc3BlY2lmaWVkX3RpbWUpKQotICAgIEVNQUNT X0dFVF9USU1FICh0KTsKKyAgICB0ID0gY3VycmVudF9lbWFjc190aW1lICgpOwogICBlbHNl CiAgICAgewogICAgICAgTGlzcF9PYmplY3QgaGlnaCwgbG93LCB1c2VjLCBwc2VjOwpAQCAt MTYzNSw4ICsxNjI5LDcgQEAKICAgZG91YmxlIHQ7CiAgIGlmIChOSUxQIChzcGVjaWZpZWRf dGltZSkpCiAgICAgewotICAgICAgRU1BQ1NfVElNRSBub3c7Ci0gICAgICBFTUFDU19HRVRf VElNRSAobm93KTsKKyAgICAgIEVNQUNTX1RJTUUgbm93ID0gY3VycmVudF9lbWFjc190aW1l ICgpOwogICAgICAgdCA9IEVNQUNTX1NFQ1MgKG5vdykgKyBFTUFDU19OU0VDUyAobm93KSAv IDFlOTsKICAgICB9CiAgIGVsc2UKQEAgLTE3ODAsMTEgKzE3NzMsMTIgQEAKIAogICB3aGls ZSAoMSkKICAgICB7CisgICAgICB0aW1lX3QgKnRhZGRyID0gZW1hY3Nfc2Vjc19hZGRyICgm dCk7CiAgICAgICBCTE9DS19JTlBVVDsKIAogICAgICAgc3luY2hyb25pemVfc3lzdGVtX3Rp bWVfbG9jYWxlICgpOwogCi0gICAgICB0bSA9IHV0ID8gZ210aW1lIChFTUFDU19TRUNTX0FE RFIgKHQpKSA6IGxvY2FsdGltZSAoRU1BQ1NfU0VDU19BRERSICh0KSk7CisgICAgICB0bSA9 IHV0ID8gZ210aW1lICh0YWRkcikgOiBsb2NhbHRpbWUgKHRhZGRyKTsKICAgICAgIGlmICgh IHRtKQogCXsKIAkgIFVOQkxPQ0tfSU5QVVQ7CkBAIC0yMDY1LDEwICsyMDU5LDEwIEBACiAg IExpc3BfT2JqZWN0IHpvbmVfb2Zmc2V0LCB6b25lX25hbWU7CiAKICAgem9uZV9vZmZzZXQg PSBRbmlsOwotICBFTUFDU19TRVRfU0VDU19OU0VDUyAodmFsdWUsIGxpc3Bfc2Vjb25kc19h cmd1bWVudCAoc3BlY2lmaWVkX3RpbWUpLCAwKTsKKyAgdmFsdWUgPSBtYWtlX2VtYWNzX3Rp bWUgKGxpc3Bfc2Vjb25kc19hcmd1bWVudCAoc3BlY2lmaWVkX3RpbWUpLCAwKTsKICAgem9u ZV9uYW1lID0gZm9ybWF0X3RpbWVfc3RyaW5nICgiJVoiLCBzaXplb2YgIiVaIiAtIDEsIHZh bHVlLCAwLCAmbG9jYWx0bSk7CiAgIEJMT0NLX0lOUFVUOwotICB0ID0gZ210aW1lIChFTUFD U19TRUNTX0FERFIgKHZhbHVlKSk7CisgIHQgPSBnbXRpbWUgKGVtYWNzX3NlY3NfYWRkciAo JnZhbHVlKSk7CiAgIGlmICh0KQogICAgIG9mZnNldCA9IHRtX2RpZmYgKCZsb2NhbHRtLCB0 KTsKICAgVU5CTE9DS19JTlBVVDsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWlvLmMn Ci0tLSBzcmMvZmlsZWlvLmMJMjAxMi0wNy0wNyAwMTo1Nzo0MiArMDAwMAorKysgc3JjL2Zp bGVpby5jCTIwMTItMDctMDcgMDQ6NTM6MzggKzAwMDAKQEAgLTE5MjUsMTIgKzE5MjUsMTIg QEAKICAgICAgIERXT1JEIGF0dHJpYnV0ZXM7CiAgICAgICBjaGFyICogZmlsZW5hbWU7CiAK LSAgICAgIEVNQUNTX0dFVF9USU1FIChub3cpOwogICAgICAgZmlsZW5hbWUgPSBTREFUQSAo ZW5jb2RlZF9uZXduYW1lKTsKIAogICAgICAgLyogRW5zdXJlIGZpbGUgaXMgd3JpdGFibGUg d2hpbGUgaXRzIG1vZGlmaWVkIHRpbWUgaXMgc2V0LiAgKi8KICAgICAgIGF0dHJpYnV0ZXMg PSBHZXRGaWxlQXR0cmlidXRlcyAoZmlsZW5hbWUpOwogICAgICAgU2V0RmlsZUF0dHJpYnV0 ZXMgKGZpbGVuYW1lLCBhdHRyaWJ1dGVzICYgfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZKTsK KyAgICAgIG5vdyA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKICAgICAgIGlmIChzZXRfZmls ZV90aW1lcyAoLTEsIGZpbGVuYW1lLCBub3csIG5vdykpCiAJewogCSAgLyogUmVzdG9yZSBv cmlnaW5hbCBhdHRyaWJ1dGVzLiAgKi8KQEAgLTMyMTcsMTIgKzMyMTcsMTAgQEAKIHN0YXRp YyBFTUFDU19USU1FCiB0aW1lX2Vycm9yX3ZhbHVlIChpbnQgZXJybnVtKQogewotICBFTUFD U19USU1FIHQ7CiAgIGludCBucyA9IChlcnJudW0gPT0gRU5PRU5UIHx8IGVycm51bSA9PSBF QUNDRVMgfHwgZXJybnVtID09IEVOT1RESVIKIAkgICAgPyBOT05FWElTVEVOVF9NT0RUSU1F X05TRUNTCiAJICAgIDogVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKLSAgRU1BQ1NfU0VUX1NF Q1NfTlNFQ1MgKHQsIDAsIG5zKTsKLSAgcmV0dXJuIHQ7CisgIHJldHVybiBtYWtlX2VtYWNz X3RpbWUgKDAsIG5zKTsKIH0KIAogREVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZp bnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2NvbnRlbnRzLApAQCAtNTA4Miw3 ICs1MDgwLDcgQEAKICAgc3RydWN0IHN0YXQgc3Q7CiAgIExpc3BfT2JqZWN0IGhhbmRsZXI7 CiAgIExpc3BfT2JqZWN0IGZpbGVuYW1lOwotICBFTUFDU19USU1FIG10aW1lLCBkaWZmLCBv bmVfc2Vjb25kOworICBFTUFDU19USU1FIG10aW1lLCBkaWZmOwogCiAgIGlmIChOSUxQIChi dWYpKQogICAgIGIgPSBjdXJyZW50X2J1ZmZlcjsKQEAgLTUxMTAsMTEgKzUxMDgsMTAgQEAK ICAgaWYgKChFTUFDU19USU1FX0VRIChtdGltZSwgYi0+bW9kdGltZSkKICAgICAgICAvKiBJ ZiBib3RoIGV4aXN0LCBhY2NlcHQgdGhlbSBpZiB0aGV5IGFyZSBvZmYgYnkgb25lIHNlY29u ZC4gICovCiAgICAgICAgfHwgKEVNQUNTX1RJTUVfVkFMSURfUCAobXRpbWUpICYmIEVNQUNT X1RJTUVfVkFMSURfUCAoYi0+bW9kdGltZSkKLQkgICAmJiAoKEVNQUNTX1RJTUVfTFQgKG10 aW1lLCBiLT5tb2R0aW1lKQotCQk/IEVNQUNTX1NVQl9USU1FIChkaWZmLCBiLT5tb2R0aW1l LCBtdGltZSkKLQkJOiBFTUFDU19TVUJfVElNRSAoZGlmZiwgbXRpbWUsIGItPm1vZHRpbWUp KSwKLQkgICAgICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKG9uZV9zZWNvbmQsIDEsIDApLAot CSAgICAgICBFTUFDU19USU1FX0xFIChkaWZmLCBvbmVfc2Vjb25kKSkpKQorCSAgICYmICgo ZGlmZiA9IChFTUFDU19USU1FX0xUIChtdGltZSwgYi0+bW9kdGltZSkKKwkJCT8gc3ViX2Vt YWNzX3RpbWUgKGItPm1vZHRpbWUsIG10aW1lKQorCQkJOiBzdWJfZW1hY3NfdGltZSAobXRp bWUsIGItPm1vZHRpbWUpKSksCisJICAgICAgIEVNQUNTX1RJTUVfTEUgKGRpZmYsIG1ha2Vf ZW1hY3NfdGltZSAoMSwgMCkpKSkpCiAgICAgICAmJiAoc3Quc3Rfc2l6ZSA9PSBiLT5tb2R0 aW1lX3NpemUKICAgICAgICAgICB8fCBiLT5tb2R0aW1lX3NpemUgPCAwKSkKICAgICByZXR1 cm4gUXQ7CkBAIC01MTI3LDcgKzUxMjQsNyBAQAogTmV4dCBhdHRlbXB0IHRvIHNhdmUgd2ls bCBjZXJ0YWlubHkgbm90IGNvbXBsYWluIG9mIGEgZGlzY3JlcGFuY3kuICAqLykKICAgKHZv aWQpCiB7Ci0gIEVNQUNTX1NFVF9TRUNTX05TRUNTIChjdXJyZW50X2J1ZmZlci0+bW9kdGlt ZSwgMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKKyAgY3VycmVudF9idWZmZXItPm1vZHRp bWUgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIFVOS05PV05fTU9EVElNRV9OU0VDUyk7CiAgIGN1 cnJlbnRfYnVmZmVyLT5tb2R0aW1lX3NpemUgPSAtMTsKICAgcmV0dXJuIFFuaWw7CiB9CkBA IC01NDI2LDkgKzU0MjMsOCBAQAogCQl8fCBOSUxQIChGZmluZF9maWxlX25hbWVfaGFuZGxl ciAoQlZBUiAoYiwgYXV0b19zYXZlX2ZpbGVfbmFtZSksCiAJCQkJCQkgIFF3cml0ZV9yZWdp b24pKSkpCiAJICB7Ci0JICAgIEVNQUNTX1RJTUUgYmVmb3JlX3RpbWUsIGFmdGVyX3RpbWU7 Ci0KLQkgICAgRU1BQ1NfR0VUX1RJTUUgKGJlZm9yZV90aW1lKTsKKwkgICAgRU1BQ1NfVElN RSBiZWZvcmVfdGltZSA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKKwkgICAgRU1BQ1NfVElN RSBhZnRlcl90aW1lOwogCiAJICAgIC8qIElmIHdlIGhhZCBhIGZhaWx1cmUsIGRvbid0IHRy eSBhZ2FpbiBmb3IgMjAgbWludXRlcy4gICovCiAJICAgIGlmIChiLT5hdXRvX3NhdmVfZmFp bHVyZV90aW1lID4gMApAQCAtNTQ2NSw3ICs1NDYxLDcgQEAKIAkgICAgWFNFVEZBU1RJTlQg KEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBzYXZlX2xlbmd0aCksIFogLSBCRUcpOwogCSAgICBz ZXRfYnVmZmVyX2ludGVybmFsIChvbGQpOwogCi0JICAgIEVNQUNTX0dFVF9USU1FIChhZnRl cl90aW1lKTsKKwkgICAgYWZ0ZXJfdGltZSA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKIAog CSAgICAvKiBJZiBhdXRvLXNhdmUgdG9vayBtb3JlIHRoYW4gNjAgc2Vjb25kcywKIAkgICAg ICAgYXNzdW1lIGl0IHdhcyBhbiBORlMgZmFpbHVyZSB0aGF0IGdvdCBhIHRpbWVvdXQuICAq LwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mbnMuYycKLS0tIHNyYy9mbnMuYwkyMDEyLTA3 LTA1IDE4OjM1OjQ4ICswMDAwCisrKyBzcmMvZm5zLmMJMjAxMi0wNy0wNyAwNDo1MzozOCAr MDAwMApAQCAtNzgsOCArNzgsNyBAQAogCiAgIGlmIChFUSAobGltaXQsIFF0KSkKICAgICB7 Ci0gICAgICBFTUFDU19USU1FIHQ7Ci0gICAgICBFTUFDU19HRVRfVElNRSAodCk7CisgICAg ICBFTUFDU19USU1FIHQgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CiAgICAgICBzZWVkX3Jh bmRvbSAoZ2V0cGlkICgpIF4gRU1BQ1NfU0VDUyAodCkgXiBFTUFDU19OU0VDUyAodCkpOwog ICAgIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9pbWFnZS5jJwotLS0gc3JjL2ltYWdl LmMJMjAxMi0wNy0wNyAxOToyMzo0MSArMDAwMAorKysgc3JjL2ltYWdlLmMJMjAxMi0wNy0w NyAyMDowNDowMiArMDAwMApAQCAtMTA2MSw3ICsxMDYxLDcgQEAKIHByZXBhcmVfaW1hZ2Vf Zm9yX2Rpc3BsYXkgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiB7CiAg IC8qIFdlJ3JlIGFib3V0IHRvIGRpc3BsYXkgSU1HLCBzbyBzZXQgaXRzIHRpbWVzdGFtcCB0 byBgbm93Jy4gICovCi0gIEVNQUNTX0dFVF9USU1FIChpbWctPnRpbWVzdGFtcCk7CisgIGlt Zy0+dGltZXN0YW1wID0gY3VycmVudF9lbWFjc190aW1lICgpOwogCiAgIC8qIElmIElNRyBk b2Vzbid0IGhhdmUgYSBwaXhtYXAgeWV0LCBsb2FkIGl0IG5vdywgdXNpbmcgdGhlIGltYWdl CiAgICAgIHR5cGUgZGVwZW5kZW50IGxvYWRlciBmdW5jdGlvbi4gICovCkBAIC0xNTIwLDgg KzE1MjAsOCBAQAogCSAgICBkZWxheSA9IDE2MDAgKiBkZWxheSAvIG5pbWFnZXMgLyBuaW1h Z2VzOwogCSAgZGVsYXkgPSBtYXggKGRlbGF5LCAxKTsKIAotCSAgRU1BQ1NfR0VUX1RJTUUg KHQpOwotCSAgRU1BQ1NfU1VCX1RJTUUgKG9sZCwgdCwgRU1BQ1NfVElNRV9GUk9NX0RPVUJM RSAoZGVsYXkpKTsKKwkgIHQgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CisJICBvbGQgPSBz dWJfZW1hY3NfdGltZSAodCwgRU1BQ1NfVElNRV9GUk9NX0RPVUJMRSAoZGVsYXkpKTsKIAog CSAgZm9yIChpID0gMDsgaSA8IGMtPnVzZWQ7ICsraSkKIAkgICAgewpAQCAtMTc5Miw3ICsx NzkyLDcgQEAKICAgICB9CiAKICAgLyogV2UncmUgdXNpbmcgSU1HLCBzbyBzZXQgaXRzIHRp bWVzdGFtcCB0byBgbm93Jy4gICovCi0gIEVNQUNTX0dFVF9USU1FIChpbWctPnRpbWVzdGFt cCk7CisgIGltZy0+dGltZXN0YW1wID0gY3VycmVudF9lbWFjc190aW1lICgpOwogCiAgIC8q IFZhbHVlIGlzIHRoZSBpbWFnZSBpZC4gICovCiAgIHJldHVybiBpbWctPmlkOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9rZXlib2FyZC5jJwotLS0gc3JjL2tleWJvYXJkLmMJMjAxMi0w Ny0wNSAxODozNTo0OCArMDAwMAorKysgc3JjL2tleWJvYXJkLmMJMjAxMi0wNy0wNyAyMDoz MTowNyArMDAwMApAQCAtMjAxNywxMiArMjAxNywxMSBAQAogCSAgfHwgRU1BQ1NfU0VDUyAo cG9sbF90aW1lci0+aW50ZXJ2YWwpICE9IHBvbGxpbmdfcGVyaW9kKQogCXsKIAkgIHRpbWVf dCBwZXJpb2QgPSBtYXggKDEsIG1pbiAocG9sbGluZ19wZXJpb2QsIFRZUEVfTUFYSU1VTSAo dGltZV90KSkpOwotCSAgRU1BQ1NfVElNRSBpbnRlcnZhbDsKKwkgIEVNQUNTX1RJTUUgaW50 ZXJ2YWwgPSBtYWtlX2VtYWNzX3RpbWUgKHBlcmlvZCwgMCk7CiAKIAkgIGlmIChwb2xsX3Rp bWVyKQogCSAgICBjYW5jZWxfYXRpbWVyIChwb2xsX3RpbWVyKTsKIAotCSAgRU1BQ1NfU0VU X1NFQ1NfVVNFQ1MgKGludGVydmFsLCBwZXJpb2QsIDApOwogCSAgcG9sbF90aW1lciA9IHN0 YXJ0X2F0aW1lciAoQVRJTUVSX0NPTlRJTlVPVVMsIGludGVydmFsLAogCQkJCSAgICAgcG9s bF9mb3JfaW5wdXQsIE5VTEwpOwogCX0KQEAgLTI3ODYsMTMgKzI3ODUsOCBAQAogICAgIHsK ICAgICAgIEtCT0FSRCAqa2IgSUZfTElOVCAoPSBOVUxMKTsKIAotICAgICAgaWYgKGVuZF90 aW1lKQotCXsKLQkgIEVNQUNTX1RJTUUgbm93OwotCSAgRU1BQ1NfR0VUX1RJTUUgKG5vdyk7 Ci0JICBpZiAoRU1BQ1NfVElNRV9HRSAobm93LCAqZW5kX3RpbWUpKQotCSAgICBnb3RvIGV4 aXQ7Ci0JfQorICAgICAgaWYgKGVuZF90aW1lICYmIEVNQUNTX1RJTUVfTEUgKCplbmRfdGlt ZSwgY3VycmVudF9lbWFjc190aW1lICgpKSkKKwlnb3RvIGV4aXQ7CiAKICAgICAgIC8qIEFj dHVhbGx5IHJlYWQgYSBjaGFyYWN0ZXIsIHdhaXRpbmcgaWYgbmVjZXNzYXJ5LiAgKi8KICAg ICAgIHNhdmVfZ2V0Y2ptcCAoc2F2ZV9qdW1wKTsKQEAgLTM4NDcsMTMgKzM4NDEsMTIgQEAK ICNlbmRpZgogICAgICAgaWYgKGVuZF90aW1lKQogCXsKLQkgIEVNQUNTX1RJTUUgZHVyYXRp b247Ci0JICBFTUFDU19HRVRfVElNRSAoZHVyYXRpb24pOwotCSAgaWYgKEVNQUNTX1RJTUVf R0UgKGR1cmF0aW9uLCAqZW5kX3RpbWUpKQorCSAgRU1BQ1NfVElNRSBub3cgPSBjdXJyZW50 X2VtYWNzX3RpbWUgKCk7CisJICBpZiAoRU1BQ1NfVElNRV9MRSAoKmVuZF90aW1lLCBub3cp KQogCSAgICByZXR1cm4gUW5pbDsJLyogRmluaXNoZWQgd2FpdGluZy4gICovCiAJICBlbHNl CiAJICAgIHsKLQkgICAgICBFTUFDU19TVUJfVElNRSAoZHVyYXRpb24sICplbmRfdGltZSwg ZHVyYXRpb24pOworCSAgICAgIEVNQUNTX1RJTUUgZHVyYXRpb24gPSBzdWJfZW1hY3NfdGlt ZSAoKmVuZF90aW1lLCBub3cpOwogCSAgICAgIHdhaXRfcmVhZGluZ19wcm9jZXNzX291dHB1 dCAobWluIChFTUFDU19TRUNTIChkdXJhdGlvbiksCiAJCQkJCQlXQUlUX1JFQURJTkdfTUFY KSwKIAkJCQkJICAgRU1BQ1NfTlNFQ1MgKGR1cmF0aW9uKSwKQEAgLTQyNTYsOCArNDI0OSw3 IEBACiAgIGlmIChFTUFDU19USU1FX1ZBTElEX1AgKHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3Rp bWUpKQogICAgIHJldHVybjsKIAotICBFTUFDU19HRVRfVElNRSAodGltZXJfaWRsZW5lc3Nf c3RhcnRfdGltZSk7Ci0KKyAgdGltZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSA9IGN1cnJlbnRf ZW1hY3NfdGltZSAoKTsKICAgdGltZXJfbGFzdF9pZGxlbmVzc19zdGFydF90aW1lID0gdGlt ZXJfaWRsZW5lc3Nfc3RhcnRfdGltZTsKIAogICAvKiBNYXJrIGFsbCBpZGxlLXRpbWUgdGlt ZXJzIGFzIG9uY2UgYWdhaW4gY2FuZGlkYXRlcyBmb3IgcnVubmluZy4gICovCkBAIC00Mjc4 LDcgKzQyNzAsNyBAQAogc3RhdGljIHZvaWQKIHRpbWVyX3N0b3BfaWRsZSAodm9pZCkKIHsK LSAgRU1BQ1NfU0VUX0lOVkFMSURfVElNRSAodGltZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSk7 CisgIHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3RpbWUgPSBpbnZhbGlkX2VtYWNzX3RpbWUgKCk7 CiB9CiAKIC8qIFJlc3VtZSBpZGxlIHRpbWVyIGZyb20gbGFzdCBpZGxlIHN0YXJ0IHRpbWUu ICAqLwpAQCAtNDMzOSw3ICs0MzMxLDcgQEAKICAgTGlzcF9PYmplY3QgdGltZXJzLCBpZGxl X3RpbWVycywgY2hvc2VuX3RpbWVyOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIs IGdjcHJvMzsKIAotICBFTUFDU19TRVRfSU5WQUxJRF9USU1FIChuZXh0dGltZSk7CisgIG5l eHR0aW1lID0gaW52YWxpZF9lbWFjc190aW1lICgpOwogCiAgIC8qIEFsd2F5cyBjb25zaWRl ciB0aGUgb3JkaW5hcnkgdGltZXJzLiAgKi8KICAgdGltZXJzID0gVnRpbWVyX2xpc3Q7CkBA IC00MzYxLDExICs0MzUzLDEwIEBACiAKICAgaWYgKENPTlNQICh0aW1lcnMpIHx8IENPTlNQ IChpZGxlX3RpbWVycykpCiAgICAgewotICAgICAgRU1BQ1NfR0VUX1RJTUUgKG5vdyk7Ci0g ICAgICBpZiAoRU1BQ1NfVElNRV9WQUxJRF9QICh0aW1lcl9pZGxlbmVzc19zdGFydF90aW1l KSkKLQlFTUFDU19TVUJfVElNRSAoaWRsZW5lc3Nfbm93LCBub3csIHRpbWVyX2lkbGVuZXNz X3N0YXJ0X3RpbWUpOwotICAgICAgZWxzZQotCUVNQUNTX1NFVF9TRUNTX05TRUNTIChpZGxl bmVzc19ub3csIDAsIDApOworICAgICAgbm93ID0gY3VycmVudF9lbWFjc190aW1lICgpOwor ICAgICAgaWRsZW5lc3Nfbm93ID0gKEVNQUNTX1RJTUVfVkFMSURfUCAodGltZXJfaWRsZW5l c3Nfc3RhcnRfdGltZSkKKwkJICAgICAgPyBzdWJfZW1hY3NfdGltZSAobm93LCB0aW1lcl9p ZGxlbmVzc19zdGFydF90aW1lKQorCQkgICAgICA6IG1ha2VfZW1hY3NfdGltZSAoMCwgMCkp OwogICAgIH0KIAogICB3aGlsZSAoQ09OU1AgKHRpbWVycykgfHwgQ09OU1AgKGlkbGVfdGlt ZXJzKSkKQEAgLTQzNzQsMTIgKzQzNjUsMTAgQEAKICAgICAgIExpc3BfT2JqZWN0IHRpbWVy ID0gUW5pbCwgaWRsZV90aW1lciA9IFFuaWw7CiAgICAgICBFTUFDU19USU1FIHRpbWVyX3Rp bWUsIGlkbGVfdGltZXJfdGltZTsKICAgICAgIEVNQUNTX1RJTUUgZGlmZmVyZW5jZTsKLSAg ICAgIEVNQUNTX1RJTUUgdGltZXJfZGlmZmVyZW5jZSwgaWRsZV90aW1lcl9kaWZmZXJlbmNl OworICAgICAgRU1BQ1NfVElNRSB0aW1lcl9kaWZmZXJlbmNlID0gaW52YWxpZF9lbWFjc190 aW1lICgpOworICAgICAgRU1BQ1NfVElNRSBpZGxlX3RpbWVyX2RpZmZlcmVuY2UgPSBpbnZh bGlkX2VtYWNzX3RpbWUgKCk7CiAgICAgICBpbnQgcmlwZSwgdGltZXJfcmlwZSA9IDAsIGlk bGVfdGltZXJfcmlwZSA9IDA7CiAKLSAgICAgIEVNQUNTX1NFVF9JTlZBTElEX1RJTUUgKHRp bWVyX2RpZmZlcmVuY2UpOwotICAgICAgRU1BQ1NfU0VUX0lOVkFMSURfVElNRSAoaWRsZV90 aW1lcl9kaWZmZXJlbmNlKTsKLQogICAgICAgLyogU2V0IFRJTUVSIGFuZCBUSU1FUl9ESUZG RVJFTkNFCiAJIGJhc2VkIG9uIHRoZSBuZXh0IG9yZGluYXJ5IHRpbWVyLgogCSBUSU1FUl9E SUZGRVJFTkNFIGlzIHRoZSBkaXN0YW5jZSBpbiB0aW1lIGZyb20gTk9XIHRvIHdoZW4KQEAg LTQzOTUsMTAgKzQzODQsOSBAQAogCSAgICB9CiAKIAkgIHRpbWVyX3JpcGUgPSBFTUFDU19U SU1FX0xFICh0aW1lcl90aW1lLCBub3cpOwotCSAgaWYgKHRpbWVyX3JpcGUpCi0JICAgIEVN QUNTX1NVQl9USU1FICh0aW1lcl9kaWZmZXJlbmNlLCBub3csIHRpbWVyX3RpbWUpOwotCSAg ZWxzZQotCSAgICBFTUFDU19TVUJfVElNRSAodGltZXJfZGlmZmVyZW5jZSwgdGltZXJfdGlt ZSwgbm93KTsKKwkgIHRpbWVyX2RpZmZlcmVuY2UgPSAodGltZXJfcmlwZQorCQkJICAgICAg PyBzdWJfZW1hY3NfdGltZSAobm93LCB0aW1lcl90aW1lKQorCQkJICAgICAgOiBzdWJfZW1h Y3NfdGltZSAodGltZXJfdGltZSwgbm93KSk7CiAJfQogCiAgICAgICAvKiBMaWtld2lzZSBm b3IgSURMRV9USU1FUiBhbmQgSURMRV9USU1FUl9ESUZGRVJFTkNFCkBAIC00NDEzLDEyICs0 NDAxLDEwIEBACiAJICAgIH0KIAogCSAgaWRsZV90aW1lcl9yaXBlID0gRU1BQ1NfVElNRV9M RSAoaWRsZV90aW1lcl90aW1lLCBpZGxlbmVzc19ub3cpOwotCSAgaWYgKGlkbGVfdGltZXJf cmlwZSkKLQkgICAgRU1BQ1NfU1VCX1RJTUUgKGlkbGVfdGltZXJfZGlmZmVyZW5jZSwKLQkJ CSAgICBpZGxlbmVzc19ub3csIGlkbGVfdGltZXJfdGltZSk7Ci0JICBlbHNlCi0JICAgIEVN QUNTX1NVQl9USU1FIChpZGxlX3RpbWVyX2RpZmZlcmVuY2UsCi0JCQkgICAgaWRsZV90aW1l cl90aW1lLCBpZGxlbmVzc19ub3cpOworCSAgaWRsZV90aW1lcl9kaWZmZXJlbmNlID0KKwkg ICAgKGlkbGVfdGltZXJfcmlwZQorCSAgICAgPyBzdWJfZW1hY3NfdGltZSAoaWRsZW5lc3Nf bm93LCBpZGxlX3RpbWVyX3RpbWUpCisJICAgICA6IHN1Yl9lbWFjc190aW1lIChpZGxlX3Rp bWVyX3RpbWUsIGlkbGVuZXNzX25vdykpOwogCX0KIAogICAgICAgLyogRGVjaWRlIHdoaWNo IHRpbWVyIGlzIHRoZSBuZXh0IHRpbWVyLApAQCAtNDQ3NCw4ICs0NDYwLDcgQEAKICAgICAg ICAgICAgICAgICAgcmV0dXJuIDAgdG8gaW5kaWNhdGUgdGhhdC4gICovCiAJICAgIH0KIAot ICAgICAgICAgIEVNQUNTX1NFVF9TRUNTIChuZXh0dGltZSwgMCk7Ci0gICAgICAgICAgRU1B Q1NfU0VUX1VTRUNTIChuZXh0dGltZSwgMCk7CisJICBuZXh0dGltZSA9IG1ha2VfZW1hY3Nf dGltZSAoMCwgMCk7CiAJfQogICAgICAgZWxzZQogCS8qIFdoZW4gd2UgZW5jb3VudGVyIGEg dGltZXIgdGhhdCBpcyBzdGlsbCB3YWl0aW5nLApAQCAtNDUyNywxNCArNDUxMiw4IEBACiAg ICh2b2lkKQogewogICBpZiAoRU1BQ1NfVElNRV9WQUxJRF9QICh0aW1lcl9pZGxlbmVzc19z dGFydF90aW1lKSkKLSAgICB7Ci0gICAgICBFTUFDU19USU1FIG5vdywgaWRsZW5lc3Nfbm93 OwotCi0gICAgICBFTUFDU19HRVRfVElNRSAobm93KTsKLSAgICAgIEVNQUNTX1NVQl9USU1F IChpZGxlbmVzc19ub3csIG5vdywgdGltZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSk7Ci0KLSAg ICAgIHJldHVybiBtYWtlX2xpc3BfdGltZSAoaWRsZW5lc3Nfbm93KTsKLSAgICB9CisgICAg cmV0dXJuIG1ha2VfbGlzcF90aW1lIChzdWJfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190 aW1lICgpLAorCQkJCQkgICB0aW1lcl9pZGxlbmVzc19zdGFydF90aW1lKSk7CiAKICAgcmV0 dXJuIFFuaWw7CiB9CkBAIC03MjI0LDcgKzcyMDMsNyBAQAogI2VuZGlmCiAKICAgaWYgKGlu cHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lKQotICAgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICgq aW5wdXRfYXZhaWxhYmxlX2NsZWFyX3RpbWUsIDAsIDApOworICAgICppbnB1dF9hdmFpbGFi bGVfY2xlYXJfdGltZSA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMCk7CiAKICNpZm5kZWYgU1lO Q19JTlBVVAogICBoYW5kbGVfYXN5bmNfaW5wdXQgKCk7CkBAIC03MzI3LDcgKzczMDYsNyBA QAogCSAgICAvKiBUZWxsIHdhaXRfcmVhZGluZ19wcm9jZXNzX291dHB1dCB0aGF0IGl0IG5l ZWRzIHRvIHdha2UKIAkgICAgICAgdXAgYW5kIGxvb2sgYXJvdW5kLiAgKi8KIAkgICAgaWYg KGlucHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lKQotCSAgICAgIEVNQUNTX1NFVF9TRUNTX1VT RUNTICgqaW5wdXRfYXZhaWxhYmxlX2NsZWFyX3RpbWUsIDAsIDApOworCSAgICAgICppbnB1 dF9hdmFpbGFibGVfY2xlYXJfdGltZSA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMCk7CiAJICB9 CiAJYnJlYWs7CiAgICAgICB9CkBAIC0xMTM0NCw3ICsxMTMyMyw3IEBACiAgIHF1aXRfY2hh ciA9IEN0bCAoJ2cnKTsKICAgVnVucmVhZF9jb21tYW5kX2V2ZW50cyA9IFFuaWw7CiAgIHVu cmVhZF9jb21tYW5kX2NoYXIgPSAtMTsKLSAgRU1BQ1NfU0VUX0lOVkFMSURfVElNRSAodGlt ZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSk7CisgIHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3RpbWUg PSBpbnZhbGlkX2VtYWNzX3RpbWUgKCk7CiAgIHRvdGFsX2tleXMgPSAwOwogICByZWNlbnRf a2V5c19pbmRleCA9IDA7CiAgIGtiZF9mZXRjaF9wdHIgPSBrYmRfYnVmZmVyOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9scmVhZC5jJwotLS0gc3JjL2xyZWFkLmMJMjAxMi0wNy0wNyAx OTozMzoyOCArMDAwMAorKysgc3JjL2xyZWFkLmMJMjAxMi0wNy0wNyAyMDowNDowMiArMDAw MApAQCAtNjAwLDggKzYwMCw3IEBACiAgICAgewogICAgICAgZG91YmxlIGR1cmF0aW9uID0g ZXh0cmFjdF9mbG9hdCAoc2Vjb25kcyk7CiAgICAgICBFTUFDU19USU1FIHdhaXRfdGltZSA9 IEVNQUNTX1RJTUVfRlJPTV9ET1VCTEUgKGR1cmF0aW9uKTsKLSAgICAgIEVNQUNTX0dFVF9U SU1FIChlbmRfdGltZSk7Ci0gICAgICBFTUFDU19BRERfVElNRSAoZW5kX3RpbWUsIGVuZF90 aW1lLCB3YWl0X3RpbWUpOworICAgICAgZW5kX3RpbWUgPSBhZGRfZW1hY3NfdGltZSAoY3Vy cmVudF9lbWFjc190aW1lICgpLCB3YWl0X3RpbWUpOwogICAgIH0KIAogLyogUmVhZCB1bnRp bCB3ZSBnZXQgYW4gYWNjZXB0YWJsZSBldmVudC4gICovCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL21zZG9zLmMnCi0tLSBzcmMvbXNkb3MuYwkyMDEyLTA3LTA1IDA2OjMyOjQxICswMDAw CisrKyBzcmMvbXNkb3MuYwkyMDEyLTA3LTA3IDIwOjAwOjA0ICswMDAwCkBAIC00MTM2LDE0 ICs0MTM2LDE0IEBACiAgICAgICBFTUFDU19USU1FIGNsbm93LCBjbGxhc3QsIGNsZGlmZjsK IAogICAgICAgZ2V0dGltZSAoJnQpOwotICAgICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKGNs bGFzdCwgdC50dl9zZWMsIHQudHZfbnNlYyk7CisgICAgICBjbGxhc3QgPSBtYWtlX2VtYWNz X3RpbWUgKHQudHZfc2VjLCB0LnR2X25zZWMpOwogCiAgICAgICB3aGlsZSAoIWNoZWNrX2lu cHV0IHx8ICFkZXRlY3RfaW5wdXRfcGVuZGluZyAoKSkKIAl7CiAJICBnZXR0aW1lICgmdCk7 Ci0JICBFTUFDU19TRVRfU0VDU19OU0VDUyAoY2xub3csIHQudHZfc2VjLCB0LnR2X25zZWMp OwotCSAgRU1BQ1NfU1VCX1RJTUUgKGNsZGlmZiwgY2xub3csIGNsbGFzdCk7Ci0JICBFTUFD U19TVUJfVElNRSAoKnRpbWVvdXQsICp0aW1lb3V0LCBjbGRpZmYpOworCSAgY2xub3cgPSBt YWtlX2VtYWNzX3RpbWUgKHQudHZfc2VjLCB0LnR2X25zZWMpOworCSAgY2xkaWZmID0gc3Vi X2VtYWNzX3RpbWUgKGNsbm93LCBjbGxhc3QpOworCSAgKnRpbWVvdXQgPSBzdWJfZW1hY3Nf dGltZSAoKnRpbWVvdXQsIGNsZGlmZik7CiAKIAkgIC8qIFN0b3Agd2hlbiB0aW1lb3V0IHZh bHVlIGNyb3NzZXMgemVyby4gICovCiAJICBpZiAoRU1BQ1NfVElNRV9TSUdOICgqdGltZW91 dCkgPD0gMCkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbnN0ZXJtLm0nCi0tLSBzcmMvbnN0 ZXJtLm0JMjAxMi0wNy0wNiAyMTowNzo0NiArMDAwMAorKysgc3JjL25zdGVybS5tCTIwMTIt MDctMDcgMDQ6NTM6MzggKzAwMDAKQEAgLTM4OSwyMSArMzg5LDE2IEBACiAgICAgIEJsb2Nr aW5nIHRpbWVyIHV0aWxpdHkgdXNlZCBieSBuc19yaW5nX2JlbGwKICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovCiB7Ci0gIEVNQUNTX1RJTUUgd2FrZXVwLCBkZWxheTsKLQotICBFTUFD U19HRVRfVElNRSAod2FrZXVwKTsKLSAgRU1BQ1NfU0VUX1NFQ1NfVVNFQ1MgKGRlbGF5LCAw LCB1c2Vjcyk7Ci0gIEVNQUNTX0FERF9USU1FICh3YWtldXAsIHdha2V1cCwgZGVsYXkpOwor ICBFTUFDU19USU1FIHdha2V1cCA9IGFkZF9lbWFjc190aW1lIChjdXJyZW50X2VtYWNzX3Rp bWUgKCksCisJCQkJICAgICAgbWFrZV9lbWFjc190aW1lICgwLCB1c2VjcyAqIDEwMDApKTsK IAogICAvKiBLZWVwIHdhaXRpbmcgdW50aWwgcGFzdCB0aGUgdGltZSB3YWtldXAuICAqLwog ICB3aGlsZSAoMSkKICAgICB7Ci0gICAgICBFTUFDU19USU1FIHRpbWVvdXQ7Ci0KLSAgICAg IEVNQUNTX0dFVF9USU1FICh0aW1lb3V0KTsKLSAgICAgIGlmIChFTUFDU19USU1FX0xFICh3 YWtldXAsIHRpbWVvdXQpKQorICAgICAgRU1BQ1NfVElNRSBub3cgPSBjdXJyZW50X2VtYWNz X3RpbWUgKCk7CisgICAgICBpZiAoRU1BQ1NfVElNRV9MRSAod2FrZXVwLCBub3cpKQogCWJy ZWFrOwotICAgICAgRU1BQ1NfU1VCX1RJTUUgKHRpbWVvdXQsIHdha2V1cCwgdGltZW91dCk7 CisgICAgICB0aW1lb3V0ID0gc3ViX2VtYWNzX3RpbWUgKHdha2V1cCwgbm93KTsKIAogICAg ICAgLyogVHJ5IHRvIHdhaXQgdGhhdCBsb25nLS1idXQgd2UgbWlnaHQgd2FrZSB1cCBzb29u ZXIuICAqLwogICAgICAgcHNlbGVjdCAoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJnRpbWVvdXQs IE5VTEwpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9wcm9jZXNzLmMnCi0tLSBzcmMvcHJv Y2Vzcy5jCTIwMTItMDctMDYgMTY6NTc6MzIgKzAwMDAKKysrIHNyYy9wcm9jZXNzLmMJMjAx Mi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtMTg1MiwxMCArMTg1Miw5IEBACiAJIFNvIGhh dmUgYW4gaW50ZXJydXB0IGphciBpdCBsb29zZS4gICovCiAgICAgICB7CiAJc3RydWN0IGF0 aW1lciAqdGltZXI7Ci0JRU1BQ1NfVElNRSBvZmZzZXQ7CisJRU1BQ1NfVElNRSBvZmZzZXQg PSBtYWtlX2VtYWNzX3RpbWUgKDEsIDApOwogCiAJc3RvcF9wb2xsaW5nICgpOwotCUVNQUNT X1NFVF9TRUNTX1VTRUNTIChvZmZzZXQsIDEsIDApOwogCXRpbWVyID0gc3RhcnRfYXRpbWVy IChBVElNRVJfUkVMQVRJVkUsIG9mZnNldCwgY3JlYXRlX3Byb2Nlc3NfMSwgMCk7CiAKIAlp ZiAoZm9ya2luID49IDApCkBAIC00MzA5LDkgKzQzMDgsOCBAQAogICAgICBjb21wdXRlIHRo ZSBhYnNvbHV0ZSB0aW1lIHRvIHJldHVybiBhdC4gICovCiAgIGlmICh0aW1lX2xpbWl0IHx8 IDAgPCBuc2VjcykKICAgICB7Ci0gICAgICBFTUFDU19HRVRfVElNRSAoZW5kX3RpbWUpOwot ICAgICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKHRpbWVvdXQsIHRpbWVfbGltaXQsIG5zZWNz KTsKLSAgICAgIEVNQUNTX0FERF9USU1FIChlbmRfdGltZSwgZW5kX3RpbWUsIHRpbWVvdXQp OworICAgICAgdGltZW91dCA9IG1ha2VfZW1hY3NfdGltZSAodGltZV9saW1pdCwgbnNlY3Mp OworICAgICAgZW5kX3RpbWUgPSBhZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1l ICgpLCB0aW1lb3V0KTsKICAgICB9CiAKICAgd2hpbGUgKDEpCkBAIC00MzQwLDE4ICs0MzM4 LDE4IEBACiAJICAgICBnb2JibGUgb3V0cHV0IGF2YWlsYWJsZSBub3cKIAkgICAgIGJ1dCBk b24ndCB3YWl0IGF0IGFsbC4gKi8KIAotCSAgRU1BQ1NfU0VUX1NFQ1NfVVNFQ1MgKHRpbWVv dXQsIDAsIDApOworCSAgdGltZW91dCA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMCk7CiAJfQog ICAgICAgZWxzZSBpZiAodGltZV9saW1pdCB8fCAwIDwgbnNlY3MpCiAJewotCSAgRU1BQ1Nf R0VUX1RJTUUgKHRpbWVvdXQpOwotCSAgaWYgKEVNQUNTX1RJTUVfTEUgKGVuZF90aW1lLCB0 aW1lb3V0KSkKKwkgIEVNQUNTX1RJTUUgbm93ID0gY3VycmVudF9lbWFjc190aW1lICgpOwor CSAgaWYgKEVNQUNTX1RJTUVfTEUgKGVuZF90aW1lLCBub3cpKQogCSAgICBicmVhazsKLQkg IEVNQUNTX1NVQl9USU1FICh0aW1lb3V0LCBlbmRfdGltZSwgdGltZW91dCk7CisJICB0aW1l b3V0ID0gc3ViX2VtYWNzX3RpbWUgKGVuZF90aW1lLCBub3cpOwogCX0KICAgICAgIGVsc2UK IAl7Ci0JICBFTUFDU19TRVRfU0VDU19VU0VDUyAodGltZW91dCwgMTAwMDAwLCAwKTsKKwkg IHRpbWVvdXQgPSBtYWtlX2VtYWNzX3RpbWUgKDEwMDAwMCwgMCk7CiAJfQogCiAgICAgICAv KiBOb3JtYWxseSB3ZSBydW4gdGltZXJzIGhlcmUuCkBAIC00NDM2LDcgKzQ0MzQsNyBAQAog ICAgICAgICAgICAgQXRlbXAgPSBpbnB1dF93YWl0X21hc2s7CiAJICBDdGVtcCA9IHdyaXRl X21hc2s7CiAKLQkgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICh0aW1lb3V0LCAwLCAwKTsKKwkg IHRpbWVvdXQgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIDApOwogCSAgaWYgKChwc2VsZWN0ICht YXggKG1heF9wcm9jZXNzX2Rlc2MsIG1heF9pbnB1dF9kZXNjKSArIDEsCiAJCQkmQXRlbXAs CiAjaWZkZWYgTk9OX0JMT0NLSU5HX0NPTk5FQ1QKQEAgLTQ1ODgsNyArNDU4Niw3IEBACiAJ CQluc2VjcyA9IFhQUk9DRVNTIChwcm9jKS0+cmVhZF9vdXRwdXRfZGVsYXk7CiAJCSAgICB9 CiAJCX0KLQkgICAgICBFTUFDU19TRVRfU0VDU19OU0VDUyAodGltZW91dCwgMCwgbnNlY3Mp OworCSAgICAgIHRpbWVvdXQgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIG5zZWNzKTsKIAkgICAg ICBwcm9jZXNzX291dHB1dF9za2lwID0gMDsKIAkgICAgfQogI2VuZGlmCkBAIC02NDI0LDcg KzY0MjIsNyBAQAogCSAgLyogVGVsbCB3YWl0X3JlYWRpbmdfcHJvY2Vzc19vdXRwdXQgdGhh dCBpdCBuZWVkcyB0byB3YWtlIHVwIGFuZAogCSAgICAgbG9vayBhcm91bmQuICAqLwogCSAg aWYgKGlucHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lKQotCSAgICBFTUFDU19TRVRfU0VDU19V U0VDUyAoKmlucHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lLCAwLCAwKTsKKwkgICAgKmlucHV0 X2F2YWlsYWJsZV9jbGVhcl90aW1lID0gbWFrZV9lbWFjc190aW1lICgwLCAwKTsKIAl9CiAK ICAgICAgIC8qIFRoZXJlIHdhcyBubyBhc3luY2hyb25vdXMgcHJvY2VzcyBmb3VuZCBmb3Ig dGhhdCBwaWQ6IHdlIGhhdmUKQEAgLTY0NDIsNyArNjQ0MCw3IEBACiAJICAvKiBUZWxsIHdh aXRfcmVhZGluZ19wcm9jZXNzX291dHB1dCB0aGF0IGl0IG5lZWRzIHRvIHdha2UgdXAgYW5k CiAJICAgICBsb29rIGFyb3VuZC4gICovCiAJICBpZiAoaW5wdXRfYXZhaWxhYmxlX2NsZWFy X3RpbWUpCi0JICAgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICgqaW5wdXRfYXZhaWxhYmxlX2Ns ZWFyX3RpbWUsIDAsIDApOworCSAgICAqaW5wdXRfYXZhaWxhYmxlX2NsZWFyX3RpbWUgPSBt YWtlX2VtYWNzX3RpbWUgKDAsIDApOwogCX0KIAogICAgIHNpZ2NobGRfZW5kX29mX2xvb3A6 CkBAIC02ODU3LDkgKzY4NTUsOCBAQAogICAvKiBXaGF0IGRvZXMgdGltZV9saW1pdCByZWFs bHkgbWVhbj8gICovCiAgIGlmICh0aW1lX2xpbWl0IHx8IDAgPCBuc2VjcykKICAgICB7Ci0g ICAgICBFTUFDU19HRVRfVElNRSAoZW5kX3RpbWUpOwotICAgICAgRU1BQ1NfU0VUX1NFQ1Nf TlNFQ1MgKHRpbWVvdXQsIHRpbWVfbGltaXQsIG5zZWNzKTsKLSAgICAgIEVNQUNTX0FERF9U SU1FIChlbmRfdGltZSwgZW5kX3RpbWUsIHRpbWVvdXQpOworICAgICAgdGltZW91dCA9IG1h a2VfZW1hY3NfdGltZSAodGltZV9saW1pdCwgbnNlY3MpOworICAgICAgZW5kX3RpbWUgPSBh ZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1lICgpLCB0aW1lb3V0KTsKICAgICB9 CiAKICAgLyogVHVybiBvZmYgcGVyaW9kaWMgYWxhcm1zIChpbiBjYXNlIHRoZXkgYXJlIGlu IHVzZSkKQEAgLTY4OTAsMTggKzY4ODcsMTggQEAKIAkgICAgIGdvYmJsZSBvdXRwdXQgYXZh aWxhYmxlIG5vdwogCSAgICAgYnV0IGRvbid0IHdhaXQgYXQgYWxsLiAqLwogCi0JICBFTUFD U19TRVRfU0VDU19VU0VDUyAodGltZW91dCwgMCwgMCk7CisJICB0aW1lb3V0ID0gbWFrZV9l bWFjc190aW1lICgwLCAwKTsKIAl9CiAgICAgICBlbHNlIGlmICh0aW1lX2xpbWl0IHx8IDAg PCBuc2VjcykKIAl7Ci0JICBFTUFDU19HRVRfVElNRSAodGltZW91dCk7Ci0JICBpZiAoRU1B Q1NfVElNRV9MRSAoZW5kX3RpbWUsIHRpbWVvdXQpKQorCSAgRU1BQ1NfVElNRSBub3cgPSBj dXJyZW50X2VtYWNzX3RpbWUgKCk7CisJICBpZiAoRU1BQ1NfVElNRV9MRSAoZW5kX3RpbWUs IG5vdykpCiAJICAgIGJyZWFrOwotCSAgRU1BQ1NfU1VCX1RJTUUgKHRpbWVvdXQsIGVuZF90 aW1lLCB0aW1lb3V0KTsKKwkgIHRpbWVvdXQgPSBzdWJfZW1hY3NfdGltZSAoZW5kX3RpbWUs IG5vdyk7CiAJfQogICAgICAgZWxzZQogCXsKLQkgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICh0 aW1lb3V0LCAxMDAwMDAsIDApOworCSAgdGltZW91dCA9IG1ha2VfZW1hY3NfdGltZSAoMTAw MDAwLCAwKTsKIAl9CiAKICAgICAgIC8qIElmIG91ciBjYWxsZXIgd2lsbCBub3QgaW1tZWRp YXRlbHkgaGFuZGxlIGtleWJvYXJkIGV2ZW50cywKCj09PSBtb2RpZmllZCBmaWxlICdzcmMv c3lzZGVwLmMnCi0tLSBzcmMvc3lzZGVwLmMJMjAxMi0wNy0wNyAxODoxNjoxNSArMDAwMAor Kysgc3JjL3N5c2RlcC5jCTIwMTItMDctMDcgMjA6MDQ6MDIgKzAwMDAKQEAgLTI1ODYsNyAr MjU4Niw2IEBACiAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzID0gdHZhbCAvIGh6OwogICB1bnNp Z25lZCBsb25nIGxvbmcgZnJhYyA9IHR2YWwgJSBoejsKICAgaW50IG5zOwotICBFTUFDU19U SU1FIHQ7CiAKICAgaWYgKFRZUEVfTUFYSU1VTSAodGltZV90KSA8IHMpCiAgICAgdGltZV9v dmVyZmxvdyAoKTsKQEAgLTI2MDMsOCArMjYwMiw3IEBACiAgICAgICBucyA9IGZyYWMgLyBo el9wZXJfbnM7CiAgICAgfQogCi0gIEVNQUNTX1NFVF9TRUNTX05TRUNTICh0LCBzLCBucyk7 Ci0gIHJldHVybiB0OworICByZXR1cm4gbWFrZV9lbWFjc190aW1lIChzLCBucyk7CiB9CiAK IHN0YXRpYyBMaXNwX09iamVjdApAQCAtMjYxOCw5ICsyNjE2LDcgQEAKIGdldF91cF90aW1l ICh2b2lkKQogewogICBGSUxFICpmdXA7Ci0gIEVNQUNTX1RJTUUgdXA7Ci0KLSAgRU1BQ1Nf U0VUX1NFQ1NfTlNFQ1MgKHVwLCAwLCAwKTsKKyAgRU1BQ1NfVElNRSB1cCA9IG1ha2VfZW1h Y3NfdGltZSAoMCwgMCk7CiAKICAgQkxPQ0tfSU5QVVQ7CiAgIGZ1cCA9IGZvcGVuICgiL3By b2MvdXB0aW1lIiwgInIiKTsKQEAgLTI2NDksNyArMjY0NSw3IEBACiAJCXVwZnJhYyAvPSAx MDsKIAkgICAgICB1cGZyYWMgPSBtaW4gKHVwZnJhYywgRU1BQ1NfVElNRV9SRVNPTFVUSU9O IC0gMSk7CiAJICAgIH0KLQkgIEVNQUNTX1NFVF9TRUNTX05TRUNTICh1cCwgdXBzZWMsIHVw ZnJhYyk7CisJICB1cCA9IG1ha2VfZW1hY3NfdGltZSAodXBzZWMsIHVwZnJhYyk7CiAJfQog ICAgICAgZmNsb3NlIChmdXApOwogICAgIH0KQEAgLTI4NzcsMTUgKzI4NzMsMTUgQEAKIAkg IGF0dHJzID0gRmNvbnMgKEZjb25zIChRcHJpLCBtYWtlX251bWJlciAocHJpb3JpdHkpKSwg YXR0cnMpOwogCSAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFFuaWNlLCBtYWtlX251bWJlciAo bmljZW5lc3MpKSwgYXR0cnMpOwogCSAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFF0aGNvdW50 LCBtYWtlX2ZpeG51bV9vcl9mbG9hdCAodGhjb3VudF9laW50KSksIGF0dHJzKTsKLQkgIEVN QUNTX0dFVF9USU1FICh0bm93KTsKKwkgIHRub3cgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7 CiAJICB0ZWxhcHNlZCA9IGdldF91cF90aW1lICgpOwotCSAgRU1BQ1NfU1VCX1RJTUUgKHRi b290LCB0bm93LCB0ZWxhcHNlZCk7CisJICB0Ym9vdCA9IHN1Yl9lbWFjc190aW1lICh0bm93 LCB0ZWxhcHNlZCk7CiAJICB0c3RhcnQgPSB0aW1lX2Zyb21famlmZmllcyAoc3RhcnQsIGNs b2Nrc19wZXJfc2VjKTsKLQkgIEVNQUNTX0FERF9USU1FICh0c3RhcnQsIHRib290LCB0c3Rh cnQpOworCSAgdHN0YXJ0ID0gYWRkX2VtYWNzX3RpbWUgKHRib290LCB0c3RhcnQpOwogCSAg YXR0cnMgPSBGY29ucyAoRmNvbnMgKFFzdGFydCwgbWFrZV9saXNwX3RpbWUgKHRzdGFydCkp LCBhdHRycyk7CiAJICBhdHRycyA9IEZjb25zIChGY29ucyAoUXZzaXplLCBtYWtlX2ZpeG51 bV9vcl9mbG9hdCAodnNpemUvMTAyNCkpLCBhdHRycyk7CiAJICBhdHRycyA9IEZjb25zIChG Y29ucyAoUXJzcywgbWFrZV9maXhudW1fb3JfZmxvYXQgKDQqcnNzKSksIGF0dHJzKTsKLQkg IEVNQUNTX1NVQl9USU1FICh0ZWxhcHNlZCwgdG5vdywgdHN0YXJ0KTsKKwkgIHRlbGFwc2Vk ID0gc3ViX2VtYWNzX3RpbWUgKHRub3csIHRzdGFydCk7CiAJICBhdHRycyA9IEZjb25zIChG Y29ucyAoUWV0aW1lLCBtYWtlX2xpc3BfdGltZSAodGVsYXBzZWQpKSwgYXR0cnMpOwogCSAg dXNfdGltZSA9IHRpbWVfZnJvbV9qaWZmaWVzICh1X3RpbWUgKyBzX3RpbWUsIGNsb2Nrc19w ZXJfc2VjKTsKIAkgIHBjcHUgPSAoRU1BQ1NfVElNRV9UT19ET1VCTEUgKHVzX3RpbWUpCkBA IC0zMTA5LDkgKzMxMDUsNyBAQAogc3RhdGljIEVNQUNTX1RJTUUKIHRpbWV2YWxfdG9fRU1B Q1NfVElNRSAoc3RydWN0IHRpbWV2YWwgdCkKIHsKLSAgRU1BQ1NfVElNRSBlOwotICBFTUFD U19TRVRfU0VDU19OU0VDUyAoZSwgdC50dl9zZWMsIHQudHZfdXNlYyAqIDEwMDApOwotICBy ZXR1cm4gZTsKKyAgcmV0dXJuIG1ha2VfZW1hY3NfdGltZSAodC50dl9zZWMsIHQudHZfdXNl YyAqIDEwMDApOwogfQogCiBzdGF0aWMgTGlzcF9PYmplY3QKQEAgLTMyMTksOSArMzIxMyw4 IEBACiAJCSBhdHRycyk7CiAgIGF0dHJzID0gRmNvbnMgKEZjb25zIChRc3RpbWUsIG1ha2Vf bGlzcF90aW1ldmFsIChwcm9jLmtpX3J1c2FnZS5ydV9zdGltZSkpLAogCQkgYXR0cnMpOwot ICBFTUFDU19BRERfVElNRSAodCwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mu a2lfcnVzYWdlLnJ1X3V0aW1lKSwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mu a2lfcnVzYWdlLnJ1X3N0aW1lKSk7CisgIHQgPSBhZGRfZW1hY3NfdGltZSAodGltZXZhbF90 b19FTUFDU19USU1FIChwcm9jLmtpX3J1c2FnZS5ydV91dGltZSksCisJCSAgICAgIHRpbWV2 YWxfdG9fRU1BQ1NfVElNRSAocHJvYy5raV9ydXNhZ2UucnVfc3RpbWUpKTsKICAgYXR0cnMg PSBGY29ucyAoRmNvbnMgKFF0aW1lLCBtYWtlX2xpc3BfdGltZSAodCkpLCBhdHRycyk7CiAK ICAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFFjdXRpbWUsCkBAIC0zMjMwLDkgKzMyMjMsOCBA QAogICBhdHRycyA9IEZjb25zIChGY29ucyAoUWNzdGltZSwKIAkJCW1ha2VfbGlzcF90aW1l dmFsIChwcm9jLmtpX3J1c2FnZV9jaC5ydV91dGltZSkpLAogCQkgYXR0cnMpOwotICBFTUFD U19BRERfVElNRSAodCwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mua2lfcnVz YWdlX2NoLnJ1X3V0aW1lKSwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mua2lf cnVzYWdlX2NoLnJ1X3N0aW1lKSk7CisgIHQgPSBhZGRfZW1hY3NfdGltZSAodGltZXZhbF90 b19FTUFDU19USU1FIChwcm9jLmtpX3J1c2FnZV9jaC5ydV91dGltZSksCisJCSAgICAgIHRp bWV2YWxfdG9fRU1BQ1NfVElNRSAocHJvYy5raV9ydXNhZ2VfY2gucnVfc3RpbWUpKTsKICAg YXR0cnMgPSBGY29ucyAoRmNvbnMgKFFjdGltZSwgbWFrZV9saXNwX3RpbWUgKHQpKSwgYXR0 cnMpOwogCiAgIGF0dHJzID0gRmNvbnMgKEZjb25zIChRdGhjb3VudCwgbWFrZV9maXhudW1f b3JfZmxvYXQgKHByb2Mua2lfbnVtdGhyZWFkcykpLApAQCAtMzI0NCw4ICszMjM2LDggQEAK ICAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFFyc3MsICAgbWFrZV9udW1iZXIgKHByb2Mua2lf cnNzaXplICogcGFnZXNpemUgPj4gMTApKSwKIAkJIGF0dHJzKTsKIAotICBFTUFDU19HRVRf VElNRSAobm93KTsKLSAgRU1BQ1NfU1VCX1RJTUUgKHQsIG5vdywgdGltZXZhbF90b19FTUFD U19USU1FIChwcm9jLmtpX3N0YXJ0KSk7CisgIG5vdyA9IGN1cnJlbnRfZW1hY3NfdGltZSAo KTsKKyAgdCA9IHN1Yl9lbWFjc190aW1lIChub3csIHRpbWV2YWxfdG9fRU1BQ1NfVElNRSAo cHJvYy5raV9zdGFydCkpOwogICBhdHRycyA9IEZjb25zIChGY29ucyAoUWV0aW1lLCBtYWtl X2xpc3BfdGltZSAodCkpLCBhdHRycyk7CiAKICAgbGVuID0gc2l6ZW9mIGZzY2FsZTsKCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvc3lzdGltZS5oJwotLS0gc3JjL3N5c3RpbWUuaAkyMDEy LTA3LTA3IDAxOjU3OjQyICswMDAwCisrKyBzcmMvc3lzdGltZS5oCTIwMTItMDctMDcgMDU6 MzQ6NTUgKzAwMDAKQEAgLTM5LDY0ICszOSw5MSBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lm ZGVmIFdJTkRPV1NOVAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CS8qIGZvciAnc3RydWN0IHRp bWV2YWwnICovCi0jZW5kaWYKIAwKLS8qIFRoZSB0eXBlIHRvIHVzZSB0byByZXByZXNlbnQg dGVtcG9yYWwgaW50ZXJ2YWxzLiAgSXQgY2FuIGJlIHBhc3NlZAorLyogVGhlIHR5cGUgdG8g dXNlIHRvIHJlcHJlc2VudCB0ZW1wb3JhbCBpbnRlcnZhbHMuICBJdHMgYWRkcmVzcyBjYW4g YmUgcGFzc2VkCiAgICBhcyB0aGUgdGltZW91dCBhcmd1bWVudCB0byB0aGUgcHNlbGVjdCBz eXN0ZW0gY2FsbC4gICovCi0jZGVmaW5lIEVNQUNTX1RJTUUgc3RydWN0IHRpbWVzcGVjCit0 eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyBFTUFDU19USU1FOwogCiAvKiBSZXNvbHV0aW9uIG9m IEVNQUNTX1RJTUUgdGltZSBzdGFtcHMgKGluIHVuaXRzIHBlciBzZWNvbmQpLCBhbmQgbG9n CiAgICBiYXNlIDEwIG9mIHRoZSByZXNvbHV0aW9uLiAgVGhlIGxvZyBtdXN0IGJlIGEgcG9z aXRpdmUgaW50ZWdlci4gICovCi0jZGVmaW5lIEVNQUNTX1RJTUVfUkVTT0xVVElPTgkJMTAw MDAwMDAwMAotI2RlZmluZSBMT0cxMF9FTUFDU19USU1FX1JFU09MVVRJT04JOQotCi0vKiBF TUFDU19TRUNTIChUSU1FKSBpcyBhbiBydmFsdWUgZm9yIHRoZSBzZWNvbmRzIGNvbXBvbmVu dCBvZiBUSU1FLgotICAgRU1BQ1NfU0VDU19BRERSICh0aW1lKSBpcyB0aGUgYWRkcmVzcyBv ZiB0aGUgc2Vjb25kcyBjb21wb25lbnQuCi0gICBFTUFDU19TRVRfU0VDUyAoVElNRSwgU0VD T05EUykgc2V0cyB0aGF0IHRvIFNFQ09ORFMuCi0KLSAgIEVNQUNTX05TRUNTIChUSU1FKSBp cyBhbiBydmFsdWUgZm9yIHRoZSBuYW5vc2Vjb25kcyBjb21wb25lbnQgb2YgVElNRS4KLSAg IEVNQUNTX1NFVF9OU0VDUyAoVElNRSwgTkFOT1NFQ09ORFMpIHNldHMgdGhhdCB0byBOQU5P U0VDT05EUy4KLQotICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKFRJTUUsIFNFQ1MsIE5TRUNT KSBzZXRzIGJvdGggY29tcG9uZW50cyBvZiBUSU1FLiAgKi8KLSNkZWZpbmUgRU1BQ1NfU0VD Uyh0aW1lKQkJICAgICgodGltZSkudHZfc2VjICArIDApCi0jZGVmaW5lIEVNQUNTX05TRUNT KHRpbWUpCQkgICAgKCh0aW1lKS50dl9uc2VjICsgMCkKLSNkZWZpbmUgRU1BQ1NfU0VDU19B RERSKHRpbWUpCQkgICAgKCYodGltZSkudHZfc2VjKQotI2RlZmluZSBFTUFDU19TRVRfU0VD Uyh0aW1lLCBzZWNvbmRzKQkgICAgKCh0aW1lKS50dl9zZWMgID0gKHNlY29uZHMpKQotI2Rl ZmluZSBFTUFDU19TRVRfTlNFQ1ModGltZSwgbnMpCSAgICAoKHRpbWUpLnR2X25zZWMgPSAo bnMpKQotI2RlZmluZSBFTUFDU19TRVRfU0VDU19OU0VDUyh0aW1lLCBzLCBucykJCQkJXAot ICAoKHZvaWQpIChFTUFDU19TRVRfU0VDUyAodGltZSwgcyksIEVNQUNTX1NFVF9OU0VDUyAo dGltZSwgbnMpKSkKLQotLyogQ29udmVuaWVuY2UgbWFjcm9zIGZvciBvbGRlciBjb2RlIHRo YXQgY291bnRzIG1pY3Jvc2Vjb25kcy4gICovCi0jZGVmaW5lIEVNQUNTX1NFVF9VU0VDUyh0 aW1lLCB1cykgICgodm9pZCkgRU1BQ1NfU0VUX05TRUNTICh0aW1lLCAodXMpICogMTAwMCkp Ci0jZGVmaW5lIEVNQUNTX1NFVF9TRUNTX1VTRUNTKHRpbWUsIHNlY3MsIHVzZWNzKSAJCVwK LSAgKEVNQUNTX1NFVF9TRUNTICh0aW1lLCBzZWNzKSwgRU1BQ1NfU0VUX1VTRUNTICh0aW1l LCB1c2VjcykpCi0KLS8qIFNldCBUSU1FIHRvIGFuIGludmFsaWQgdGltZSBzdGFtcC4gICov Ci0jZGVmaW5lIEVNQUNTX1NFVF9JTlZBTElEX1RJTUUodGltZSkJICAgIEVNQUNTX1NFVF9T RUNTX05TRUNTKHRpbWUsIDAsIC0xKQotCi0vKiBTZXQgVElNRSB0byB0aGUgY3VycmVudCBz eXN0ZW0gdGltZS4gICovCi0jZGVmaW5lIEVNQUNTX0dFVF9USU1FKHRpbWUpCQkgICAgZ2V0 dGltZSAoJih0aW1lKSkKLQotLyogUHV0IGludG8gREVTVCB0aGUgcmVzdWx0IG9mIGFkZGlu ZyBTUkMxIHRvIFNSQzIsIG9yIG9mIHN1YnRyYWN0aW5nCi0gICBTUkMyIGZyb20gU1JDMS4g IE9uIG92ZXJmbG93LCBzdG9yZSBhbiBleHRyZW1hbCB2YWx1ZS4gICovCi0jZGVmaW5lIEVN QUNTX0FERF9USU1FKGRlc3QsIHNyYzEsIHNyYzIpICgoZGVzdCkgPSB0aW1lc3BlY19hZGQg KHNyYzEsIHNyYzIpKQotI2RlZmluZSBFTUFDU19TVUJfVElNRShkZXN0LCBzcmMxLCBzcmMy KSAoKGRlc3QpID0gdGltZXNwZWNfc3ViIChzcmMxLCBzcmMyKSkKK2VudW0geyBFTUFDU19U SU1FX1JFU09MVVRJT04gPSAxMDAwMDAwMDAwIH07CitlbnVtIHsgTE9HMTBfRU1BQ1NfVElN RV9SRVNPTFVUSU9OID0gOSB9OworCisvKiBFTUFDU19TRUNTIChUSU1FKSBpcyB0aGUgc2Vj b25kcyBjb21wb25lbnQgb2YgVElNRS4KKyAgIEVNQUNTX05TRUNTIChUSU1FKSBpcyB0aGUg bmFub3NlY29uZHMgY29tcG9uZW50IG9mIFRJTUUuCisgICBlbWFjc19zZWNzX2FkZHIgKFBU SU1FKSBpcyB0aGUgYWRkcmVzcyBvZiAqUFRJTUUncyBzZWNvbmRzIGNvbXBvbmVudC4gICov CitzdGF0aWMgaW5saW5lIHRpbWVfdCBFTUFDU19TRUNTIChFTUFDU19USU1FIHQpIHsgcmV0 dXJuIHQudHZfc2VjOyB9CitzdGF0aWMgaW5saW5lIGludCBFTUFDU19OU0VDUyAoRU1BQ1Nf VElNRSB0KSB7IHJldHVybiB0LnR2X25zZWM7IH0KK3N0YXRpYyBpbmxpbmUgdGltZV90ICpl bWFjc19zZWNzX2FkZHIgKEVNQUNTX1RJTUUgKnQpIHsgcmV0dXJuICZ0LT50dl9zZWM7IH0K KworLyogUmV0dXJuIGFuIEVtYWNzIHRpbWUgd2l0aCBzZWNvbmRzIFMgYW5kIG5hbm9zZWNv bmRzIE5TLiAgKi8KK3N0YXRpYyBpbmxpbmUgRU1BQ1NfVElNRQorbWFrZV9lbWFjc190aW1l ICh0aW1lX3QgcywgaW50IG5zKQoreworICBFTUFDU19USU1FIHIgPSB7IHMsIG5zIH07Cisg IHJldHVybiByOworfQorCisvKiBSZXR1cm4gYW4gaW52YWxpZCBFbWFjcyB0aW1lLiAgKi8K K3N0YXRpYyBpbmxpbmUgRU1BQ1NfVElNRQoraW52YWxpZF9lbWFjc190aW1lICh2b2lkKQor eworICBFTUFDU19USU1FIHIgPSB7IDAsIC0xIH07CisgIHJldHVybiByOworfQorCisvKiBS ZXR1cm4gY3VycmVudCBzeXN0ZW0gdGltZS4gICovCitzdGF0aWMgaW5saW5lIEVNQUNTX1RJ TUUKK2N1cnJlbnRfZW1hY3NfdGltZSAodm9pZCkKK3sKKyAgRU1BQ1NfVElNRSByOworICBn ZXR0aW1lICgmcik7CisgIHJldHVybiByOworfQorCisvKiBSZXR1cm4gdGhlIHJlc3VsdCBv ZiBhZGRpbmcgQSB0byBCLCBvciBvZiBzdWJ0cmFjdGluZyBCIGZyb20gQS4KKyAgIE9uIG92 ZXJmbG93LCByZXR1cm4gYW4gZXh0cmVtYWwgdmFsdWUuICAqLworc3RhdGljIGlubGluZSBF TUFDU19USU1FCithZGRfZW1hY3NfdGltZSAoRU1BQ1NfVElNRSBhLCBFTUFDU19USU1FIGIp Cit7CisgIHJldHVybiB0aW1lc3BlY19hZGQgKGEsIGIpOworfQorc3RhdGljIGlubGluZSBF TUFDU19USU1FCitzdWJfZW1hY3NfdGltZSAoRU1BQ1NfVElNRSBhLCBFTUFDU19USU1FIGIp Cit7CisgIHJldHVybiB0aW1lc3BlY19zdWIgKGEsIGIpOworfQogCiAvKiBSZXR1cm4gdGhl IHNpZ24gb2YgdGhlIHZhbGlkIHRpbWUgc3RhbXAgVElNRSwgZWl0aGVyIC0xLCAwLCBvciAx LiAgKi8KLSNkZWZpbmUgRU1BQ1NfVElNRV9TSUdOKHRpbWUpCQl0aW1lc3BlY19zaWduICh0 aW1lKQorc3RhdGljIGlubGluZSBpbnQKK0VNQUNTX1RJTUVfU0lHTiAoRU1BQ1NfVElNRSB0 KQoreworICByZXR1cm4gdGltZXNwZWNfc2lnbiAodCk7Cit9CiAKIC8qIFJldHVybiAxIGlm IFRJTUUgaXMgYSB2YWxpZCB0aW1lIHN0YW1wLiAgKi8KLSNkZWZpbmUgRU1BQ1NfVElNRV9W QUxJRF9QKHRpbWUpCSgwIDw9ICh0aW1lKS50dl9uc2VjKQorc3RhdGljIGlubGluZSBpbnQK K0VNQUNTX1RJTUVfVkFMSURfUCAoRU1BQ1NfVElNRSB0KQoreworICByZXR1cm4gMCA8PSB0 LnR2X25zZWM7Cit9CiAKIC8qIENvbnZlcnQgdGhlIGRvdWJsZSBEIHRvIHRoZSBncmVhdGVz dCBFTUFDU19USU1FIG5vdCBncmVhdGVyIHRoYW4gRC4KICAgIE9uIG92ZXJmbG93LCByZXR1 cm4gYW4gZXh0cmVtYWwgdmFsdWUuICBSZXR1cm4gdGhlIG1pbmltdW0KICAgIEVNQUNTX1RJ TUUgaWYgRCBpcyBub3QgYSBudW1iZXIuICAqLwotI2RlZmluZSBFTUFDU19USU1FX0ZST01f RE9VQkxFKGQpCWR0b3RpbWVzcGVjIChkKQorc3RhdGljIGlubGluZSBFTUFDU19USU1FCitF TUFDU19USU1FX0ZST01fRE9VQkxFIChkb3VibGUgZCkKK3sKKyAgcmV0dXJuIGR0b3RpbWVz cGVjIChkKTsKK30KIAogLyogQ29udmVydCB0aGUgRW1hY3MgdGltZSBUIHRvIGFuIGFwcHJv eGltYXRlIGRvdWJsZSB2YWx1ZSBELiAgKi8KLSNkZWZpbmUgRU1BQ1NfVElNRV9UT19ET1VC TEUodCkJCXRpbWVzcGVjdG9kICh0KQorc3RhdGljIGlubGluZSBkb3VibGUKK0VNQUNTX1RJ TUVfVE9fRE9VQkxFIChFTUFDU19USU1FIHQpCit7CisgIHJldHVybiB0aW1lc3BlY3RvZCAo dCk7Cit9CiAKIC8qIGRlZmluZWQgaW4gc3lzZGVwLmMgKi8KIGV4dGVybiBpbnQgc2V0X2Zp bGVfdGltZXMgKGludCwgY29uc3QgY2hhciAqLCBFTUFDU19USU1FLCBFTUFDU19USU1FKTsK QEAgLTExNywxMiArMTQ0LDM1IEBACiAjZW5kaWYKIAogLyogQ29tcGFyZSB0aW1lcyBUMSBh bmQgVDIgZm9yIGVxdWFsaXR5LCBpbmVxdWFsaXR5IGV0Yy4gICovCi0KLSNkZWZpbmUgRU1B Q1NfVElNRV9FUShUMSwgVDIpICh0aW1lc3BlY19jbXAgKFQxLCBUMikgPT0gMCkKLSNkZWZp bmUgRU1BQ1NfVElNRV9ORShUMSwgVDIpICh0aW1lc3BlY19jbXAgKFQxLCBUMikgIT0gMCkK LSNkZWZpbmUgRU1BQ1NfVElNRV9HVChUMSwgVDIpICh0aW1lc3BlY19jbXAgKFQxLCBUMikg PiAwKQotI2RlZmluZSBFTUFDU19USU1FX0dFKFQxLCBUMikgKHRpbWVzcGVjX2NtcCAoVDEs IFQyKSA+PSAwKQotI2RlZmluZSBFTUFDU19USU1FX0xUKFQxLCBUMikgKHRpbWVzcGVjX2Nt cCAoVDEsIFQyKSA8IDApCi0jZGVmaW5lIEVNQUNTX1RJTUVfTEUoVDEsIFQyKSAodGltZXNw ZWNfY21wIChUMSwgVDIpIDw9IDApCitzdGF0aWMgaW5saW5lIGludAorRU1BQ1NfVElNRV9F USAoRU1BQ1NfVElNRSB0MSwgRU1BQ1NfVElNRSB0MikKK3sKKyAgcmV0dXJuIHRpbWVzcGVj X2NtcCAodDEsIHQyKSA9PSAwOworfQorc3RhdGljIGlubGluZSBpbnQKK0VNQUNTX1RJTUVf TkUgKEVNQUNTX1RJTUUgdDEsIEVNQUNTX1RJTUUgdDIpCit7CisgIHJldHVybiB0aW1lc3Bl Y19jbXAgKHQxLCB0MikgIT0gMDsKK30KK3N0YXRpYyBpbmxpbmUgaW50CitFTUFDU19USU1F X0dUIChFTUFDU19USU1FIHQxLCBFTUFDU19USU1FIHQyKQoreworICByZXR1cm4gdGltZXNw ZWNfY21wICh0MSwgdDIpID4gMDsKK30KK3N0YXRpYyBpbmxpbmUgaW50CitFTUFDU19USU1F X0dFIChFTUFDU19USU1FIHQxLCBFTUFDU19USU1FIHQyKQoreworICByZXR1cm4gdGltZXNw ZWNfY21wICh0MSwgdDIpID49IDA7Cit9CitzdGF0aWMgaW5saW5lIGludAorRU1BQ1NfVElN RV9MVCAoRU1BQ1NfVElNRSB0MSwgRU1BQ1NfVElNRSB0MikKK3sKKyAgcmV0dXJuIHRpbWVz cGVjX2NtcCAodDEsIHQyKSA8IDA7Cit9CitzdGF0aWMgaW5saW5lIGludAorRU1BQ1NfVElN RV9MRSAoRU1BQ1NfVElNRSB0MSwgRU1BQ1NfVElNRSB0MikKK3sKKyAgcmV0dXJuIHRpbWVz cGVjX2NtcCAodDEsIHQyKSA8PSAwOworfQogCiAjZW5kaWYgLyogRU1BQ1NfU1lTVElNRV9I ICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3VuZG8uYycKLS0tIHNyYy91bmRvLmMJMjAx Mi0wNy0wNyAwMTo1Nzo0MiArMDAwMAorKysgc3JjL3VuZG8uYwkyMDEyLTA3LTA3IDA0OjUz OjM4ICswMDAwCkBAIC01MTcsOSArNTE3LDkgQEAKIAkJICAgICAgJiYgQ09OU1AgKFhDRFIg KFhDRFIgKFhDRFIgKGNkcikpKSkKIAkJICAgICAgJiYgSU5URUdFUlAgKFhDQVIgKFhDRFIg KFhDRFIgKFhDRFIgKGNkcikpKSkpCiAJCSAgICAgICYmIFhJTlQgKFhDQVIgKFhDRFIgKFhD RFIgKFhDRFIgKGNkcikpKSkpIDwgMCkKLQkJICAgIEVNQUNTX1NFVF9TRUNTX05TRUNTCi0J CSAgICAgIChtb2RfdGltZSwgMCwKLQkJICAgICAgIFhJTlQgKFhDQVIgKFhDRFIgKFhDRFIg KFhDRFIgKGNkcikpKSkpIC8gMTAwMCk7CisJCSAgICBtb2RfdGltZSA9CisJCSAgICAgICht YWtlX2VtYWNzX3RpbWUKKwkJICAgICAgICgwLCBYSU5UIChYQ0FSIChYQ0RSIChYQ0RSIChY Q0RSIChjZHIpKSkpKSAvIDEwMDApKTsKIAkJICBlbHNlCiAJCSAgICBtb2RfdGltZSA9IGxp c3BfdGltZV9hcmd1bWVudCAoY2RyKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93MzIu YycKLS0tIHNyYy93MzIuYwkyMDEyLTA3LTA1IDA2OjMyOjQxICswMDAwCisrKyBzcmMvdzMy LmMJMjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtMTk2OSw3ICsxOTY5LDcgQEAKICAg ICAgY2hhbmdlZC4gIFdlIGNvdWxkIGZpeCB0aGF0IGJ5IHVzaW5nIEdldFN5c3RlbVRpbWUg YW5kCiAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24sIGJ1dCB0aGF0IGRvZXNuJ3Qgc2Vl bSBuZWNlc3NhcnksIHNpbmNlCiAgICAgIEVtYWNzIGFsd2F5cyBjYWxscyBnZXR0aW1lb2Zk YXkgd2l0aCB0aGUgMm5kIGFyZ3VtZW50IE5VTEwgKHNlZQotICAgICBFTUFDU19HRVRfVElN RSkuICAqLworICAgICBjdXJyZW50X2VtYWNzX3RpbWUpLiAgKi8KICAgaWYgKHR6KQogICAg IHsKICAgICAgIHR6LT50el9taW51dGVzd2VzdCA9IHRiLnRpbWV6b25lOwkvKiBtaW51dGVz IHdlc3Qgb2YgR3JlZW53aWNoICAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy94ZGlzcC5j JwotLS0gc3JjL3hkaXNwLmMJMjAxMi0wNy0wNyAxNjozNjowMiArMDAwMAorKysgc3JjL3hk aXNwLmMJMjAxMi0wNy0wNyAyMDowNDowMiArMDAwMApAQCAtMjkyNDIsMTQgKzI5MjQyLDE0 IEBACiAKICAgaWYgKElOVEVHRVJQIChWaG91cmdsYXNzX2RlbGF5KQogICAgICAgJiYgWElO VCAoVmhvdXJnbGFzc19kZWxheSkgPiAwKQotICAgIEVNQUNTX1NFVF9TRUNTX05TRUNTIChk ZWxheSwKLQkJCSAgbWluIChYSU5UIChWaG91cmdsYXNzX2RlbGF5KSwgVFlQRV9NQVhJTVVN ICh0aW1lX3QpKSwKLQkJCSAgMCk7CisgICAgZGVsYXkgPSBtYWtlX2VtYWNzX3RpbWUgKG1p biAoWElOVCAoVmhvdXJnbGFzc19kZWxheSksCisJCQkJICBUWVBFX01BWElNVU0gKHRpbWVf dCkpLAorCQkJICAgICAwKTsKICAgZWxzZSBpZiAoRkxPQVRQIChWaG91cmdsYXNzX2RlbGF5 KQogCSAgICYmIFhGTE9BVF9EQVRBIChWaG91cmdsYXNzX2RlbGF5KSA+IDApCiAgICAgZGVs YXkgPSBFTUFDU19USU1FX0ZST01fRE9VQkxFIChYRkxPQVRfREFUQSAoVmhvdXJnbGFzc19k ZWxheSkpOwogICBlbHNlCi0gICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKGRlbGF5LCBERUZB VUxUX0hPVVJHTEFTU19ERUxBWSwgMCk7CisgICAgZGVsYXkgPSBtYWtlX2VtYWNzX3RpbWUg KERFRkFVTFRfSE9VUkdMQVNTX0RFTEFZLCAwKTsKIAogICBob3VyZ2xhc3NfYXRpbWVyID0g c3RhcnRfYXRpbWVyIChBVElNRVJfUkVMQVRJVkUsIGRlbGF5LAogCQkJCSAgIHNob3dfaG91 cmdsYXNzLCBOVUxMKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMveGdzZWxlY3QuYycKLS0t IHNyYy94Z3NlbGVjdC5jCTIwMTItMDctMDUgMTg6MzU6NDggKzAwMDAKKysrIHNyYy94Z3Nl bGVjdC5jCTIwMTItMDctMDcgMDQ6NTM6MzggKzAwMDAKQEAgLTg4LDggKzg4LDggQEAKIAog ICBpZiAodG1vX2luX21pbGxpc2VjID49IDApCiAgICAgewotICAgICAgRU1BQ1NfU0VUX1NF Q1NfVVNFQ1MgKHRtbywgdG1vX2luX21pbGxpc2VjLzEwMDAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTAwMCAqICh0bW9faW5fbWlsbGlzZWMgJSAxMDAwKSk7CisgICAgICB0 bW8gPSBtYWtlX2VtYWNzX3RpbWUgKHRtb19pbl9taWxsaXNlYyAvIDEwMDAsCisJCQkgICAg IDEwMDAgKiAxMDAwICogKHRtb19pbl9taWxsaXNlYyAlIDEwMDApKTsKICAgICAgIGlmICgh dGltZW91dCB8fCBFTUFDU19USU1FX0xUICh0bW8sICp0aW1lb3V0KSkKIAl0bW9wID0gJnRt bzsKICAgICB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3h0ZXJtLmMnCi0tLSBzcmMveHRl cm0uYwkyMDEyLTA3LTA1IDE4OjM1OjQ4ICswMDAwCisrKyBzcmMveHRlcm0uYwkyMDEyLTA3 LTA3IDA0OjUzOjM4ICswMDAwCkBAIC0zMTY4LDI2ICszMTY4LDIyIEBACiAgICAgICB4X2Zs dXNoIChmKTsKIAogICAgICAgewotCUVNQUNTX1RJTUUgd2FrZXVwLCBkZWxheTsKLQotCUVN QUNTX0dFVF9USU1FICh3YWtldXApOwotCUVNQUNTX1NFVF9TRUNTX05TRUNTIChkZWxheSwg MCwgMTUwICogMTAwMCAqIDEwMDApOwotCUVNQUNTX0FERF9USU1FICh3YWtldXAsIHdha2V1 cCwgZGVsYXkpOworCUVNQUNTX1RJTUUgZGVsYXkgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIDE1 MCAqIDEwMDAgKiAxMDAwKTsKKwlFTUFDU19USU1FIHdha2V1cCA9IGFkZF9lbWFjc190aW1l IChjdXJyZW50X2VtYWNzX3RpbWUgKCksIGRlbGF5KTsKIAogCS8qIEtlZXAgd2FpdGluZyB1 bnRpbCBwYXN0IHRoZSB0aW1lIHdha2V1cCBvciBhbnkgaW5wdXQgZ2V0cwogCSAgIGF2YWls YWJsZS4gICovCiAJd2hpbGUgKCEgZGV0ZWN0X2lucHV0X3BlbmRpbmcgKCkpCiAJICB7Ci0J ICAgIEVNQUNTX1RJTUUgY3VycmVudCwgdGltZW91dDsKLQotCSAgICBFTUFDU19HRVRfVElN RSAoY3VycmVudCk7CisJICAgIEVNQUNTX1RJTUUgY3VycmVudCA9IGN1cnJlbnRfZW1hY3Nf dGltZSAoKTsKKwkgICAgRU1BQ1NfVElNRSB0aW1lb3V0OwogCiAJICAgIC8qIEJyZWFrIGlm IHJlc3VsdCB3b3VsZCBub3QgYmUgcG9zaXRpdmUuICAqLwogCSAgICBpZiAoRU1BQ1NfVElN RV9MRSAod2FrZXVwLCBjdXJyZW50KSkKIAkgICAgICBicmVhazsKIAogCSAgICAvKiBIb3cg bG9uZyBgc2VsZWN0JyBzaG91bGQgd2FpdC4gICovCi0JICAgIEVNQUNTX1NFVF9TRUNTX05T RUNTICh0aW1lb3V0LCAwLCAxMCAqIDEwMDAgKiAxMDAwKTsKKwkgICAgdGltZW91dCA9IG1h a2VfZW1hY3NfdGltZSAoMCwgMTAgKiAxMDAwICogMTAwMCk7CiAKIAkgICAgLyogVHJ5IHRv IHdhaXQgdGhhdCBsb25nLS1idXQgd2UgbWlnaHQgd2FrZSB1cCBzb29uZXIuICAqLwogCSAg ICBwc2VsZWN0ICgwLCBOVUxMLCBOVUxMLCBOVUxMLCAmdGltZW91dCwgTlVMTCk7CkBAIC04 ODEwLDkgKzg4MDYsOCBAQAogCiAgIC8qIFNldCB0aW1lb3V0IHRvIDAuMSBzZWNvbmQuICBI b3BlZnVsbHkgbm90IG5vdGljZWFibGUuCiAgICAgIE1heWJlIGl0IHNob3VsZCBiZSBjb25m aWd1cmFibGUuICAqLwotICBFTUFDU19TRVRfU0VDU19VU0VDUyAodG1vLCAwLCAxMDAwMDAp OwotICBFTUFDU19HRVRfVElNRSAodG1vX2F0KTsKLSAgRU1BQ1NfQUREX1RJTUUgKHRtb19h dCwgdG1vX2F0LCB0bW8pOworICB0bW8gPSBtYWtlX2VtYWNzX3RpbWUgKDAsIDEwMCAqIDEw MDAgKiAxMDAwKTsKKyAgdG1vX2F0ID0gYWRkX2VtYWNzX3RpbWUgKGN1cnJlbnRfZW1hY3Nf dGltZSAoKSwgdG1vKTsKIAogICB3aGlsZSAocGVuZGluZ19ldmVudF93YWl0LmV2ZW50dHlw ZSkKICAgICB7CkBAIC04ODI1LDExICs4ODIwLDExIEBACiAgICAgICBGRF9aRVJPICgmZmRz KTsKICAgICAgIEZEX1NFVCAoZmQsICZmZHMpOwogCi0gICAgICBFTUFDU19HRVRfVElNRSAo dGltZV9ub3cpOworICAgICAgdGltZV9ub3cgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CiAg ICAgICBpZiAoRU1BQ1NfVElNRV9MVCAodG1vX2F0LCB0aW1lX25vdykpCiAJYnJlYWs7CiAK LSAgICAgIEVNQUNTX1NVQl9USU1FICh0bW8sIHRtb19hdCwgdGltZV9ub3cpOworICAgICAg dG1vID0gc3ViX2VtYWNzX3RpbWUgKHRtb19hdCwgdGltZV9ub3cpOwogICAgICAgaWYgKHBz ZWxlY3QgKGZkICsgMSwgJmZkcywgTlVMTCwgTlVMTCwgJnRtbywgTlVMTCkgPT0gMCkKICAg ICAgICAgYnJlYWs7IC8qIFRpbWVvdXQgKi8KICAgICB9CkBAIC0xMDYwMiw5ICsxMDU5Nyw3 IEBACiAgIEJMT0NLX0lOUFVUOwogICBpZiAoIXhfdGltZW91dF9hdGltZXJfYWN0aXZhdGVk X2ZsYWcpCiAgICAgewotICAgICAgRU1BQ1NfVElNRSBpbnRlcnZhbDsKLQotICAgICAgRU1B Q1NfU0VUX1NFQ1NfVVNFQ1MgKGludGVydmFsLCAwLCAxMDAwMDApOworICAgICAgRU1BQ1Nf VElNRSBpbnRlcnZhbCA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMTAwICogMTAwMCAqIDEwMDAp OwogICAgICAgc3RhcnRfYXRpbWVyIChBVElNRVJfUkVMQVRJVkUsIGludGVydmFsLCB4X3By b2Nlc3NfdGltZW91dHMsIDApOwogICAgICAgeF90aW1lb3V0X2F0aW1lcl9hY3RpdmF0ZWRf ZmxhZyA9IDE7CiAgICAgfQo= --------------000705060609090203090308-- From unknown Fri Sep 05 11:50:18 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.428 (Entity 5.428) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Paul Eggert Subject: bug#11875: closed (EMACS_TIME simplification) Message-ID: References: <4FFCBA6E.7030402@cs.ucla.edu> <4FF89F06.3030904@cs.ucla.edu> X-Gnu-PR-Message: they-closed 11875 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 11875@debbugs.gnu.org Date: Tue, 10 Jul 2012 23:34:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1341963242-17224-1" This is a multi-part message in MIME format... ------------=_1341963242-17224-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #11875: EMACS_TIME simplification which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 11875@debbugs.gnu.org. --=20 11875: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D11875 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1341963242-17224-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 11875-done) by debbugs.gnu.org; 10 Jul 2012 23:33:09 +0000 Received: from localhost ([127.0.0.1]:60917 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SojvZ-0004Sk-5f for submit@debbugs.gnu.org; Tue, 10 Jul 2012 19:33:09 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:51161) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SojvW-0004Sa-0y for 11875-done@debbugs.gnu.org; Tue, 10 Jul 2012 19:33:06 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 36125A60001 for <11875-done@debbugs.gnu.org>; Tue, 10 Jul 2012 16:27:42 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ItoqIGvEBMhi for <11875-done@debbugs.gnu.org>; Tue, 10 Jul 2012 16:27:41 -0700 (PDT) Received: from [192.168.1.4] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D7EA039E8007 for <11875-done@debbugs.gnu.org>; Tue, 10 Jul 2012 16:27:41 -0700 (PDT) Message-ID: <4FFCBA6E.7030402@cs.ucla.edu> Date: Tue, 10 Jul 2012 16:27:42 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 To: 11875-done@debbugs.gnu.org Subject: EMACS_TIME simplification Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 11875-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) I pushed that patch, along with one change to src/makefile.w32-in privately noted to me by Juanma Barranquero, and am marking this bug as done. ------------=_1341963242-17224-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 7 Jul 2012 20:47:13 +0000 Received: from localhost ([127.0.0.1]:55216 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SnbuI-0005Zu-QO for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:47:13 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42064) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SnbuC-0005Zh-D9 for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:47:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SnbpC-000189-Tt for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:41:58 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:58023) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SnbpC-000185-Q9 for submit@debbugs.gnu.org; Sat, 07 Jul 2012 16:41:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47678) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Snbp8-00081k-32 for bug-gnu-emacs@gnu.org; Sat, 07 Jul 2012 16:41:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Snbp3-00016o-5M for bug-gnu-emacs@gnu.org; Sat, 07 Jul 2012 16:41:49 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:53994) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Snbp2-00016f-I1 for bug-gnu-emacs@gnu.org; Sat, 07 Jul 2012 16:41:45 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 1F415A60003 for ; Sat, 7 Jul 2012 13:41:43 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Nt-lIgGEH0Ul for ; Sat, 7 Jul 2012 13:41:41 -0700 (PDT) Received: from [192.168.1.4] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 445FFA60001 for ; Sat, 7 Jul 2012 13:41:41 -0700 (PDT) Message-ID: <4FF89F06.3030904@cs.ucla.edu> Date: Sat, 07 Jul 2012 13:41:42 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: EMACS_TIME simplification Content-Type: multipart/mixed; boundary="------------000705060609090203090308" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) This is a multi-part message in MIME format. --------------000705060609090203090308 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch Attached is a patch to the Emacs trunk bzr 108944 that simplifies EMACS_TIME calculation. It replaces macros (which typically do not work with GDB) with functions, typedefs, and enums, making time-related code easier to debug. The functional style also makes the source code easier to read and maintain. I would have appreciated having this in my recent round of changes to the time code. I plan to install this after a bit more testing but thought I'd post it for review first. --------------000705060609090203090308 Content-Type: text/plain; charset=UTF-8; name="timefun.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="timefun.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1zcmMvQ2hhbmdlTG9nJwotLS0gbGliLXNyYy9DaGFu Z2VMb2cJMjAxMi0wNy0wNyAwMDoyMDo1NiArMDAwMAorKysgbGliLXNyYy9DaGFuZ2VMb2cJ MjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtMSwzICsxLDggQEAKKzIwMTItMDctMDcg IFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJRU1BQ1NfVElNRSBzaW1w bGlmaWNhdGlvbi4KKwkqIHByb2ZpbGUuYyAoVFYyKTogUmVtb3ZlIG5vLWxvbmdlci1uZWVk ZWQgc3RhdGljIHZhci4KKwogMjAxMi0wNy0wNyAgSnVhbm1hIEJhcnJhbnF1ZXJvICA8bGVr a3R1QGdtYWlsLmNvbT4KIAogCSogbWFrZWZpbGUudzMyLWluICgkKEJMRCkvY3RhZ3MuJChP KSwgJChCTEQpL2V0YWdzLiQoTykpOgoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1zcmMvcHJv ZmlsZS5jJwotLS0gbGliLXNyYy9wcm9maWxlLmMJMjAxMi0wNi0zMCAxNTozMjo1MSArMDAw MAorKysgbGliLXNyYy9wcm9maWxlLmMJMjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAt MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPGludHByb3BzLmg+CiAjaW5jbHVkZSA8c3lzdGlt ZS5oPgogCi1zdGF0aWMgRU1BQ1NfVElNRSBUVjEsIFRWMjsKK3N0YXRpYyBFTUFDU19USU1F IFRWMTsKIHN0YXRpYyBpbnQgd2F0Y2hfbm90X3N0YXJ0ZWQgPSAxOyAvKiBmbGFnICovCiBz dGF0aWMgY2hhciB0aW1lX3N0cmluZ1tJTlRfU1RSTEVOX0JPVU5EICh1aW50bWF4X3QpICsg c2l6ZW9mICIuIgogCQkJKyBMT0cxMF9FTUFDU19USU1FX1JFU09MVVRJT05dOwpAQCAtNDYs NyArNDYsNyBAQAogc3RhdGljIHZvaWQKIHJlc2V0X3dhdGNoICh2b2lkKQogewotICBFTUFD U19HRVRfVElNRSAoVFYxKTsKKyAgVFYxID0gY3VycmVudF9lbWFjc190aW1lICgpOwogICB3 YXRjaF9ub3Rfc3RhcnRlZCA9IDA7CiB9CiAKQEAgLTU3LDE0ICs1NywxMSBAQAogc3RhdGlj IGNoYXIgKgogZ2V0X3RpbWUgKHZvaWQpCiB7Ci0gIHVpbnRtYXhfdCBzOwotICBpbnQgbnM7 CisgIEVNQUNTX1RJTUUgVFYyID0gc3ViX2VtYWNzX3RpbWUgKGN1cnJlbnRfZW1hY3NfdGlt ZSAoKSwgVFYxKTsKKyAgdWludG1heF90IHMgPSBFTUFDU19TRUNTIChUVjIpOworICBpbnQg bnMgPSBFTUFDU19OU0VDUyAoVFYyKTsKICAgaWYgKHdhdGNoX25vdF9zdGFydGVkKQogICAg IGV4aXQgKEVYSVRfRkFJTFVSRSk7ICAvKiBjYWxsIHJlc2V0X3dhdGNoIGZpcnN0ICEgKi8K LSAgRU1BQ1NfR0VUX1RJTUUgKFRWMik7Ci0gIEVNQUNTX1NVQl9USU1FIChUVjIsIFRWMiwg VFYxKTsKLSAgcyA9IEVNQUNTX1NFQ1MgKFRWMik7Ci0gIG5zID0gRU1BQ1NfTlNFQ1MgKFRW Mik7CiAgIHNwcmludGYgKHRpbWVfc3RyaW5nLCAiJSJQUkl1TUFYIi4lMCpkIiwgcywgTE9H MTBfRU1BQ1NfVElNRV9SRVNPTFVUSU9OLCBucyk7CiAgIHJldHVybiB0aW1lX3N0cmluZzsK IH0KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxv ZwkyMDEyLTA3LTA3IDE5OjMzOjI4ICswMDAwCisrKyBzcmMvQ2hhbmdlTG9nCTIwMTItMDct MDcgMjA6MDQ6MDIgKzAwMDAKQEAgLTEsNSArMSwzMSBAQAogMjAxMi0wNy0wNyAgUGF1bCBF Z2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKKwlFTUFDU19USU1FIHNpbXBsaWZpY2F0 aW9uLgorCVRoaXMgcmVwbGFjZXMgbWFjcm9zICh3aGljaCB0eXBpY2FsbHkgZG8gbm90IHdv cmsgaW4gR0RCKQorCXdpdGggZnVuY3Rpb25zLCB0eXBlZGVmcyBhbmQgZW51bXMsIG1ha2lu ZyB0aGUgY29kZSBlYXNpZXIgdG8gZGVidWcuCisJVGhlIGZ1bmN0aW9uYWwgc3R5bGUgYWxz byBtYWtlcyBjb2RlIGVhc2llciB0byByZWFkIGFuZCBtYWludGFpbi4KKwkqIHN5c3RpbWUu aDogSW5jbHVkZSA8c3lzL3RpbWUuaD4gb24gYWxsIGhvc3RzLCBub3QganVzdCBpZgorCVdJ TkRPV1NOVCwgc2luY2UgJ3N0cnVjdCB0aW1ldmFsJyBpcyBuZWVkZWQgaW4gZ2VuZXJhbC4K KwkoRU1BQ1NfVElNRSk6IE5vdyBhIHR5cGVkZWYsIG5vdCBhIG1hY3JvLgorCShFTUFDU19U SU1FX1JFU09MVVRJT04sIExPRzEwX0VNQUNTX1RJTUVfUkVTT0xVVElPTik6IE5vdyBjb25z dGFudHMsCisJbm90IG1hY3Jvcy4KKwkoRU1BQ1NfU0VDUywgRU1BQ1NfTlNFQ1MsIEVNQUNT X1RJTUVfU0lHTiwgRU1BQ1NfVElNRV9WQUxJRF9QKQorCShFTUFDU19USU1FX0ZST01fRE9V QkxFLCBFTUFDU19USU1FX1RPX0RPVUJMRSwgRU1BQ1NfVElNRV9FUSkKKwkoRU1BQ1NfVElN RV9ORSwgRU1BQ1NfVElNRV9HVCwgRU1BQ1NfVElNRV9HRSwgRU1BQ1NfVElNRV9MVCkKKwko RU1BQ1NfVElNRV9MRSk6IE5vdyBmdW5jdGlvbnMsIG5vdCBtYWNyb3MuCisJKEVNQUNTX1NF VF9TRUNTLCBFTUFDU19TRVRfTlNFQ1MsIEVNQUNTX1NFVF9TRUNTX05TRUNTKQorCShFTUFD U19TRVRfVVNFQ1MsIEVNQUNTX1NFVF9TRUNTX1VTRUNTKTogUmVtb3ZlIHRoZXNlIG1hY3Jv cywKKwl3aGljaCBhcmUgbm90IGZ1bmN0aW9ucy4gIEFsbCB1c2VzIHJld3JpdHRlbiB0byB1 c2U6CisJKG1ha2VfZW1hY3NfdGltZSk6IE5ldyBmdW5jdGlvbi4KKwkoRU1BQ1NfU0VDU19B RERSLCBFTUFDU19TRVRfSU5WQUxJRF9USU1FLCBFTUFDU19HRVRfVElNRSkKKwkoRU1BQ1Nf QUREX1RJTUUsIEVNQUNTX1NVQl9USU1FKTogUmVtb3ZlIHRoZXNlIG1hY3Jvcywgd2hpY2gg YXJlCisJbm90IGZ1bmN0aW9ucy4gIEFsbCB1c2VzIHJld3JpdHRlbiB0byB1c2UgdGhlIGZv bGxvd2luZywgcmVzcGVjdGl2ZWx5OgorCShlbWFjc19zZWNzX2FkZHIsIGludmFsaWRfZW1h Y3NfdGltZSwgZ2V0X2VtYWNzX3RpbWUpCisJKGFkZF9lbWFjc190aW1lLCBzdWJfZW1hY3Nf dGltZSk6IE5ldyBmdW5jdGlvbnMuCisJKiBhdGltZXIuYzogRG9uJ3QgaW5jbHVkZSA8c3lz L3RpbWUuaD4sCWFzICJzeXN0aW1lLmgiIGRvZXMgdGhpcy4KKwkqIGZpbGVpby5jIChGY29w eV9maWxlKToKKwkqIHh0ZXJtLmMgKFhUZmxhc2gpOiBHZXQgdGhlIGN1cnJlbnQgdGltZSBj bG9zZXIgdG8gd2hlbiBpdCdzIHVzZWQuCisKIAkqIGxyZWFkLmMgKGxvYWRfcGF0aF9jaGVj ayk6IE5vdyBzdGF0aWMuCiAKIAlGaXggc29tZSBtaW5vciAtLXdpdGgtbnMgcHJvYmxlbXMg Zm91bmQgYnkgc3RhdGljIGNoZWNraW5nLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxv Yy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0wNy0wNiAwNTowNzo0NCArMDAwMAorKysgc3Jj L2FsbG9jLmMJMjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtNTM4MCw3ICs1MzgwLDcg QEAKICAgaW50IG1lc3NhZ2VfcDsKICAgTGlzcF9PYmplY3QgdG90YWxbOF07CiAgIHB0cmRp ZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Ci0gIEVNQUNTX1RJTUUgdDEsIHQyLCB0 MzsKKyAgRU1BQ1NfVElNRSB0MTsKIAogICBpZiAoYWJvcnRfb25fZ2MpCiAgICAgYWJvcnQg KCk7CkBAIC01NDI5LDcgKzU0MjksNyBAQAogICAgICAgfQogICB9CiAKLSAgRU1BQ1NfR0VU X1RJTUUgKHQxKTsKKyAgdDEgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CiAKICAgLyogSW4g Y2FzZSB1c2VyIGNhbGxzIGRlYnVnX3ByaW50IGR1cmluZyBHQywKICAgICAgZG9uJ3QgbGV0 IHRoYXQgY2F1c2UgYSByZWN1cnNpdmUgR0MuICAqLwpAQCAtNTY4Myw4ICs1NjgzLDggQEAK ICAgLyogQWNjdW11bGF0ZSBzdGF0aXN0aWNzLiAgKi8KICAgaWYgKEZMT0FUUCAoVmdjX2Vs YXBzZWQpKQogICAgIHsKLSAgICAgIEVNQUNTX0dFVF9USU1FICh0Mik7Ci0gICAgICBFTUFD U19TVUJfVElNRSAodDMsIHQyLCB0MSk7CisgICAgICBFTUFDU19USU1FIHQyID0gY3VycmVu dF9lbWFjc190aW1lICgpOworICAgICAgRU1BQ1NfVElNRSB0MyA9IHN1Yl9lbWFjc190aW1l ICh0MiwgdDEpOwogICAgICAgVmdjX2VsYXBzZWQgPSBtYWtlX2Zsb2F0IChYRkxPQVRfREFU QSAoVmdjX2VsYXBzZWQpCiAJCQkJKyBFTUFDU19USU1FX1RPX0RPVUJMRSAodDMpKTsKICAg ICB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2F0aW1lci5jJwotLS0gc3JjL2F0aW1lci5j CTIwMTItMDctMDUgMDY6MzI6NDEgKzAwMDAKKysrIHNyYy9hdGltZXIuYwkyMDEyLTA3LTA3 IDA0OjUzOjM4ICswMDAwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiYmxvY2tpbnB1 dC5oIgogI2luY2x1ZGUgImF0aW1lci5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1 ZGUgPHN5cy90aW1lLmg+CiAKIC8qIEZyZWUtbGlzdCBvZiBhdGltZXIgc3RydWN0dXJlcy4g ICovCiAKQEAgLTkzLDEwICs5Miw3IEBACiAjaWZuZGVmIEhBVkVfU0VUSVRJTUVSCiAgIGlm IChFTUFDU19OU0VDUyAodGltZXN0YW1wKSAhPSAwCiAgICAgICAmJiBFTUFDU19TRUNTICh0 aW1lc3RhbXApIDwgVFlQRV9NQVhJTVVNICh0aW1lX3QpKQotICAgIHsKLSAgICAgIEVNQUNT X1NFVF9VU0VDUyAodGltZXN0YW1wLCAwKTsKLSAgICAgIEVNQUNTX1NFVF9TRUNTICh0aW1l c3RhbXAsIEVNQUNTX1NFQ1MgKHRpbWVzdGFtcCkgKyAxKTsKLSAgICB9CisgICAgdGltZXN0 YW1wID0gbWFrZV9lbWFjc190aW1lIChFTUFDU19TRUNTICh0aW1lc3RhbXApICsgMSwgMCk7 CiAjZW5kaWYgLyogbm90IEhBVkVfU0VUSVRJTUVSICovCiAKICAgLyogR2V0IGFuIGF0aW1l ciBzdHJ1Y3R1cmUgZnJvbSB0aGUgZnJlZS1saXN0LCBvciBhbGxvY2F0ZQpAQCAtMTI1LDEz ICsxMjEsMTEgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBVElNRVJfUkVMQVRJVkU6 Ci0gICAgICBFTUFDU19HRVRfVElNRSAodC0+ZXhwaXJhdGlvbik7Ci0gICAgICBFTUFDU19B RERfVElNRSAodC0+ZXhwaXJhdGlvbiwgdC0+ZXhwaXJhdGlvbiwgdGltZXN0YW1wKTsKKyAg ICAgIHQtPmV4cGlyYXRpb24gPSBhZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1l ICgpLCB0aW1lc3RhbXApOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFUSU1FUl9DT05U SU5VT1VTOgotICAgICAgRU1BQ1NfR0VUX1RJTUUgKHQtPmV4cGlyYXRpb24pOwotICAgICAg RU1BQ1NfQUREX1RJTUUgKHQtPmV4cGlyYXRpb24sIHQtPmV4cGlyYXRpb24sIHRpbWVzdGFt cCk7CisgICAgICB0LT5leHBpcmF0aW9uID0gYWRkX2VtYWNzX3RpbWUgKGN1cnJlbnRfZW1h Y3NfdGltZSAoKSwgdGltZXN0YW1wKTsKICAgICAgIHQtPmludGVydmFsID0gdGltZXN0YW1w OwogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg1LDMxICsyNzksMjUgQEAKIHsKICAgaWYg KGF0aW1lcnMpCiAgICAgewotICAgICAgRU1BQ1NfVElNRSBub3csIHRpbWVzdGFtcDsKICNp ZmRlZiBIQVZFX1NFVElUSU1FUgogICAgICAgc3RydWN0IGl0aW1lcnZhbCBpdDsKICNlbmRp ZgogCiAgICAgICAvKiBEZXRlcm1pbmUgcy91cyB0aWxsIHRoZSBuZXh0IHRpbWVyIGlzIHJp cGUuICAqLwotICAgICAgRU1BQ1NfR0VUX1RJTUUgKG5vdyk7CisgICAgICBFTUFDU19USU1F IG5vdyA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKIAogICAgICAgLyogRG9uJ3Qgc2V0IHRo ZSBpbnRlcnZhbCB0byAwOyB0aGlzIGRpc2FibGVzIHRoZSB0aW1lci4gICovCi0gICAgICBp ZiAoRU1BQ1NfVElNRV9MRSAoYXRpbWVycy0+ZXhwaXJhdGlvbiwgbm93KSkKLQl7Ci0JICBF TUFDU19TRVRfU0VDUyAodGltZXN0YW1wLCAwKTsKLQkgIEVNQUNTX1NFVF9VU0VDUyAodGlt ZXN0YW1wLCAxMDAwKTsKLQl9Ci0gICAgICBlbHNlCi0JRU1BQ1NfU1VCX1RJTUUgKHRpbWVz dGFtcCwgYXRpbWVycy0+ZXhwaXJhdGlvbiwgbm93KTsKLQorICAgICAgRU1BQ1NfVElNRSBp bnRlcnZhbCA9IChFTUFDU19USU1FX0xFIChhdGltZXJzLT5leHBpcmF0aW9uLCBub3cpCisJ CQkgICAgID8gbWFrZV9lbWFjc190aW1lICgwLCAxMDAwICogMTAwMCkKKwkJCSAgICAgOiBz dWJfZW1hY3NfdGltZSAoYXRpbWVycy0+ZXhwaXJhdGlvbiwgbm93KSk7CiAKICNpZmRlZiBI QVZFX1NFVElUSU1FUgogCiAgICAgICBtZW1zZXQgKCZpdCwgMCwgc2l6ZW9mIGl0KTsKLSAg ICAgIGl0Lml0X3ZhbHVlID0gbWFrZV90aW1ldmFsICh0aW1lc3RhbXApOworICAgICAgaXQu aXRfdmFsdWUgPSBtYWtlX3RpbWV2YWwgKGludGVydmFsKTsKICAgICAgIHNldGl0aW1lciAo SVRJTUVSX1JFQUwsICZpdCwgMCk7CiAjZWxzZSAvKiBub3QgSEFWRV9TRVRJVElNRVIgKi8K LSAgICAgIGFsYXJtIChtYXggKEVNQUNTX1NFQ1MgKHRpbWVzdGFtcCksIDEpKTsKKyAgICAg IGFsYXJtIChtYXggKEVNQUNTX1NFQ1MgKGludGVydmFsKSwgMSkpOwogI2VuZGlmIC8qIG5v dCBIQVZFX1NFVElUSU1FUiAqLwogICAgIH0KIH0KQEAgLTM0NCw3ICszMzIsNyBAQAogCiAg IHdoaWxlIChhdGltZXJzCiAJICYmIChwZW5kaW5nX2F0aW1lcnMgPSBpbnRlcnJ1cHRfaW5w dXRfYmxvY2tlZCkgPT0gMAotCSAmJiAoRU1BQ1NfR0VUX1RJTUUgKG5vdyksCisJICYmIChu b3cgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCksCiAJICAgICBFTUFDU19USU1FX0xFIChhdGlt ZXJzLT5leHBpcmF0aW9uLCBub3cpKSkKICAgICB7CiAgICAgICBzdHJ1Y3QgYXRpbWVyICp0 OwpAQCAtMzU1LDcgKzM0Myw3IEBACiAKICAgICAgIGlmICh0LT50eXBlID09IEFUSU1FUl9D T05USU5VT1VTKQogCXsKLQkgIEVNQUNTX0FERF9USU1FICh0LT5leHBpcmF0aW9uLCBub3cs IHQtPmludGVydmFsKTsKKwkgIHQtPmV4cGlyYXRpb24gPSBhZGRfZW1hY3NfdGltZSAobm93 LCB0LT5pbnRlcnZhbCk7CiAJICBzY2hlZHVsZV9hdGltZXIgKHQpOwogCX0KICAgICAgIGVs c2UKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYnVmZmVyLmMnCi0tLSBzcmMvYnVmZmVyLmMJ MjAxMi0wNy0wNiAwNzozNDozNyArMDAwMAorKysgc3JjL2J1ZmZlci5jCTIwMTItMDctMDcg MDQ6NTM6MzggKzAwMDAKQEAgLTcwNSw3ICs3MDUsNyBAQAogICBCVkFSIChiLCBmaWxlbmFt ZSkgPSBRbmlsOwogICBCVkFSIChiLCBmaWxlX3RydWVuYW1lKSA9IFFuaWw7CiAgIEJWQVIg KGIsIGRpcmVjdG9yeSkgPSAoY3VycmVudF9idWZmZXIpID8gQlZBUiAoY3VycmVudF9idWZm ZXIsIGRpcmVjdG9yeSkgOiBRbmlsOwotICBFTUFDU19TRVRfU0VDU19OU0VDUyAoYi0+bW9k dGltZSwgMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKKyAgYi0+bW9kdGltZSA9IG1ha2Vf ZW1hY3NfdGltZSAoMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKICAgYi0+bW9kdGltZV9z aXplID0gLTE7CiAgIFhTRVRGQVNUSU5UIChCVkFSIChiLCBzYXZlX2xlbmd0aCksIDApOwog ICBiLT5sYXN0X3dpbmRvd19zdGFydCA9IDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Rp c3BuZXcuYycKLS0tIHNyYy9kaXNwbmV3LmMJMjAxMi0wNy0wNSAxODozNTo0OCArMDAwMAor Kysgc3JjL2Rpc3BuZXcuYwkyMDEyLTA3LTA3IDIwOjAwOjA0ICswMDAwCkBAIC0zMTkwLDcg KzMxOTAsNiBAQAogICAgIGZvcmNlX3AgPSAxOwogICBlbHNlIGlmICghZm9yY2VfcCAmJiBO VU1CRVJQIChWcmVkaXNwbGF5X3ByZWVtcHRpb25fcGVyaW9kKSkKICAgICB7Ci0gICAgICBF TUFDU19USU1FIHRtOwogICAgICAgZG91YmxlIHAgPSBYRkxPQVRJTlQgKFZyZWRpc3BsYXlf cHJlZW1wdGlvbl9wZXJpb2QpOwogCiAgICAgICBpZiAoZGV0ZWN0X2lucHV0X3BlbmRpbmdf aWdub3JlX3NxdWVlemFibGVzICgpKQpAQCAtMzE5OSw5ICszMTk4LDkgQEAKIAkgIGdvdG8g ZG9fcGF1c2U7CiAJfQogCi0gICAgICBFTUFDU19HRVRfVElNRSAodG0pOwogICAgICAgcHJl ZW1wdGlvbl9wZXJpb2QgPSBFTUFDU19USU1FX0ZST01fRE9VQkxFIChwKTsKLSAgICAgIEVN QUNTX0FERF9USU1FIChwcmVlbXB0aW9uX25leHRfY2hlY2ssIHRtLCBwcmVlbXB0aW9uX3Bl cmlvZCk7CisgICAgICBwcmVlbXB0aW9uX25leHRfY2hlY2sgPSBhZGRfZW1hY3NfdGltZSAo Y3VycmVudF9lbWFjc190aW1lICgpLAorCQkJCQkgICAgICBwcmVlbXB0aW9uX3BlcmlvZCk7 CiAgICAgfQogCiAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikpCkBAIC0zMzQzLDEyICszMzQy LDEwIEBACiAJZm9yY2VfcCA9IDE7CiAgICAgICBlbHNlIGlmICghZm9yY2VfcCAmJiBOVU1C RVJQIChWcmVkaXNwbGF5X3ByZWVtcHRpb25fcGVyaW9kKSkKIAl7Ci0JICBFTUFDU19USU1F IHRtOwogCSAgZG91YmxlIHAgPSBYRkxPQVRJTlQgKFZyZWRpc3BsYXlfcHJlZW1wdGlvbl9w ZXJpb2QpOwotCi0JICBFTUFDU19HRVRfVElNRSAodG0pOwogCSAgcHJlZW1wdGlvbl9wZXJp b2QgPSBFTUFDU19USU1FX0ZST01fRE9VQkxFIChwKTsKLQkgIEVNQUNTX0FERF9USU1FIChw cmVlbXB0aW9uX25leHRfY2hlY2ssIHRtLCBwcmVlbXB0aW9uX3BlcmlvZCk7CisJICBwcmVl bXB0aW9uX25leHRfY2hlY2sgPSBhZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1l ICgpLAorCQkJCQkJICBwcmVlbXB0aW9uX3BlcmlvZCk7CiAJfQogCiAgICAgICAvKiBVcGRh dGUgVy4gICovCkBAIC0zNTk1LDExICszNTkyLDExIEBACiAjaWYgUEVSSU9ESUNfUFJFRU1Q VElPTl9DSEVDS0lORwogCSAgICBpZiAoIWZvcmNlX3ApCiAJICAgICAgewotCQlFTUFDU19U SU1FIHRtOwotCQlFTUFDU19HRVRfVElNRSAodG0pOworCQlFTUFDU19USU1FIHRtID0gY3Vy cmVudF9lbWFjc190aW1lICgpOwogCQlpZiAoRU1BQ1NfVElNRV9MVCAocHJlZW1wdGlvbl9u ZXh0X2NoZWNrLCB0bSkpCiAJCSAgewotCQkgICAgRU1BQ1NfQUREX1RJTUUgKHByZWVtcHRp b25fbmV4dF9jaGVjaywgdG0sIHByZWVtcHRpb25fcGVyaW9kKTsKKwkJICAgIHByZWVtcHRp b25fbmV4dF9jaGVjayA9IGFkZF9lbWFjc190aW1lICh0bSwKKwkJCQkJCQkgICAgcHJlZW1w dGlvbl9wZXJpb2QpOwogCQkgICAgaWYgKGRldGVjdF9pbnB1dF9wZW5kaW5nX2lnbm9yZV9z cXVlZXphYmxlcyAoKSkKIAkJICAgICAgYnJlYWs7CiAJCSAgfQpAQCAtNDcwMCwxMSArNDY5 NywxMCBAQAogI2lmIFBFUklPRElDX1BSRUVNUFRJT05fQ0hFQ0tJTkcKIAkgIGlmICghZm9y Y2VfcCkKIAkgICAgewotCSAgICAgIEVNQUNTX1RJTUUgdG07Ci0JICAgICAgRU1BQ1NfR0VU X1RJTUUgKHRtKTsKKwkgICAgICBFTUFDU19USU1FIHRtID0gY3VycmVudF9lbWFjc190aW1l ICgpOwogCSAgICAgIGlmIChFTUFDU19USU1FX0xUIChwcmVlbXB0aW9uX25leHRfY2hlY2ss IHRtKSkKIAkJewotCQkgIEVNQUNTX0FERF9USU1FIChwcmVlbXB0aW9uX25leHRfY2hlY2ss IHRtLCBwcmVlbXB0aW9uX3BlcmlvZCk7CisJCSAgcHJlZW1wdGlvbl9uZXh0X2NoZWNrID0g YWRkX2VtYWNzX3RpbWUgKHRtLCBwcmVlbXB0aW9uX3BlcmlvZCk7CiAJCSAgaWYgKGRldGVj dF9pbnB1dF9wZW5kaW5nX2lnbm9yZV9zcXVlZXphYmxlcyAoKSkKIAkJICAgIGJyZWFrOwog CQl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2VkaXRmbnMuYycKLS0tIHNyYy9lZGl0Zm5z LmMJMjAxMi0wNy0wNyAwMTo1Nzo0MiArMDAwMAorKysgc3JjL2VkaXRmbnMuYwkyMDEyLTA3 LTA3IDIwOjAwOjA0ICswMDAwCkBAIC0xNDA4LDEwICsxNDA4LDcgQEAKIHBpY29zZWNvbmQg Y291bnRzLiAgKi8pCiAgICh2b2lkKQogewotICBFTUFDU19USU1FIHQ7Ci0KLSAgRU1BQ1Nf R0VUX1RJTUUgKHQpOwotICByZXR1cm4gbWFrZV9saXNwX3RpbWUgKHQpOworICByZXR1cm4g bWFrZV9saXNwX3RpbWUgKGN1cnJlbnRfZW1hY3NfdGltZSAoKSk7CiB9CiAKIERFRlVOICgi Z2V0LWludGVybmFsLXJ1bi10aW1lIiwgRmdldF9pbnRlcm5hbF9ydW5fdGltZSwgU2dldF9p bnRlcm5hbF9ydW5fdGltZSwKQEAgLTE0MjgsNyArMTQyNSw2IEBACiAgIHN0cnVjdCBydXNh Z2UgdXNhZ2U7CiAgIHRpbWVfdCBzZWNzOwogICBpbnQgdXNlY3M7Ci0gIEVNQUNTX1RJTUUg dDsKIAogICBpZiAoZ2V0cnVzYWdlIChSVVNBR0VfU0VMRiwgJnVzYWdlKSA8IDApCiAgICAg LyogVGhpcyBzaG91bGRuJ3QgaGFwcGVuLiAgV2hhdCBhY3Rpb24gaXMgYXBwcm9wcmlhdGU/ ICAqLwpAQCAtMTQ0Miw4ICsxNDM4LDcgQEAKICAgICAgIHVzZWNzIC09IDEwMDAwMDA7CiAg ICAgICBzZWNzKys7CiAgICAgfQotICBFTUFDU19TRVRfU0VDU19VU0VDUyAodCwgc2Vjcywg dXNlY3MpOwotICByZXR1cm4gbWFrZV9saXNwX3RpbWUgKHQpOworICByZXR1cm4gbWFrZV9s aXNwX3RpbWUgKG1ha2VfZW1hY3NfdGltZSAoc2VjcywgdXNlY3MgKiAxMDAwKSk7CiAjZWxz ZSAvKiAhIEhBVkVfR0VUUlVTQUdFICAqLwogI2lmZGVmIFdJTkRPV1NOVAogICByZXR1cm4g dzMyX2dldF9pbnRlcm5hbF9ydW5fdGltZSAoKTsKQEAgLTE1NjAsOCArMTU1NSw3IEBACiAJ ICAvKiBSZXR1cm4gdGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgdGltZSB0aGF0IGlzIG5v dCBncmVhdGVyCiAJICAgICB0aGFuIHRoZSByZXF1ZXN0ZWQgdGltZS4gICovCiAJICB0aW1l X3Qgc2VjID0gaGk7Ci0JICBFTUFDU19TRVRfU0VDU19OU0VDUyAoKnJlc3VsdCwgKHNlYyA8 PCAxNikgKyBsbywKLQkJCQl1cyAqIDEwMDAgKyBwcyAvIDEwMDApOworCSAgKnJlc3VsdCA9 IG1ha2VfZW1hY3NfdGltZSAoKHNlYyA8PCAxNikgKyBsbywgdXMgKiAxMDAwICsgcHMgLyAx MDAwKTsKIAl9CiAgICAgICBlbHNlCiAJewpAQCAtMTU4Nyw3ICsxNTgxLDcgQEAKIHsKICAg RU1BQ1NfVElNRSB0OwogICBpZiAoTklMUCAoc3BlY2lmaWVkX3RpbWUpKQotICAgIEVNQUNT X0dFVF9USU1FICh0KTsKKyAgICB0ID0gY3VycmVudF9lbWFjc190aW1lICgpOwogICBlbHNl CiAgICAgewogICAgICAgTGlzcF9PYmplY3QgaGlnaCwgbG93LCB1c2VjLCBwc2VjOwpAQCAt MTYzNSw4ICsxNjI5LDcgQEAKICAgZG91YmxlIHQ7CiAgIGlmIChOSUxQIChzcGVjaWZpZWRf dGltZSkpCiAgICAgewotICAgICAgRU1BQ1NfVElNRSBub3c7Ci0gICAgICBFTUFDU19HRVRf VElNRSAobm93KTsKKyAgICAgIEVNQUNTX1RJTUUgbm93ID0gY3VycmVudF9lbWFjc190aW1l ICgpOwogICAgICAgdCA9IEVNQUNTX1NFQ1MgKG5vdykgKyBFTUFDU19OU0VDUyAobm93KSAv IDFlOTsKICAgICB9CiAgIGVsc2UKQEAgLTE3ODAsMTEgKzE3NzMsMTIgQEAKIAogICB3aGls ZSAoMSkKICAgICB7CisgICAgICB0aW1lX3QgKnRhZGRyID0gZW1hY3Nfc2Vjc19hZGRyICgm dCk7CiAgICAgICBCTE9DS19JTlBVVDsKIAogICAgICAgc3luY2hyb25pemVfc3lzdGVtX3Rp bWVfbG9jYWxlICgpOwogCi0gICAgICB0bSA9IHV0ID8gZ210aW1lIChFTUFDU19TRUNTX0FE RFIgKHQpKSA6IGxvY2FsdGltZSAoRU1BQ1NfU0VDU19BRERSICh0KSk7CisgICAgICB0bSA9 IHV0ID8gZ210aW1lICh0YWRkcikgOiBsb2NhbHRpbWUgKHRhZGRyKTsKICAgICAgIGlmICgh IHRtKQogCXsKIAkgIFVOQkxPQ0tfSU5QVVQ7CkBAIC0yMDY1LDEwICsyMDU5LDEwIEBACiAg IExpc3BfT2JqZWN0IHpvbmVfb2Zmc2V0LCB6b25lX25hbWU7CiAKICAgem9uZV9vZmZzZXQg PSBRbmlsOwotICBFTUFDU19TRVRfU0VDU19OU0VDUyAodmFsdWUsIGxpc3Bfc2Vjb25kc19h cmd1bWVudCAoc3BlY2lmaWVkX3RpbWUpLCAwKTsKKyAgdmFsdWUgPSBtYWtlX2VtYWNzX3Rp bWUgKGxpc3Bfc2Vjb25kc19hcmd1bWVudCAoc3BlY2lmaWVkX3RpbWUpLCAwKTsKICAgem9u ZV9uYW1lID0gZm9ybWF0X3RpbWVfc3RyaW5nICgiJVoiLCBzaXplb2YgIiVaIiAtIDEsIHZh bHVlLCAwLCAmbG9jYWx0bSk7CiAgIEJMT0NLX0lOUFVUOwotICB0ID0gZ210aW1lIChFTUFD U19TRUNTX0FERFIgKHZhbHVlKSk7CisgIHQgPSBnbXRpbWUgKGVtYWNzX3NlY3NfYWRkciAo JnZhbHVlKSk7CiAgIGlmICh0KQogICAgIG9mZnNldCA9IHRtX2RpZmYgKCZsb2NhbHRtLCB0 KTsKICAgVU5CTE9DS19JTlBVVDsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWlvLmMn Ci0tLSBzcmMvZmlsZWlvLmMJMjAxMi0wNy0wNyAwMTo1Nzo0MiArMDAwMAorKysgc3JjL2Zp bGVpby5jCTIwMTItMDctMDcgMDQ6NTM6MzggKzAwMDAKQEAgLTE5MjUsMTIgKzE5MjUsMTIg QEAKICAgICAgIERXT1JEIGF0dHJpYnV0ZXM7CiAgICAgICBjaGFyICogZmlsZW5hbWU7CiAK LSAgICAgIEVNQUNTX0dFVF9USU1FIChub3cpOwogICAgICAgZmlsZW5hbWUgPSBTREFUQSAo ZW5jb2RlZF9uZXduYW1lKTsKIAogICAgICAgLyogRW5zdXJlIGZpbGUgaXMgd3JpdGFibGUg d2hpbGUgaXRzIG1vZGlmaWVkIHRpbWUgaXMgc2V0LiAgKi8KICAgICAgIGF0dHJpYnV0ZXMg PSBHZXRGaWxlQXR0cmlidXRlcyAoZmlsZW5hbWUpOwogICAgICAgU2V0RmlsZUF0dHJpYnV0 ZXMgKGZpbGVuYW1lLCBhdHRyaWJ1dGVzICYgfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZKTsK KyAgICAgIG5vdyA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKICAgICAgIGlmIChzZXRfZmls ZV90aW1lcyAoLTEsIGZpbGVuYW1lLCBub3csIG5vdykpCiAJewogCSAgLyogUmVzdG9yZSBv cmlnaW5hbCBhdHRyaWJ1dGVzLiAgKi8KQEAgLTMyMTcsMTIgKzMyMTcsMTAgQEAKIHN0YXRp YyBFTUFDU19USU1FCiB0aW1lX2Vycm9yX3ZhbHVlIChpbnQgZXJybnVtKQogewotICBFTUFD U19USU1FIHQ7CiAgIGludCBucyA9IChlcnJudW0gPT0gRU5PRU5UIHx8IGVycm51bSA9PSBF QUNDRVMgfHwgZXJybnVtID09IEVOT1RESVIKIAkgICAgPyBOT05FWElTVEVOVF9NT0RUSU1F X05TRUNTCiAJICAgIDogVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKLSAgRU1BQ1NfU0VUX1NF Q1NfTlNFQ1MgKHQsIDAsIG5zKTsKLSAgcmV0dXJuIHQ7CisgIHJldHVybiBtYWtlX2VtYWNz X3RpbWUgKDAsIG5zKTsKIH0KIAogREVGVU4gKCJpbnNlcnQtZmlsZS1jb250ZW50cyIsIEZp bnNlcnRfZmlsZV9jb250ZW50cywgU2luc2VydF9maWxlX2NvbnRlbnRzLApAQCAtNTA4Miw3 ICs1MDgwLDcgQEAKICAgc3RydWN0IHN0YXQgc3Q7CiAgIExpc3BfT2JqZWN0IGhhbmRsZXI7 CiAgIExpc3BfT2JqZWN0IGZpbGVuYW1lOwotICBFTUFDU19USU1FIG10aW1lLCBkaWZmLCBv bmVfc2Vjb25kOworICBFTUFDU19USU1FIG10aW1lLCBkaWZmOwogCiAgIGlmIChOSUxQIChi dWYpKQogICAgIGIgPSBjdXJyZW50X2J1ZmZlcjsKQEAgLTUxMTAsMTEgKzUxMDgsMTAgQEAK ICAgaWYgKChFTUFDU19USU1FX0VRIChtdGltZSwgYi0+bW9kdGltZSkKICAgICAgICAvKiBJ ZiBib3RoIGV4aXN0LCBhY2NlcHQgdGhlbSBpZiB0aGV5IGFyZSBvZmYgYnkgb25lIHNlY29u ZC4gICovCiAgICAgICAgfHwgKEVNQUNTX1RJTUVfVkFMSURfUCAobXRpbWUpICYmIEVNQUNT X1RJTUVfVkFMSURfUCAoYi0+bW9kdGltZSkKLQkgICAmJiAoKEVNQUNTX1RJTUVfTFQgKG10 aW1lLCBiLT5tb2R0aW1lKQotCQk/IEVNQUNTX1NVQl9USU1FIChkaWZmLCBiLT5tb2R0aW1l LCBtdGltZSkKLQkJOiBFTUFDU19TVUJfVElNRSAoZGlmZiwgbXRpbWUsIGItPm1vZHRpbWUp KSwKLQkgICAgICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKG9uZV9zZWNvbmQsIDEsIDApLAot CSAgICAgICBFTUFDU19USU1FX0xFIChkaWZmLCBvbmVfc2Vjb25kKSkpKQorCSAgICYmICgo ZGlmZiA9IChFTUFDU19USU1FX0xUIChtdGltZSwgYi0+bW9kdGltZSkKKwkJCT8gc3ViX2Vt YWNzX3RpbWUgKGItPm1vZHRpbWUsIG10aW1lKQorCQkJOiBzdWJfZW1hY3NfdGltZSAobXRp bWUsIGItPm1vZHRpbWUpKSksCisJICAgICAgIEVNQUNTX1RJTUVfTEUgKGRpZmYsIG1ha2Vf ZW1hY3NfdGltZSAoMSwgMCkpKSkpCiAgICAgICAmJiAoc3Quc3Rfc2l6ZSA9PSBiLT5tb2R0 aW1lX3NpemUKICAgICAgICAgICB8fCBiLT5tb2R0aW1lX3NpemUgPCAwKSkKICAgICByZXR1 cm4gUXQ7CkBAIC01MTI3LDcgKzUxMjQsNyBAQAogTmV4dCBhdHRlbXB0IHRvIHNhdmUgd2ls bCBjZXJ0YWlubHkgbm90IGNvbXBsYWluIG9mIGEgZGlzY3JlcGFuY3kuICAqLykKICAgKHZv aWQpCiB7Ci0gIEVNQUNTX1NFVF9TRUNTX05TRUNTIChjdXJyZW50X2J1ZmZlci0+bW9kdGlt ZSwgMCwgVU5LTk9XTl9NT0RUSU1FX05TRUNTKTsKKyAgY3VycmVudF9idWZmZXItPm1vZHRp bWUgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIFVOS05PV05fTU9EVElNRV9OU0VDUyk7CiAgIGN1 cnJlbnRfYnVmZmVyLT5tb2R0aW1lX3NpemUgPSAtMTsKICAgcmV0dXJuIFFuaWw7CiB9CkBA IC01NDI2LDkgKzU0MjMsOCBAQAogCQl8fCBOSUxQIChGZmluZF9maWxlX25hbWVfaGFuZGxl ciAoQlZBUiAoYiwgYXV0b19zYXZlX2ZpbGVfbmFtZSksCiAJCQkJCQkgIFF3cml0ZV9yZWdp b24pKSkpCiAJICB7Ci0JICAgIEVNQUNTX1RJTUUgYmVmb3JlX3RpbWUsIGFmdGVyX3RpbWU7 Ci0KLQkgICAgRU1BQ1NfR0VUX1RJTUUgKGJlZm9yZV90aW1lKTsKKwkgICAgRU1BQ1NfVElN RSBiZWZvcmVfdGltZSA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKKwkgICAgRU1BQ1NfVElN RSBhZnRlcl90aW1lOwogCiAJICAgIC8qIElmIHdlIGhhZCBhIGZhaWx1cmUsIGRvbid0IHRy eSBhZ2FpbiBmb3IgMjAgbWludXRlcy4gICovCiAJICAgIGlmIChiLT5hdXRvX3NhdmVfZmFp bHVyZV90aW1lID4gMApAQCAtNTQ2NSw3ICs1NDYxLDcgQEAKIAkgICAgWFNFVEZBU1RJTlQg KEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBzYXZlX2xlbmd0aCksIFogLSBCRUcpOwogCSAgICBz ZXRfYnVmZmVyX2ludGVybmFsIChvbGQpOwogCi0JICAgIEVNQUNTX0dFVF9USU1FIChhZnRl cl90aW1lKTsKKwkgICAgYWZ0ZXJfdGltZSA9IGN1cnJlbnRfZW1hY3NfdGltZSAoKTsKIAog CSAgICAvKiBJZiBhdXRvLXNhdmUgdG9vayBtb3JlIHRoYW4gNjAgc2Vjb25kcywKIAkgICAg ICAgYXNzdW1lIGl0IHdhcyBhbiBORlMgZmFpbHVyZSB0aGF0IGdvdCBhIHRpbWVvdXQuICAq LwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mbnMuYycKLS0tIHNyYy9mbnMuYwkyMDEyLTA3 LTA1IDE4OjM1OjQ4ICswMDAwCisrKyBzcmMvZm5zLmMJMjAxMi0wNy0wNyAwNDo1MzozOCAr MDAwMApAQCAtNzgsOCArNzgsNyBAQAogCiAgIGlmIChFUSAobGltaXQsIFF0KSkKICAgICB7 Ci0gICAgICBFTUFDU19USU1FIHQ7Ci0gICAgICBFTUFDU19HRVRfVElNRSAodCk7CisgICAg ICBFTUFDU19USU1FIHQgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CiAgICAgICBzZWVkX3Jh bmRvbSAoZ2V0cGlkICgpIF4gRU1BQ1NfU0VDUyAodCkgXiBFTUFDU19OU0VDUyAodCkpOwog ICAgIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9pbWFnZS5jJwotLS0gc3JjL2ltYWdl LmMJMjAxMi0wNy0wNyAxOToyMzo0MSArMDAwMAorKysgc3JjL2ltYWdlLmMJMjAxMi0wNy0w NyAyMDowNDowMiArMDAwMApAQCAtMTA2MSw3ICsxMDYxLDcgQEAKIHByZXBhcmVfaW1hZ2Vf Zm9yX2Rpc3BsYXkgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiB7CiAg IC8qIFdlJ3JlIGFib3V0IHRvIGRpc3BsYXkgSU1HLCBzbyBzZXQgaXRzIHRpbWVzdGFtcCB0 byBgbm93Jy4gICovCi0gIEVNQUNTX0dFVF9USU1FIChpbWctPnRpbWVzdGFtcCk7CisgIGlt Zy0+dGltZXN0YW1wID0gY3VycmVudF9lbWFjc190aW1lICgpOwogCiAgIC8qIElmIElNRyBk b2Vzbid0IGhhdmUgYSBwaXhtYXAgeWV0LCBsb2FkIGl0IG5vdywgdXNpbmcgdGhlIGltYWdl CiAgICAgIHR5cGUgZGVwZW5kZW50IGxvYWRlciBmdW5jdGlvbi4gICovCkBAIC0xNTIwLDgg KzE1MjAsOCBAQAogCSAgICBkZWxheSA9IDE2MDAgKiBkZWxheSAvIG5pbWFnZXMgLyBuaW1h Z2VzOwogCSAgZGVsYXkgPSBtYXggKGRlbGF5LCAxKTsKIAotCSAgRU1BQ1NfR0VUX1RJTUUg KHQpOwotCSAgRU1BQ1NfU1VCX1RJTUUgKG9sZCwgdCwgRU1BQ1NfVElNRV9GUk9NX0RPVUJM RSAoZGVsYXkpKTsKKwkgIHQgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CisJICBvbGQgPSBz dWJfZW1hY3NfdGltZSAodCwgRU1BQ1NfVElNRV9GUk9NX0RPVUJMRSAoZGVsYXkpKTsKIAog CSAgZm9yIChpID0gMDsgaSA8IGMtPnVzZWQ7ICsraSkKIAkgICAgewpAQCAtMTc5Miw3ICsx NzkyLDcgQEAKICAgICB9CiAKICAgLyogV2UncmUgdXNpbmcgSU1HLCBzbyBzZXQgaXRzIHRp bWVzdGFtcCB0byBgbm93Jy4gICovCi0gIEVNQUNTX0dFVF9USU1FIChpbWctPnRpbWVzdGFt cCk7CisgIGltZy0+dGltZXN0YW1wID0gY3VycmVudF9lbWFjc190aW1lICgpOwogCiAgIC8q IFZhbHVlIGlzIHRoZSBpbWFnZSBpZC4gICovCiAgIHJldHVybiBpbWctPmlkOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9rZXlib2FyZC5jJwotLS0gc3JjL2tleWJvYXJkLmMJMjAxMi0w Ny0wNSAxODozNTo0OCArMDAwMAorKysgc3JjL2tleWJvYXJkLmMJMjAxMi0wNy0wNyAyMDoz MTowNyArMDAwMApAQCAtMjAxNywxMiArMjAxNywxMSBAQAogCSAgfHwgRU1BQ1NfU0VDUyAo cG9sbF90aW1lci0+aW50ZXJ2YWwpICE9IHBvbGxpbmdfcGVyaW9kKQogCXsKIAkgIHRpbWVf dCBwZXJpb2QgPSBtYXggKDEsIG1pbiAocG9sbGluZ19wZXJpb2QsIFRZUEVfTUFYSU1VTSAo dGltZV90KSkpOwotCSAgRU1BQ1NfVElNRSBpbnRlcnZhbDsKKwkgIEVNQUNTX1RJTUUgaW50 ZXJ2YWwgPSBtYWtlX2VtYWNzX3RpbWUgKHBlcmlvZCwgMCk7CiAKIAkgIGlmIChwb2xsX3Rp bWVyKQogCSAgICBjYW5jZWxfYXRpbWVyIChwb2xsX3RpbWVyKTsKIAotCSAgRU1BQ1NfU0VU X1NFQ1NfVVNFQ1MgKGludGVydmFsLCBwZXJpb2QsIDApOwogCSAgcG9sbF90aW1lciA9IHN0 YXJ0X2F0aW1lciAoQVRJTUVSX0NPTlRJTlVPVVMsIGludGVydmFsLAogCQkJCSAgICAgcG9s bF9mb3JfaW5wdXQsIE5VTEwpOwogCX0KQEAgLTI3ODYsMTMgKzI3ODUsOCBAQAogICAgIHsK ICAgICAgIEtCT0FSRCAqa2IgSUZfTElOVCAoPSBOVUxMKTsKIAotICAgICAgaWYgKGVuZF90 aW1lKQotCXsKLQkgIEVNQUNTX1RJTUUgbm93OwotCSAgRU1BQ1NfR0VUX1RJTUUgKG5vdyk7 Ci0JICBpZiAoRU1BQ1NfVElNRV9HRSAobm93LCAqZW5kX3RpbWUpKQotCSAgICBnb3RvIGV4 aXQ7Ci0JfQorICAgICAgaWYgKGVuZF90aW1lICYmIEVNQUNTX1RJTUVfTEUgKCplbmRfdGlt ZSwgY3VycmVudF9lbWFjc190aW1lICgpKSkKKwlnb3RvIGV4aXQ7CiAKICAgICAgIC8qIEFj dHVhbGx5IHJlYWQgYSBjaGFyYWN0ZXIsIHdhaXRpbmcgaWYgbmVjZXNzYXJ5LiAgKi8KICAg ICAgIHNhdmVfZ2V0Y2ptcCAoc2F2ZV9qdW1wKTsKQEAgLTM4NDcsMTMgKzM4NDEsMTIgQEAK ICNlbmRpZgogICAgICAgaWYgKGVuZF90aW1lKQogCXsKLQkgIEVNQUNTX1RJTUUgZHVyYXRp b247Ci0JICBFTUFDU19HRVRfVElNRSAoZHVyYXRpb24pOwotCSAgaWYgKEVNQUNTX1RJTUVf R0UgKGR1cmF0aW9uLCAqZW5kX3RpbWUpKQorCSAgRU1BQ1NfVElNRSBub3cgPSBjdXJyZW50 X2VtYWNzX3RpbWUgKCk7CisJICBpZiAoRU1BQ1NfVElNRV9MRSAoKmVuZF90aW1lLCBub3cp KQogCSAgICByZXR1cm4gUW5pbDsJLyogRmluaXNoZWQgd2FpdGluZy4gICovCiAJICBlbHNl CiAJICAgIHsKLQkgICAgICBFTUFDU19TVUJfVElNRSAoZHVyYXRpb24sICplbmRfdGltZSwg ZHVyYXRpb24pOworCSAgICAgIEVNQUNTX1RJTUUgZHVyYXRpb24gPSBzdWJfZW1hY3NfdGlt ZSAoKmVuZF90aW1lLCBub3cpOwogCSAgICAgIHdhaXRfcmVhZGluZ19wcm9jZXNzX291dHB1 dCAobWluIChFTUFDU19TRUNTIChkdXJhdGlvbiksCiAJCQkJCQlXQUlUX1JFQURJTkdfTUFY KSwKIAkJCQkJICAgRU1BQ1NfTlNFQ1MgKGR1cmF0aW9uKSwKQEAgLTQyNTYsOCArNDI0OSw3 IEBACiAgIGlmIChFTUFDU19USU1FX1ZBTElEX1AgKHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3Rp bWUpKQogICAgIHJldHVybjsKIAotICBFTUFDU19HRVRfVElNRSAodGltZXJfaWRsZW5lc3Nf c3RhcnRfdGltZSk7Ci0KKyAgdGltZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSA9IGN1cnJlbnRf ZW1hY3NfdGltZSAoKTsKICAgdGltZXJfbGFzdF9pZGxlbmVzc19zdGFydF90aW1lID0gdGlt ZXJfaWRsZW5lc3Nfc3RhcnRfdGltZTsKIAogICAvKiBNYXJrIGFsbCBpZGxlLXRpbWUgdGlt ZXJzIGFzIG9uY2UgYWdhaW4gY2FuZGlkYXRlcyBmb3IgcnVubmluZy4gICovCkBAIC00Mjc4 LDcgKzQyNzAsNyBAQAogc3RhdGljIHZvaWQKIHRpbWVyX3N0b3BfaWRsZSAodm9pZCkKIHsK LSAgRU1BQ1NfU0VUX0lOVkFMSURfVElNRSAodGltZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSk7 CisgIHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3RpbWUgPSBpbnZhbGlkX2VtYWNzX3RpbWUgKCk7 CiB9CiAKIC8qIFJlc3VtZSBpZGxlIHRpbWVyIGZyb20gbGFzdCBpZGxlIHN0YXJ0IHRpbWUu ICAqLwpAQCAtNDMzOSw3ICs0MzMxLDcgQEAKICAgTGlzcF9PYmplY3QgdGltZXJzLCBpZGxl X3RpbWVycywgY2hvc2VuX3RpbWVyOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIs IGdjcHJvMzsKIAotICBFTUFDU19TRVRfSU5WQUxJRF9USU1FIChuZXh0dGltZSk7CisgIG5l eHR0aW1lID0gaW52YWxpZF9lbWFjc190aW1lICgpOwogCiAgIC8qIEFsd2F5cyBjb25zaWRl ciB0aGUgb3JkaW5hcnkgdGltZXJzLiAgKi8KICAgdGltZXJzID0gVnRpbWVyX2xpc3Q7CkBA IC00MzYxLDExICs0MzUzLDEwIEBACiAKICAgaWYgKENPTlNQICh0aW1lcnMpIHx8IENPTlNQ IChpZGxlX3RpbWVycykpCiAgICAgewotICAgICAgRU1BQ1NfR0VUX1RJTUUgKG5vdyk7Ci0g ICAgICBpZiAoRU1BQ1NfVElNRV9WQUxJRF9QICh0aW1lcl9pZGxlbmVzc19zdGFydF90aW1l KSkKLQlFTUFDU19TVUJfVElNRSAoaWRsZW5lc3Nfbm93LCBub3csIHRpbWVyX2lkbGVuZXNz X3N0YXJ0X3RpbWUpOwotICAgICAgZWxzZQotCUVNQUNTX1NFVF9TRUNTX05TRUNTIChpZGxl bmVzc19ub3csIDAsIDApOworICAgICAgbm93ID0gY3VycmVudF9lbWFjc190aW1lICgpOwor ICAgICAgaWRsZW5lc3Nfbm93ID0gKEVNQUNTX1RJTUVfVkFMSURfUCAodGltZXJfaWRsZW5l c3Nfc3RhcnRfdGltZSkKKwkJICAgICAgPyBzdWJfZW1hY3NfdGltZSAobm93LCB0aW1lcl9p ZGxlbmVzc19zdGFydF90aW1lKQorCQkgICAgICA6IG1ha2VfZW1hY3NfdGltZSAoMCwgMCkp OwogICAgIH0KIAogICB3aGlsZSAoQ09OU1AgKHRpbWVycykgfHwgQ09OU1AgKGlkbGVfdGlt ZXJzKSkKQEAgLTQzNzQsMTIgKzQzNjUsMTAgQEAKICAgICAgIExpc3BfT2JqZWN0IHRpbWVy ID0gUW5pbCwgaWRsZV90aW1lciA9IFFuaWw7CiAgICAgICBFTUFDU19USU1FIHRpbWVyX3Rp bWUsIGlkbGVfdGltZXJfdGltZTsKICAgICAgIEVNQUNTX1RJTUUgZGlmZmVyZW5jZTsKLSAg ICAgIEVNQUNTX1RJTUUgdGltZXJfZGlmZmVyZW5jZSwgaWRsZV90aW1lcl9kaWZmZXJlbmNl OworICAgICAgRU1BQ1NfVElNRSB0aW1lcl9kaWZmZXJlbmNlID0gaW52YWxpZF9lbWFjc190 aW1lICgpOworICAgICAgRU1BQ1NfVElNRSBpZGxlX3RpbWVyX2RpZmZlcmVuY2UgPSBpbnZh bGlkX2VtYWNzX3RpbWUgKCk7CiAgICAgICBpbnQgcmlwZSwgdGltZXJfcmlwZSA9IDAsIGlk bGVfdGltZXJfcmlwZSA9IDA7CiAKLSAgICAgIEVNQUNTX1NFVF9JTlZBTElEX1RJTUUgKHRp bWVyX2RpZmZlcmVuY2UpOwotICAgICAgRU1BQ1NfU0VUX0lOVkFMSURfVElNRSAoaWRsZV90 aW1lcl9kaWZmZXJlbmNlKTsKLQogICAgICAgLyogU2V0IFRJTUVSIGFuZCBUSU1FUl9ESUZG RVJFTkNFCiAJIGJhc2VkIG9uIHRoZSBuZXh0IG9yZGluYXJ5IHRpbWVyLgogCSBUSU1FUl9E SUZGRVJFTkNFIGlzIHRoZSBkaXN0YW5jZSBpbiB0aW1lIGZyb20gTk9XIHRvIHdoZW4KQEAg LTQzOTUsMTAgKzQzODQsOSBAQAogCSAgICB9CiAKIAkgIHRpbWVyX3JpcGUgPSBFTUFDU19U SU1FX0xFICh0aW1lcl90aW1lLCBub3cpOwotCSAgaWYgKHRpbWVyX3JpcGUpCi0JICAgIEVN QUNTX1NVQl9USU1FICh0aW1lcl9kaWZmZXJlbmNlLCBub3csIHRpbWVyX3RpbWUpOwotCSAg ZWxzZQotCSAgICBFTUFDU19TVUJfVElNRSAodGltZXJfZGlmZmVyZW5jZSwgdGltZXJfdGlt ZSwgbm93KTsKKwkgIHRpbWVyX2RpZmZlcmVuY2UgPSAodGltZXJfcmlwZQorCQkJICAgICAg PyBzdWJfZW1hY3NfdGltZSAobm93LCB0aW1lcl90aW1lKQorCQkJICAgICAgOiBzdWJfZW1h Y3NfdGltZSAodGltZXJfdGltZSwgbm93KSk7CiAJfQogCiAgICAgICAvKiBMaWtld2lzZSBm b3IgSURMRV9USU1FUiBhbmQgSURMRV9USU1FUl9ESUZGRVJFTkNFCkBAIC00NDEzLDEyICs0 NDAxLDEwIEBACiAJICAgIH0KIAogCSAgaWRsZV90aW1lcl9yaXBlID0gRU1BQ1NfVElNRV9M RSAoaWRsZV90aW1lcl90aW1lLCBpZGxlbmVzc19ub3cpOwotCSAgaWYgKGlkbGVfdGltZXJf cmlwZSkKLQkgICAgRU1BQ1NfU1VCX1RJTUUgKGlkbGVfdGltZXJfZGlmZmVyZW5jZSwKLQkJ CSAgICBpZGxlbmVzc19ub3csIGlkbGVfdGltZXJfdGltZSk7Ci0JICBlbHNlCi0JICAgIEVN QUNTX1NVQl9USU1FIChpZGxlX3RpbWVyX2RpZmZlcmVuY2UsCi0JCQkgICAgaWRsZV90aW1l cl90aW1lLCBpZGxlbmVzc19ub3cpOworCSAgaWRsZV90aW1lcl9kaWZmZXJlbmNlID0KKwkg ICAgKGlkbGVfdGltZXJfcmlwZQorCSAgICAgPyBzdWJfZW1hY3NfdGltZSAoaWRsZW5lc3Nf bm93LCBpZGxlX3RpbWVyX3RpbWUpCisJICAgICA6IHN1Yl9lbWFjc190aW1lIChpZGxlX3Rp bWVyX3RpbWUsIGlkbGVuZXNzX25vdykpOwogCX0KIAogICAgICAgLyogRGVjaWRlIHdoaWNo IHRpbWVyIGlzIHRoZSBuZXh0IHRpbWVyLApAQCAtNDQ3NCw4ICs0NDYwLDcgQEAKICAgICAg ICAgICAgICAgICAgcmV0dXJuIDAgdG8gaW5kaWNhdGUgdGhhdC4gICovCiAJICAgIH0KIAot ICAgICAgICAgIEVNQUNTX1NFVF9TRUNTIChuZXh0dGltZSwgMCk7Ci0gICAgICAgICAgRU1B Q1NfU0VUX1VTRUNTIChuZXh0dGltZSwgMCk7CisJICBuZXh0dGltZSA9IG1ha2VfZW1hY3Nf dGltZSAoMCwgMCk7CiAJfQogICAgICAgZWxzZQogCS8qIFdoZW4gd2UgZW5jb3VudGVyIGEg dGltZXIgdGhhdCBpcyBzdGlsbCB3YWl0aW5nLApAQCAtNDUyNywxNCArNDUxMiw4IEBACiAg ICh2b2lkKQogewogICBpZiAoRU1BQ1NfVElNRV9WQUxJRF9QICh0aW1lcl9pZGxlbmVzc19z dGFydF90aW1lKSkKLSAgICB7Ci0gICAgICBFTUFDU19USU1FIG5vdywgaWRsZW5lc3Nfbm93 OwotCi0gICAgICBFTUFDU19HRVRfVElNRSAobm93KTsKLSAgICAgIEVNQUNTX1NVQl9USU1F IChpZGxlbmVzc19ub3csIG5vdywgdGltZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSk7Ci0KLSAg ICAgIHJldHVybiBtYWtlX2xpc3BfdGltZSAoaWRsZW5lc3Nfbm93KTsKLSAgICB9CisgICAg cmV0dXJuIG1ha2VfbGlzcF90aW1lIChzdWJfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190 aW1lICgpLAorCQkJCQkgICB0aW1lcl9pZGxlbmVzc19zdGFydF90aW1lKSk7CiAKICAgcmV0 dXJuIFFuaWw7CiB9CkBAIC03MjI0LDcgKzcyMDMsNyBAQAogI2VuZGlmCiAKICAgaWYgKGlu cHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lKQotICAgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICgq aW5wdXRfYXZhaWxhYmxlX2NsZWFyX3RpbWUsIDAsIDApOworICAgICppbnB1dF9hdmFpbGFi bGVfY2xlYXJfdGltZSA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMCk7CiAKICNpZm5kZWYgU1lO Q19JTlBVVAogICBoYW5kbGVfYXN5bmNfaW5wdXQgKCk7CkBAIC03MzI3LDcgKzczMDYsNyBA QAogCSAgICAvKiBUZWxsIHdhaXRfcmVhZGluZ19wcm9jZXNzX291dHB1dCB0aGF0IGl0IG5l ZWRzIHRvIHdha2UKIAkgICAgICAgdXAgYW5kIGxvb2sgYXJvdW5kLiAgKi8KIAkgICAgaWYg KGlucHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lKQotCSAgICAgIEVNQUNTX1NFVF9TRUNTX1VT RUNTICgqaW5wdXRfYXZhaWxhYmxlX2NsZWFyX3RpbWUsIDAsIDApOworCSAgICAgICppbnB1 dF9hdmFpbGFibGVfY2xlYXJfdGltZSA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMCk7CiAJICB9 CiAJYnJlYWs7CiAgICAgICB9CkBAIC0xMTM0NCw3ICsxMTMyMyw3IEBACiAgIHF1aXRfY2hh ciA9IEN0bCAoJ2cnKTsKICAgVnVucmVhZF9jb21tYW5kX2V2ZW50cyA9IFFuaWw7CiAgIHVu cmVhZF9jb21tYW5kX2NoYXIgPSAtMTsKLSAgRU1BQ1NfU0VUX0lOVkFMSURfVElNRSAodGlt ZXJfaWRsZW5lc3Nfc3RhcnRfdGltZSk7CisgIHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3RpbWUg PSBpbnZhbGlkX2VtYWNzX3RpbWUgKCk7CiAgIHRvdGFsX2tleXMgPSAwOwogICByZWNlbnRf a2V5c19pbmRleCA9IDA7CiAgIGtiZF9mZXRjaF9wdHIgPSBrYmRfYnVmZmVyOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9scmVhZC5jJwotLS0gc3JjL2xyZWFkLmMJMjAxMi0wNy0wNyAx OTozMzoyOCArMDAwMAorKysgc3JjL2xyZWFkLmMJMjAxMi0wNy0wNyAyMDowNDowMiArMDAw MApAQCAtNjAwLDggKzYwMCw3IEBACiAgICAgewogICAgICAgZG91YmxlIGR1cmF0aW9uID0g ZXh0cmFjdF9mbG9hdCAoc2Vjb25kcyk7CiAgICAgICBFTUFDU19USU1FIHdhaXRfdGltZSA9 IEVNQUNTX1RJTUVfRlJPTV9ET1VCTEUgKGR1cmF0aW9uKTsKLSAgICAgIEVNQUNTX0dFVF9U SU1FIChlbmRfdGltZSk7Ci0gICAgICBFTUFDU19BRERfVElNRSAoZW5kX3RpbWUsIGVuZF90 aW1lLCB3YWl0X3RpbWUpOworICAgICAgZW5kX3RpbWUgPSBhZGRfZW1hY3NfdGltZSAoY3Vy cmVudF9lbWFjc190aW1lICgpLCB3YWl0X3RpbWUpOwogICAgIH0KIAogLyogUmVhZCB1bnRp bCB3ZSBnZXQgYW4gYWNjZXB0YWJsZSBldmVudC4gICovCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL21zZG9zLmMnCi0tLSBzcmMvbXNkb3MuYwkyMDEyLTA3LTA1IDA2OjMyOjQxICswMDAw CisrKyBzcmMvbXNkb3MuYwkyMDEyLTA3LTA3IDIwOjAwOjA0ICswMDAwCkBAIC00MTM2LDE0 ICs0MTM2LDE0IEBACiAgICAgICBFTUFDU19USU1FIGNsbm93LCBjbGxhc3QsIGNsZGlmZjsK IAogICAgICAgZ2V0dGltZSAoJnQpOwotICAgICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKGNs bGFzdCwgdC50dl9zZWMsIHQudHZfbnNlYyk7CisgICAgICBjbGxhc3QgPSBtYWtlX2VtYWNz X3RpbWUgKHQudHZfc2VjLCB0LnR2X25zZWMpOwogCiAgICAgICB3aGlsZSAoIWNoZWNrX2lu cHV0IHx8ICFkZXRlY3RfaW5wdXRfcGVuZGluZyAoKSkKIAl7CiAJICBnZXR0aW1lICgmdCk7 Ci0JICBFTUFDU19TRVRfU0VDU19OU0VDUyAoY2xub3csIHQudHZfc2VjLCB0LnR2X25zZWMp OwotCSAgRU1BQ1NfU1VCX1RJTUUgKGNsZGlmZiwgY2xub3csIGNsbGFzdCk7Ci0JICBFTUFD U19TVUJfVElNRSAoKnRpbWVvdXQsICp0aW1lb3V0LCBjbGRpZmYpOworCSAgY2xub3cgPSBt YWtlX2VtYWNzX3RpbWUgKHQudHZfc2VjLCB0LnR2X25zZWMpOworCSAgY2xkaWZmID0gc3Vi X2VtYWNzX3RpbWUgKGNsbm93LCBjbGxhc3QpOworCSAgKnRpbWVvdXQgPSBzdWJfZW1hY3Nf dGltZSAoKnRpbWVvdXQsIGNsZGlmZik7CiAKIAkgIC8qIFN0b3Agd2hlbiB0aW1lb3V0IHZh bHVlIGNyb3NzZXMgemVyby4gICovCiAJICBpZiAoRU1BQ1NfVElNRV9TSUdOICgqdGltZW91 dCkgPD0gMCkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbnN0ZXJtLm0nCi0tLSBzcmMvbnN0 ZXJtLm0JMjAxMi0wNy0wNiAyMTowNzo0NiArMDAwMAorKysgc3JjL25zdGVybS5tCTIwMTIt MDctMDcgMDQ6NTM6MzggKzAwMDAKQEAgLTM4OSwyMSArMzg5LDE2IEBACiAgICAgIEJsb2Nr aW5nIHRpbWVyIHV0aWxpdHkgdXNlZCBieSBuc19yaW5nX2JlbGwKICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovCiB7Ci0gIEVNQUNTX1RJTUUgd2FrZXVwLCBkZWxheTsKLQotICBFTUFD U19HRVRfVElNRSAod2FrZXVwKTsKLSAgRU1BQ1NfU0VUX1NFQ1NfVVNFQ1MgKGRlbGF5LCAw LCB1c2Vjcyk7Ci0gIEVNQUNTX0FERF9USU1FICh3YWtldXAsIHdha2V1cCwgZGVsYXkpOwor ICBFTUFDU19USU1FIHdha2V1cCA9IGFkZF9lbWFjc190aW1lIChjdXJyZW50X2VtYWNzX3Rp bWUgKCksCisJCQkJICAgICAgbWFrZV9lbWFjc190aW1lICgwLCB1c2VjcyAqIDEwMDApKTsK IAogICAvKiBLZWVwIHdhaXRpbmcgdW50aWwgcGFzdCB0aGUgdGltZSB3YWtldXAuICAqLwog ICB3aGlsZSAoMSkKICAgICB7Ci0gICAgICBFTUFDU19USU1FIHRpbWVvdXQ7Ci0KLSAgICAg IEVNQUNTX0dFVF9USU1FICh0aW1lb3V0KTsKLSAgICAgIGlmIChFTUFDU19USU1FX0xFICh3 YWtldXAsIHRpbWVvdXQpKQorICAgICAgRU1BQ1NfVElNRSBub3cgPSBjdXJyZW50X2VtYWNz X3RpbWUgKCk7CisgICAgICBpZiAoRU1BQ1NfVElNRV9MRSAod2FrZXVwLCBub3cpKQogCWJy ZWFrOwotICAgICAgRU1BQ1NfU1VCX1RJTUUgKHRpbWVvdXQsIHdha2V1cCwgdGltZW91dCk7 CisgICAgICB0aW1lb3V0ID0gc3ViX2VtYWNzX3RpbWUgKHdha2V1cCwgbm93KTsKIAogICAg ICAgLyogVHJ5IHRvIHdhaXQgdGhhdCBsb25nLS1idXQgd2UgbWlnaHQgd2FrZSB1cCBzb29u ZXIuICAqLwogICAgICAgcHNlbGVjdCAoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJnRpbWVvdXQs IE5VTEwpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9wcm9jZXNzLmMnCi0tLSBzcmMvcHJv Y2Vzcy5jCTIwMTItMDctMDYgMTY6NTc6MzIgKzAwMDAKKysrIHNyYy9wcm9jZXNzLmMJMjAx Mi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtMTg1MiwxMCArMTg1Miw5IEBACiAJIFNvIGhh dmUgYW4gaW50ZXJydXB0IGphciBpdCBsb29zZS4gICovCiAgICAgICB7CiAJc3RydWN0IGF0 aW1lciAqdGltZXI7Ci0JRU1BQ1NfVElNRSBvZmZzZXQ7CisJRU1BQ1NfVElNRSBvZmZzZXQg PSBtYWtlX2VtYWNzX3RpbWUgKDEsIDApOwogCiAJc3RvcF9wb2xsaW5nICgpOwotCUVNQUNT X1NFVF9TRUNTX1VTRUNTIChvZmZzZXQsIDEsIDApOwogCXRpbWVyID0gc3RhcnRfYXRpbWVy IChBVElNRVJfUkVMQVRJVkUsIG9mZnNldCwgY3JlYXRlX3Byb2Nlc3NfMSwgMCk7CiAKIAlp ZiAoZm9ya2luID49IDApCkBAIC00MzA5LDkgKzQzMDgsOCBAQAogICAgICBjb21wdXRlIHRo ZSBhYnNvbHV0ZSB0aW1lIHRvIHJldHVybiBhdC4gICovCiAgIGlmICh0aW1lX2xpbWl0IHx8 IDAgPCBuc2VjcykKICAgICB7Ci0gICAgICBFTUFDU19HRVRfVElNRSAoZW5kX3RpbWUpOwot ICAgICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKHRpbWVvdXQsIHRpbWVfbGltaXQsIG5zZWNz KTsKLSAgICAgIEVNQUNTX0FERF9USU1FIChlbmRfdGltZSwgZW5kX3RpbWUsIHRpbWVvdXQp OworICAgICAgdGltZW91dCA9IG1ha2VfZW1hY3NfdGltZSAodGltZV9saW1pdCwgbnNlY3Mp OworICAgICAgZW5kX3RpbWUgPSBhZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1l ICgpLCB0aW1lb3V0KTsKICAgICB9CiAKICAgd2hpbGUgKDEpCkBAIC00MzQwLDE4ICs0MzM4 LDE4IEBACiAJICAgICBnb2JibGUgb3V0cHV0IGF2YWlsYWJsZSBub3cKIAkgICAgIGJ1dCBk b24ndCB3YWl0IGF0IGFsbC4gKi8KIAotCSAgRU1BQ1NfU0VUX1NFQ1NfVVNFQ1MgKHRpbWVv dXQsIDAsIDApOworCSAgdGltZW91dCA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMCk7CiAJfQog ICAgICAgZWxzZSBpZiAodGltZV9saW1pdCB8fCAwIDwgbnNlY3MpCiAJewotCSAgRU1BQ1Nf R0VUX1RJTUUgKHRpbWVvdXQpOwotCSAgaWYgKEVNQUNTX1RJTUVfTEUgKGVuZF90aW1lLCB0 aW1lb3V0KSkKKwkgIEVNQUNTX1RJTUUgbm93ID0gY3VycmVudF9lbWFjc190aW1lICgpOwor CSAgaWYgKEVNQUNTX1RJTUVfTEUgKGVuZF90aW1lLCBub3cpKQogCSAgICBicmVhazsKLQkg IEVNQUNTX1NVQl9USU1FICh0aW1lb3V0LCBlbmRfdGltZSwgdGltZW91dCk7CisJICB0aW1l b3V0ID0gc3ViX2VtYWNzX3RpbWUgKGVuZF90aW1lLCBub3cpOwogCX0KICAgICAgIGVsc2UK IAl7Ci0JICBFTUFDU19TRVRfU0VDU19VU0VDUyAodGltZW91dCwgMTAwMDAwLCAwKTsKKwkg IHRpbWVvdXQgPSBtYWtlX2VtYWNzX3RpbWUgKDEwMDAwMCwgMCk7CiAJfQogCiAgICAgICAv KiBOb3JtYWxseSB3ZSBydW4gdGltZXJzIGhlcmUuCkBAIC00NDM2LDcgKzQ0MzQsNyBAQAog ICAgICAgICAgICAgQXRlbXAgPSBpbnB1dF93YWl0X21hc2s7CiAJICBDdGVtcCA9IHdyaXRl X21hc2s7CiAKLQkgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICh0aW1lb3V0LCAwLCAwKTsKKwkg IHRpbWVvdXQgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIDApOwogCSAgaWYgKChwc2VsZWN0ICht YXggKG1heF9wcm9jZXNzX2Rlc2MsIG1heF9pbnB1dF9kZXNjKSArIDEsCiAJCQkmQXRlbXAs CiAjaWZkZWYgTk9OX0JMT0NLSU5HX0NPTk5FQ1QKQEAgLTQ1ODgsNyArNDU4Niw3IEBACiAJ CQluc2VjcyA9IFhQUk9DRVNTIChwcm9jKS0+cmVhZF9vdXRwdXRfZGVsYXk7CiAJCSAgICB9 CiAJCX0KLQkgICAgICBFTUFDU19TRVRfU0VDU19OU0VDUyAodGltZW91dCwgMCwgbnNlY3Mp OworCSAgICAgIHRpbWVvdXQgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIG5zZWNzKTsKIAkgICAg ICBwcm9jZXNzX291dHB1dF9za2lwID0gMDsKIAkgICAgfQogI2VuZGlmCkBAIC02NDI0LDcg KzY0MjIsNyBAQAogCSAgLyogVGVsbCB3YWl0X3JlYWRpbmdfcHJvY2Vzc19vdXRwdXQgdGhh dCBpdCBuZWVkcyB0byB3YWtlIHVwIGFuZAogCSAgICAgbG9vayBhcm91bmQuICAqLwogCSAg aWYgKGlucHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lKQotCSAgICBFTUFDU19TRVRfU0VDU19V U0VDUyAoKmlucHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lLCAwLCAwKTsKKwkgICAgKmlucHV0 X2F2YWlsYWJsZV9jbGVhcl90aW1lID0gbWFrZV9lbWFjc190aW1lICgwLCAwKTsKIAl9CiAK ICAgICAgIC8qIFRoZXJlIHdhcyBubyBhc3luY2hyb25vdXMgcHJvY2VzcyBmb3VuZCBmb3Ig dGhhdCBwaWQ6IHdlIGhhdmUKQEAgLTY0NDIsNyArNjQ0MCw3IEBACiAJICAvKiBUZWxsIHdh aXRfcmVhZGluZ19wcm9jZXNzX291dHB1dCB0aGF0IGl0IG5lZWRzIHRvIHdha2UgdXAgYW5k CiAJICAgICBsb29rIGFyb3VuZC4gICovCiAJICBpZiAoaW5wdXRfYXZhaWxhYmxlX2NsZWFy X3RpbWUpCi0JICAgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICgqaW5wdXRfYXZhaWxhYmxlX2Ns ZWFyX3RpbWUsIDAsIDApOworCSAgICAqaW5wdXRfYXZhaWxhYmxlX2NsZWFyX3RpbWUgPSBt YWtlX2VtYWNzX3RpbWUgKDAsIDApOwogCX0KIAogICAgIHNpZ2NobGRfZW5kX29mX2xvb3A6 CkBAIC02ODU3LDkgKzY4NTUsOCBAQAogICAvKiBXaGF0IGRvZXMgdGltZV9saW1pdCByZWFs bHkgbWVhbj8gICovCiAgIGlmICh0aW1lX2xpbWl0IHx8IDAgPCBuc2VjcykKICAgICB7Ci0g ICAgICBFTUFDU19HRVRfVElNRSAoZW5kX3RpbWUpOwotICAgICAgRU1BQ1NfU0VUX1NFQ1Nf TlNFQ1MgKHRpbWVvdXQsIHRpbWVfbGltaXQsIG5zZWNzKTsKLSAgICAgIEVNQUNTX0FERF9U SU1FIChlbmRfdGltZSwgZW5kX3RpbWUsIHRpbWVvdXQpOworICAgICAgdGltZW91dCA9IG1h a2VfZW1hY3NfdGltZSAodGltZV9saW1pdCwgbnNlY3MpOworICAgICAgZW5kX3RpbWUgPSBh ZGRfZW1hY3NfdGltZSAoY3VycmVudF9lbWFjc190aW1lICgpLCB0aW1lb3V0KTsKICAgICB9 CiAKICAgLyogVHVybiBvZmYgcGVyaW9kaWMgYWxhcm1zIChpbiBjYXNlIHRoZXkgYXJlIGlu IHVzZSkKQEAgLTY4OTAsMTggKzY4ODcsMTggQEAKIAkgICAgIGdvYmJsZSBvdXRwdXQgYXZh aWxhYmxlIG5vdwogCSAgICAgYnV0IGRvbid0IHdhaXQgYXQgYWxsLiAqLwogCi0JICBFTUFD U19TRVRfU0VDU19VU0VDUyAodGltZW91dCwgMCwgMCk7CisJICB0aW1lb3V0ID0gbWFrZV9l bWFjc190aW1lICgwLCAwKTsKIAl9CiAgICAgICBlbHNlIGlmICh0aW1lX2xpbWl0IHx8IDAg PCBuc2VjcykKIAl7Ci0JICBFTUFDU19HRVRfVElNRSAodGltZW91dCk7Ci0JICBpZiAoRU1B Q1NfVElNRV9MRSAoZW5kX3RpbWUsIHRpbWVvdXQpKQorCSAgRU1BQ1NfVElNRSBub3cgPSBj dXJyZW50X2VtYWNzX3RpbWUgKCk7CisJICBpZiAoRU1BQ1NfVElNRV9MRSAoZW5kX3RpbWUs IG5vdykpCiAJICAgIGJyZWFrOwotCSAgRU1BQ1NfU1VCX1RJTUUgKHRpbWVvdXQsIGVuZF90 aW1lLCB0aW1lb3V0KTsKKwkgIHRpbWVvdXQgPSBzdWJfZW1hY3NfdGltZSAoZW5kX3RpbWUs IG5vdyk7CiAJfQogICAgICAgZWxzZQogCXsKLQkgIEVNQUNTX1NFVF9TRUNTX1VTRUNTICh0 aW1lb3V0LCAxMDAwMDAsIDApOworCSAgdGltZW91dCA9IG1ha2VfZW1hY3NfdGltZSAoMTAw MDAwLCAwKTsKIAl9CiAKICAgICAgIC8qIElmIG91ciBjYWxsZXIgd2lsbCBub3QgaW1tZWRp YXRlbHkgaGFuZGxlIGtleWJvYXJkIGV2ZW50cywKCj09PSBtb2RpZmllZCBmaWxlICdzcmMv c3lzZGVwLmMnCi0tLSBzcmMvc3lzZGVwLmMJMjAxMi0wNy0wNyAxODoxNjoxNSArMDAwMAor Kysgc3JjL3N5c2RlcC5jCTIwMTItMDctMDcgMjA6MDQ6MDIgKzAwMDAKQEAgLTI1ODYsNyAr MjU4Niw2IEBACiAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzID0gdHZhbCAvIGh6OwogICB1bnNp Z25lZCBsb25nIGxvbmcgZnJhYyA9IHR2YWwgJSBoejsKICAgaW50IG5zOwotICBFTUFDU19U SU1FIHQ7CiAKICAgaWYgKFRZUEVfTUFYSU1VTSAodGltZV90KSA8IHMpCiAgICAgdGltZV9v dmVyZmxvdyAoKTsKQEAgLTI2MDMsOCArMjYwMiw3IEBACiAgICAgICBucyA9IGZyYWMgLyBo el9wZXJfbnM7CiAgICAgfQogCi0gIEVNQUNTX1NFVF9TRUNTX05TRUNTICh0LCBzLCBucyk7 Ci0gIHJldHVybiB0OworICByZXR1cm4gbWFrZV9lbWFjc190aW1lIChzLCBucyk7CiB9CiAK IHN0YXRpYyBMaXNwX09iamVjdApAQCAtMjYxOCw5ICsyNjE2LDcgQEAKIGdldF91cF90aW1l ICh2b2lkKQogewogICBGSUxFICpmdXA7Ci0gIEVNQUNTX1RJTUUgdXA7Ci0KLSAgRU1BQ1Nf U0VUX1NFQ1NfTlNFQ1MgKHVwLCAwLCAwKTsKKyAgRU1BQ1NfVElNRSB1cCA9IG1ha2VfZW1h Y3NfdGltZSAoMCwgMCk7CiAKICAgQkxPQ0tfSU5QVVQ7CiAgIGZ1cCA9IGZvcGVuICgiL3By b2MvdXB0aW1lIiwgInIiKTsKQEAgLTI2NDksNyArMjY0NSw3IEBACiAJCXVwZnJhYyAvPSAx MDsKIAkgICAgICB1cGZyYWMgPSBtaW4gKHVwZnJhYywgRU1BQ1NfVElNRV9SRVNPTFVUSU9O IC0gMSk7CiAJICAgIH0KLQkgIEVNQUNTX1NFVF9TRUNTX05TRUNTICh1cCwgdXBzZWMsIHVw ZnJhYyk7CisJICB1cCA9IG1ha2VfZW1hY3NfdGltZSAodXBzZWMsIHVwZnJhYyk7CiAJfQog ICAgICAgZmNsb3NlIChmdXApOwogICAgIH0KQEAgLTI4NzcsMTUgKzI4NzMsMTUgQEAKIAkg IGF0dHJzID0gRmNvbnMgKEZjb25zIChRcHJpLCBtYWtlX251bWJlciAocHJpb3JpdHkpKSwg YXR0cnMpOwogCSAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFFuaWNlLCBtYWtlX251bWJlciAo bmljZW5lc3MpKSwgYXR0cnMpOwogCSAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFF0aGNvdW50 LCBtYWtlX2ZpeG51bV9vcl9mbG9hdCAodGhjb3VudF9laW50KSksIGF0dHJzKTsKLQkgIEVN QUNTX0dFVF9USU1FICh0bm93KTsKKwkgIHRub3cgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7 CiAJICB0ZWxhcHNlZCA9IGdldF91cF90aW1lICgpOwotCSAgRU1BQ1NfU1VCX1RJTUUgKHRi b290LCB0bm93LCB0ZWxhcHNlZCk7CisJICB0Ym9vdCA9IHN1Yl9lbWFjc190aW1lICh0bm93 LCB0ZWxhcHNlZCk7CiAJICB0c3RhcnQgPSB0aW1lX2Zyb21famlmZmllcyAoc3RhcnQsIGNs b2Nrc19wZXJfc2VjKTsKLQkgIEVNQUNTX0FERF9USU1FICh0c3RhcnQsIHRib290LCB0c3Rh cnQpOworCSAgdHN0YXJ0ID0gYWRkX2VtYWNzX3RpbWUgKHRib290LCB0c3RhcnQpOwogCSAg YXR0cnMgPSBGY29ucyAoRmNvbnMgKFFzdGFydCwgbWFrZV9saXNwX3RpbWUgKHRzdGFydCkp LCBhdHRycyk7CiAJICBhdHRycyA9IEZjb25zIChGY29ucyAoUXZzaXplLCBtYWtlX2ZpeG51 bV9vcl9mbG9hdCAodnNpemUvMTAyNCkpLCBhdHRycyk7CiAJICBhdHRycyA9IEZjb25zIChG Y29ucyAoUXJzcywgbWFrZV9maXhudW1fb3JfZmxvYXQgKDQqcnNzKSksIGF0dHJzKTsKLQkg IEVNQUNTX1NVQl9USU1FICh0ZWxhcHNlZCwgdG5vdywgdHN0YXJ0KTsKKwkgIHRlbGFwc2Vk ID0gc3ViX2VtYWNzX3RpbWUgKHRub3csIHRzdGFydCk7CiAJICBhdHRycyA9IEZjb25zIChG Y29ucyAoUWV0aW1lLCBtYWtlX2xpc3BfdGltZSAodGVsYXBzZWQpKSwgYXR0cnMpOwogCSAg dXNfdGltZSA9IHRpbWVfZnJvbV9qaWZmaWVzICh1X3RpbWUgKyBzX3RpbWUsIGNsb2Nrc19w ZXJfc2VjKTsKIAkgIHBjcHUgPSAoRU1BQ1NfVElNRV9UT19ET1VCTEUgKHVzX3RpbWUpCkBA IC0zMTA5LDkgKzMxMDUsNyBAQAogc3RhdGljIEVNQUNTX1RJTUUKIHRpbWV2YWxfdG9fRU1B Q1NfVElNRSAoc3RydWN0IHRpbWV2YWwgdCkKIHsKLSAgRU1BQ1NfVElNRSBlOwotICBFTUFD U19TRVRfU0VDU19OU0VDUyAoZSwgdC50dl9zZWMsIHQudHZfdXNlYyAqIDEwMDApOwotICBy ZXR1cm4gZTsKKyAgcmV0dXJuIG1ha2VfZW1hY3NfdGltZSAodC50dl9zZWMsIHQudHZfdXNl YyAqIDEwMDApOwogfQogCiBzdGF0aWMgTGlzcF9PYmplY3QKQEAgLTMyMTksOSArMzIxMyw4 IEBACiAJCSBhdHRycyk7CiAgIGF0dHJzID0gRmNvbnMgKEZjb25zIChRc3RpbWUsIG1ha2Vf bGlzcF90aW1ldmFsIChwcm9jLmtpX3J1c2FnZS5ydV9zdGltZSkpLAogCQkgYXR0cnMpOwot ICBFTUFDU19BRERfVElNRSAodCwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mu a2lfcnVzYWdlLnJ1X3V0aW1lKSwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mu a2lfcnVzYWdlLnJ1X3N0aW1lKSk7CisgIHQgPSBhZGRfZW1hY3NfdGltZSAodGltZXZhbF90 b19FTUFDU19USU1FIChwcm9jLmtpX3J1c2FnZS5ydV91dGltZSksCisJCSAgICAgIHRpbWV2 YWxfdG9fRU1BQ1NfVElNRSAocHJvYy5raV9ydXNhZ2UucnVfc3RpbWUpKTsKICAgYXR0cnMg PSBGY29ucyAoRmNvbnMgKFF0aW1lLCBtYWtlX2xpc3BfdGltZSAodCkpLCBhdHRycyk7CiAK ICAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFFjdXRpbWUsCkBAIC0zMjMwLDkgKzMyMjMsOCBA QAogICBhdHRycyA9IEZjb25zIChGY29ucyAoUWNzdGltZSwKIAkJCW1ha2VfbGlzcF90aW1l dmFsIChwcm9jLmtpX3J1c2FnZV9jaC5ydV91dGltZSkpLAogCQkgYXR0cnMpOwotICBFTUFD U19BRERfVElNRSAodCwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mua2lfcnVz YWdlX2NoLnJ1X3V0aW1lKSwKLQkJICB0aW1ldmFsX3RvX0VNQUNTX1RJTUUgKHByb2Mua2lf cnVzYWdlX2NoLnJ1X3N0aW1lKSk7CisgIHQgPSBhZGRfZW1hY3NfdGltZSAodGltZXZhbF90 b19FTUFDU19USU1FIChwcm9jLmtpX3J1c2FnZV9jaC5ydV91dGltZSksCisJCSAgICAgIHRp bWV2YWxfdG9fRU1BQ1NfVElNRSAocHJvYy5raV9ydXNhZ2VfY2gucnVfc3RpbWUpKTsKICAg YXR0cnMgPSBGY29ucyAoRmNvbnMgKFFjdGltZSwgbWFrZV9saXNwX3RpbWUgKHQpKSwgYXR0 cnMpOwogCiAgIGF0dHJzID0gRmNvbnMgKEZjb25zIChRdGhjb3VudCwgbWFrZV9maXhudW1f b3JfZmxvYXQgKHByb2Mua2lfbnVtdGhyZWFkcykpLApAQCAtMzI0NCw4ICszMjM2LDggQEAK ICAgYXR0cnMgPSBGY29ucyAoRmNvbnMgKFFyc3MsICAgbWFrZV9udW1iZXIgKHByb2Mua2lf cnNzaXplICogcGFnZXNpemUgPj4gMTApKSwKIAkJIGF0dHJzKTsKIAotICBFTUFDU19HRVRf VElNRSAobm93KTsKLSAgRU1BQ1NfU1VCX1RJTUUgKHQsIG5vdywgdGltZXZhbF90b19FTUFD U19USU1FIChwcm9jLmtpX3N0YXJ0KSk7CisgIG5vdyA9IGN1cnJlbnRfZW1hY3NfdGltZSAo KTsKKyAgdCA9IHN1Yl9lbWFjc190aW1lIChub3csIHRpbWV2YWxfdG9fRU1BQ1NfVElNRSAo cHJvYy5raV9zdGFydCkpOwogICBhdHRycyA9IEZjb25zIChGY29ucyAoUWV0aW1lLCBtYWtl X2xpc3BfdGltZSAodCkpLCBhdHRycyk7CiAKICAgbGVuID0gc2l6ZW9mIGZzY2FsZTsKCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvc3lzdGltZS5oJwotLS0gc3JjL3N5c3RpbWUuaAkyMDEy LTA3LTA3IDAxOjU3OjQyICswMDAwCisrKyBzcmMvc3lzdGltZS5oCTIwMTItMDctMDcgMDU6 MzQ6NTUgKzAwMDAKQEAgLTM5LDY0ICszOSw5MSBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lm ZGVmIFdJTkRPV1NOVAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CS8qIGZvciAnc3RydWN0IHRp bWV2YWwnICovCi0jZW5kaWYKIAwKLS8qIFRoZSB0eXBlIHRvIHVzZSB0byByZXByZXNlbnQg dGVtcG9yYWwgaW50ZXJ2YWxzLiAgSXQgY2FuIGJlIHBhc3NlZAorLyogVGhlIHR5cGUgdG8g dXNlIHRvIHJlcHJlc2VudCB0ZW1wb3JhbCBpbnRlcnZhbHMuICBJdHMgYWRkcmVzcyBjYW4g YmUgcGFzc2VkCiAgICBhcyB0aGUgdGltZW91dCBhcmd1bWVudCB0byB0aGUgcHNlbGVjdCBz eXN0ZW0gY2FsbC4gICovCi0jZGVmaW5lIEVNQUNTX1RJTUUgc3RydWN0IHRpbWVzcGVjCit0 eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyBFTUFDU19USU1FOwogCiAvKiBSZXNvbHV0aW9uIG9m IEVNQUNTX1RJTUUgdGltZSBzdGFtcHMgKGluIHVuaXRzIHBlciBzZWNvbmQpLCBhbmQgbG9n CiAgICBiYXNlIDEwIG9mIHRoZSByZXNvbHV0aW9uLiAgVGhlIGxvZyBtdXN0IGJlIGEgcG9z aXRpdmUgaW50ZWdlci4gICovCi0jZGVmaW5lIEVNQUNTX1RJTUVfUkVTT0xVVElPTgkJMTAw MDAwMDAwMAotI2RlZmluZSBMT0cxMF9FTUFDU19USU1FX1JFU09MVVRJT04JOQotCi0vKiBF TUFDU19TRUNTIChUSU1FKSBpcyBhbiBydmFsdWUgZm9yIHRoZSBzZWNvbmRzIGNvbXBvbmVu dCBvZiBUSU1FLgotICAgRU1BQ1NfU0VDU19BRERSICh0aW1lKSBpcyB0aGUgYWRkcmVzcyBv ZiB0aGUgc2Vjb25kcyBjb21wb25lbnQuCi0gICBFTUFDU19TRVRfU0VDUyAoVElNRSwgU0VD T05EUykgc2V0cyB0aGF0IHRvIFNFQ09ORFMuCi0KLSAgIEVNQUNTX05TRUNTIChUSU1FKSBp cyBhbiBydmFsdWUgZm9yIHRoZSBuYW5vc2Vjb25kcyBjb21wb25lbnQgb2YgVElNRS4KLSAg IEVNQUNTX1NFVF9OU0VDUyAoVElNRSwgTkFOT1NFQ09ORFMpIHNldHMgdGhhdCB0byBOQU5P U0VDT05EUy4KLQotICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKFRJTUUsIFNFQ1MsIE5TRUNT KSBzZXRzIGJvdGggY29tcG9uZW50cyBvZiBUSU1FLiAgKi8KLSNkZWZpbmUgRU1BQ1NfU0VD Uyh0aW1lKQkJICAgICgodGltZSkudHZfc2VjICArIDApCi0jZGVmaW5lIEVNQUNTX05TRUNT KHRpbWUpCQkgICAgKCh0aW1lKS50dl9uc2VjICsgMCkKLSNkZWZpbmUgRU1BQ1NfU0VDU19B RERSKHRpbWUpCQkgICAgKCYodGltZSkudHZfc2VjKQotI2RlZmluZSBFTUFDU19TRVRfU0VD Uyh0aW1lLCBzZWNvbmRzKQkgICAgKCh0aW1lKS50dl9zZWMgID0gKHNlY29uZHMpKQotI2Rl ZmluZSBFTUFDU19TRVRfTlNFQ1ModGltZSwgbnMpCSAgICAoKHRpbWUpLnR2X25zZWMgPSAo bnMpKQotI2RlZmluZSBFTUFDU19TRVRfU0VDU19OU0VDUyh0aW1lLCBzLCBucykJCQkJXAot ICAoKHZvaWQpIChFTUFDU19TRVRfU0VDUyAodGltZSwgcyksIEVNQUNTX1NFVF9OU0VDUyAo dGltZSwgbnMpKSkKLQotLyogQ29udmVuaWVuY2UgbWFjcm9zIGZvciBvbGRlciBjb2RlIHRo YXQgY291bnRzIG1pY3Jvc2Vjb25kcy4gICovCi0jZGVmaW5lIEVNQUNTX1NFVF9VU0VDUyh0 aW1lLCB1cykgICgodm9pZCkgRU1BQ1NfU0VUX05TRUNTICh0aW1lLCAodXMpICogMTAwMCkp Ci0jZGVmaW5lIEVNQUNTX1NFVF9TRUNTX1VTRUNTKHRpbWUsIHNlY3MsIHVzZWNzKSAJCVwK LSAgKEVNQUNTX1NFVF9TRUNTICh0aW1lLCBzZWNzKSwgRU1BQ1NfU0VUX1VTRUNTICh0aW1l LCB1c2VjcykpCi0KLS8qIFNldCBUSU1FIHRvIGFuIGludmFsaWQgdGltZSBzdGFtcC4gICov Ci0jZGVmaW5lIEVNQUNTX1NFVF9JTlZBTElEX1RJTUUodGltZSkJICAgIEVNQUNTX1NFVF9T RUNTX05TRUNTKHRpbWUsIDAsIC0xKQotCi0vKiBTZXQgVElNRSB0byB0aGUgY3VycmVudCBz eXN0ZW0gdGltZS4gICovCi0jZGVmaW5lIEVNQUNTX0dFVF9USU1FKHRpbWUpCQkgICAgZ2V0 dGltZSAoJih0aW1lKSkKLQotLyogUHV0IGludG8gREVTVCB0aGUgcmVzdWx0IG9mIGFkZGlu ZyBTUkMxIHRvIFNSQzIsIG9yIG9mIHN1YnRyYWN0aW5nCi0gICBTUkMyIGZyb20gU1JDMS4g IE9uIG92ZXJmbG93LCBzdG9yZSBhbiBleHRyZW1hbCB2YWx1ZS4gICovCi0jZGVmaW5lIEVN QUNTX0FERF9USU1FKGRlc3QsIHNyYzEsIHNyYzIpICgoZGVzdCkgPSB0aW1lc3BlY19hZGQg KHNyYzEsIHNyYzIpKQotI2RlZmluZSBFTUFDU19TVUJfVElNRShkZXN0LCBzcmMxLCBzcmMy KSAoKGRlc3QpID0gdGltZXNwZWNfc3ViIChzcmMxLCBzcmMyKSkKK2VudW0geyBFTUFDU19U SU1FX1JFU09MVVRJT04gPSAxMDAwMDAwMDAwIH07CitlbnVtIHsgTE9HMTBfRU1BQ1NfVElN RV9SRVNPTFVUSU9OID0gOSB9OworCisvKiBFTUFDU19TRUNTIChUSU1FKSBpcyB0aGUgc2Vj b25kcyBjb21wb25lbnQgb2YgVElNRS4KKyAgIEVNQUNTX05TRUNTIChUSU1FKSBpcyB0aGUg bmFub3NlY29uZHMgY29tcG9uZW50IG9mIFRJTUUuCisgICBlbWFjc19zZWNzX2FkZHIgKFBU SU1FKSBpcyB0aGUgYWRkcmVzcyBvZiAqUFRJTUUncyBzZWNvbmRzIGNvbXBvbmVudC4gICov CitzdGF0aWMgaW5saW5lIHRpbWVfdCBFTUFDU19TRUNTIChFTUFDU19USU1FIHQpIHsgcmV0 dXJuIHQudHZfc2VjOyB9CitzdGF0aWMgaW5saW5lIGludCBFTUFDU19OU0VDUyAoRU1BQ1Nf VElNRSB0KSB7IHJldHVybiB0LnR2X25zZWM7IH0KK3N0YXRpYyBpbmxpbmUgdGltZV90ICpl bWFjc19zZWNzX2FkZHIgKEVNQUNTX1RJTUUgKnQpIHsgcmV0dXJuICZ0LT50dl9zZWM7IH0K KworLyogUmV0dXJuIGFuIEVtYWNzIHRpbWUgd2l0aCBzZWNvbmRzIFMgYW5kIG5hbm9zZWNv bmRzIE5TLiAgKi8KK3N0YXRpYyBpbmxpbmUgRU1BQ1NfVElNRQorbWFrZV9lbWFjc190aW1l ICh0aW1lX3QgcywgaW50IG5zKQoreworICBFTUFDU19USU1FIHIgPSB7IHMsIG5zIH07Cisg IHJldHVybiByOworfQorCisvKiBSZXR1cm4gYW4gaW52YWxpZCBFbWFjcyB0aW1lLiAgKi8K K3N0YXRpYyBpbmxpbmUgRU1BQ1NfVElNRQoraW52YWxpZF9lbWFjc190aW1lICh2b2lkKQor eworICBFTUFDU19USU1FIHIgPSB7IDAsIC0xIH07CisgIHJldHVybiByOworfQorCisvKiBS ZXR1cm4gY3VycmVudCBzeXN0ZW0gdGltZS4gICovCitzdGF0aWMgaW5saW5lIEVNQUNTX1RJ TUUKK2N1cnJlbnRfZW1hY3NfdGltZSAodm9pZCkKK3sKKyAgRU1BQ1NfVElNRSByOworICBn ZXR0aW1lICgmcik7CisgIHJldHVybiByOworfQorCisvKiBSZXR1cm4gdGhlIHJlc3VsdCBv ZiBhZGRpbmcgQSB0byBCLCBvciBvZiBzdWJ0cmFjdGluZyBCIGZyb20gQS4KKyAgIE9uIG92 ZXJmbG93LCByZXR1cm4gYW4gZXh0cmVtYWwgdmFsdWUuICAqLworc3RhdGljIGlubGluZSBF TUFDU19USU1FCithZGRfZW1hY3NfdGltZSAoRU1BQ1NfVElNRSBhLCBFTUFDU19USU1FIGIp Cit7CisgIHJldHVybiB0aW1lc3BlY19hZGQgKGEsIGIpOworfQorc3RhdGljIGlubGluZSBF TUFDU19USU1FCitzdWJfZW1hY3NfdGltZSAoRU1BQ1NfVElNRSBhLCBFTUFDU19USU1FIGIp Cit7CisgIHJldHVybiB0aW1lc3BlY19zdWIgKGEsIGIpOworfQogCiAvKiBSZXR1cm4gdGhl IHNpZ24gb2YgdGhlIHZhbGlkIHRpbWUgc3RhbXAgVElNRSwgZWl0aGVyIC0xLCAwLCBvciAx LiAgKi8KLSNkZWZpbmUgRU1BQ1NfVElNRV9TSUdOKHRpbWUpCQl0aW1lc3BlY19zaWduICh0 aW1lKQorc3RhdGljIGlubGluZSBpbnQKK0VNQUNTX1RJTUVfU0lHTiAoRU1BQ1NfVElNRSB0 KQoreworICByZXR1cm4gdGltZXNwZWNfc2lnbiAodCk7Cit9CiAKIC8qIFJldHVybiAxIGlm IFRJTUUgaXMgYSB2YWxpZCB0aW1lIHN0YW1wLiAgKi8KLSNkZWZpbmUgRU1BQ1NfVElNRV9W QUxJRF9QKHRpbWUpCSgwIDw9ICh0aW1lKS50dl9uc2VjKQorc3RhdGljIGlubGluZSBpbnQK K0VNQUNTX1RJTUVfVkFMSURfUCAoRU1BQ1NfVElNRSB0KQoreworICByZXR1cm4gMCA8PSB0 LnR2X25zZWM7Cit9CiAKIC8qIENvbnZlcnQgdGhlIGRvdWJsZSBEIHRvIHRoZSBncmVhdGVz dCBFTUFDU19USU1FIG5vdCBncmVhdGVyIHRoYW4gRC4KICAgIE9uIG92ZXJmbG93LCByZXR1 cm4gYW4gZXh0cmVtYWwgdmFsdWUuICBSZXR1cm4gdGhlIG1pbmltdW0KICAgIEVNQUNTX1RJ TUUgaWYgRCBpcyBub3QgYSBudW1iZXIuICAqLwotI2RlZmluZSBFTUFDU19USU1FX0ZST01f RE9VQkxFKGQpCWR0b3RpbWVzcGVjIChkKQorc3RhdGljIGlubGluZSBFTUFDU19USU1FCitF TUFDU19USU1FX0ZST01fRE9VQkxFIChkb3VibGUgZCkKK3sKKyAgcmV0dXJuIGR0b3RpbWVz cGVjIChkKTsKK30KIAogLyogQ29udmVydCB0aGUgRW1hY3MgdGltZSBUIHRvIGFuIGFwcHJv eGltYXRlIGRvdWJsZSB2YWx1ZSBELiAgKi8KLSNkZWZpbmUgRU1BQ1NfVElNRV9UT19ET1VC TEUodCkJCXRpbWVzcGVjdG9kICh0KQorc3RhdGljIGlubGluZSBkb3VibGUKK0VNQUNTX1RJ TUVfVE9fRE9VQkxFIChFTUFDU19USU1FIHQpCit7CisgIHJldHVybiB0aW1lc3BlY3RvZCAo dCk7Cit9CiAKIC8qIGRlZmluZWQgaW4gc3lzZGVwLmMgKi8KIGV4dGVybiBpbnQgc2V0X2Zp bGVfdGltZXMgKGludCwgY29uc3QgY2hhciAqLCBFTUFDU19USU1FLCBFTUFDU19USU1FKTsK QEAgLTExNywxMiArMTQ0LDM1IEBACiAjZW5kaWYKIAogLyogQ29tcGFyZSB0aW1lcyBUMSBh bmQgVDIgZm9yIGVxdWFsaXR5LCBpbmVxdWFsaXR5IGV0Yy4gICovCi0KLSNkZWZpbmUgRU1B Q1NfVElNRV9FUShUMSwgVDIpICh0aW1lc3BlY19jbXAgKFQxLCBUMikgPT0gMCkKLSNkZWZp bmUgRU1BQ1NfVElNRV9ORShUMSwgVDIpICh0aW1lc3BlY19jbXAgKFQxLCBUMikgIT0gMCkK LSNkZWZpbmUgRU1BQ1NfVElNRV9HVChUMSwgVDIpICh0aW1lc3BlY19jbXAgKFQxLCBUMikg PiAwKQotI2RlZmluZSBFTUFDU19USU1FX0dFKFQxLCBUMikgKHRpbWVzcGVjX2NtcCAoVDEs IFQyKSA+PSAwKQotI2RlZmluZSBFTUFDU19USU1FX0xUKFQxLCBUMikgKHRpbWVzcGVjX2Nt cCAoVDEsIFQyKSA8IDApCi0jZGVmaW5lIEVNQUNTX1RJTUVfTEUoVDEsIFQyKSAodGltZXNw ZWNfY21wIChUMSwgVDIpIDw9IDApCitzdGF0aWMgaW5saW5lIGludAorRU1BQ1NfVElNRV9F USAoRU1BQ1NfVElNRSB0MSwgRU1BQ1NfVElNRSB0MikKK3sKKyAgcmV0dXJuIHRpbWVzcGVj X2NtcCAodDEsIHQyKSA9PSAwOworfQorc3RhdGljIGlubGluZSBpbnQKK0VNQUNTX1RJTUVf TkUgKEVNQUNTX1RJTUUgdDEsIEVNQUNTX1RJTUUgdDIpCit7CisgIHJldHVybiB0aW1lc3Bl Y19jbXAgKHQxLCB0MikgIT0gMDsKK30KK3N0YXRpYyBpbmxpbmUgaW50CitFTUFDU19USU1F X0dUIChFTUFDU19USU1FIHQxLCBFTUFDU19USU1FIHQyKQoreworICByZXR1cm4gdGltZXNw ZWNfY21wICh0MSwgdDIpID4gMDsKK30KK3N0YXRpYyBpbmxpbmUgaW50CitFTUFDU19USU1F X0dFIChFTUFDU19USU1FIHQxLCBFTUFDU19USU1FIHQyKQoreworICByZXR1cm4gdGltZXNw ZWNfY21wICh0MSwgdDIpID49IDA7Cit9CitzdGF0aWMgaW5saW5lIGludAorRU1BQ1NfVElN RV9MVCAoRU1BQ1NfVElNRSB0MSwgRU1BQ1NfVElNRSB0MikKK3sKKyAgcmV0dXJuIHRpbWVz cGVjX2NtcCAodDEsIHQyKSA8IDA7Cit9CitzdGF0aWMgaW5saW5lIGludAorRU1BQ1NfVElN RV9MRSAoRU1BQ1NfVElNRSB0MSwgRU1BQ1NfVElNRSB0MikKK3sKKyAgcmV0dXJuIHRpbWVz cGVjX2NtcCAodDEsIHQyKSA8PSAwOworfQogCiAjZW5kaWYgLyogRU1BQ1NfU1lTVElNRV9I ICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3VuZG8uYycKLS0tIHNyYy91bmRvLmMJMjAx Mi0wNy0wNyAwMTo1Nzo0MiArMDAwMAorKysgc3JjL3VuZG8uYwkyMDEyLTA3LTA3IDA0OjUz OjM4ICswMDAwCkBAIC01MTcsOSArNTE3LDkgQEAKIAkJICAgICAgJiYgQ09OU1AgKFhDRFIg KFhDRFIgKFhDRFIgKGNkcikpKSkKIAkJICAgICAgJiYgSU5URUdFUlAgKFhDQVIgKFhDRFIg KFhDRFIgKFhDRFIgKGNkcikpKSkpCiAJCSAgICAgICYmIFhJTlQgKFhDQVIgKFhDRFIgKFhD RFIgKFhDRFIgKGNkcikpKSkpIDwgMCkKLQkJICAgIEVNQUNTX1NFVF9TRUNTX05TRUNTCi0J CSAgICAgIChtb2RfdGltZSwgMCwKLQkJICAgICAgIFhJTlQgKFhDQVIgKFhDRFIgKFhDRFIg KFhDRFIgKGNkcikpKSkpIC8gMTAwMCk7CisJCSAgICBtb2RfdGltZSA9CisJCSAgICAgICht YWtlX2VtYWNzX3RpbWUKKwkJICAgICAgICgwLCBYSU5UIChYQ0FSIChYQ0RSIChYQ0RSIChY Q0RSIChjZHIpKSkpKSAvIDEwMDApKTsKIAkJICBlbHNlCiAJCSAgICBtb2RfdGltZSA9IGxp c3BfdGltZV9hcmd1bWVudCAoY2RyKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93MzIu YycKLS0tIHNyYy93MzIuYwkyMDEyLTA3LTA1IDA2OjMyOjQxICswMDAwCisrKyBzcmMvdzMy LmMJMjAxMi0wNy0wNyAwNDo1MzozOCArMDAwMApAQCAtMTk2OSw3ICsxOTY5LDcgQEAKICAg ICAgY2hhbmdlZC4gIFdlIGNvdWxkIGZpeCB0aGF0IGJ5IHVzaW5nIEdldFN5c3RlbVRpbWUg YW5kCiAgICAgIEdldFRpbWVab25lSW5mb3JtYXRpb24sIGJ1dCB0aGF0IGRvZXNuJ3Qgc2Vl bSBuZWNlc3NhcnksIHNpbmNlCiAgICAgIEVtYWNzIGFsd2F5cyBjYWxscyBnZXR0aW1lb2Zk YXkgd2l0aCB0aGUgMm5kIGFyZ3VtZW50IE5VTEwgKHNlZQotICAgICBFTUFDU19HRVRfVElN RSkuICAqLworICAgICBjdXJyZW50X2VtYWNzX3RpbWUpLiAgKi8KICAgaWYgKHR6KQogICAg IHsKICAgICAgIHR6LT50el9taW51dGVzd2VzdCA9IHRiLnRpbWV6b25lOwkvKiBtaW51dGVz IHdlc3Qgb2YgR3JlZW53aWNoICAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy94ZGlzcC5j JwotLS0gc3JjL3hkaXNwLmMJMjAxMi0wNy0wNyAxNjozNjowMiArMDAwMAorKysgc3JjL3hk aXNwLmMJMjAxMi0wNy0wNyAyMDowNDowMiArMDAwMApAQCAtMjkyNDIsMTQgKzI5MjQyLDE0 IEBACiAKICAgaWYgKElOVEVHRVJQIChWaG91cmdsYXNzX2RlbGF5KQogICAgICAgJiYgWElO VCAoVmhvdXJnbGFzc19kZWxheSkgPiAwKQotICAgIEVNQUNTX1NFVF9TRUNTX05TRUNTIChk ZWxheSwKLQkJCSAgbWluIChYSU5UIChWaG91cmdsYXNzX2RlbGF5KSwgVFlQRV9NQVhJTVVN ICh0aW1lX3QpKSwKLQkJCSAgMCk7CisgICAgZGVsYXkgPSBtYWtlX2VtYWNzX3RpbWUgKG1p biAoWElOVCAoVmhvdXJnbGFzc19kZWxheSksCisJCQkJICBUWVBFX01BWElNVU0gKHRpbWVf dCkpLAorCQkJICAgICAwKTsKICAgZWxzZSBpZiAoRkxPQVRQIChWaG91cmdsYXNzX2RlbGF5 KQogCSAgICYmIFhGTE9BVF9EQVRBIChWaG91cmdsYXNzX2RlbGF5KSA+IDApCiAgICAgZGVs YXkgPSBFTUFDU19USU1FX0ZST01fRE9VQkxFIChYRkxPQVRfREFUQSAoVmhvdXJnbGFzc19k ZWxheSkpOwogICBlbHNlCi0gICAgRU1BQ1NfU0VUX1NFQ1NfTlNFQ1MgKGRlbGF5LCBERUZB VUxUX0hPVVJHTEFTU19ERUxBWSwgMCk7CisgICAgZGVsYXkgPSBtYWtlX2VtYWNzX3RpbWUg KERFRkFVTFRfSE9VUkdMQVNTX0RFTEFZLCAwKTsKIAogICBob3VyZ2xhc3NfYXRpbWVyID0g c3RhcnRfYXRpbWVyIChBVElNRVJfUkVMQVRJVkUsIGRlbGF5LAogCQkJCSAgIHNob3dfaG91 cmdsYXNzLCBOVUxMKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMveGdzZWxlY3QuYycKLS0t IHNyYy94Z3NlbGVjdC5jCTIwMTItMDctMDUgMTg6MzU6NDggKzAwMDAKKysrIHNyYy94Z3Nl bGVjdC5jCTIwMTItMDctMDcgMDQ6NTM6MzggKzAwMDAKQEAgLTg4LDggKzg4LDggQEAKIAog ICBpZiAodG1vX2luX21pbGxpc2VjID49IDApCiAgICAgewotICAgICAgRU1BQ1NfU0VUX1NF Q1NfVVNFQ1MgKHRtbywgdG1vX2luX21pbGxpc2VjLzEwMDAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTAwMCAqICh0bW9faW5fbWlsbGlzZWMgJSAxMDAwKSk7CisgICAgICB0 bW8gPSBtYWtlX2VtYWNzX3RpbWUgKHRtb19pbl9taWxsaXNlYyAvIDEwMDAsCisJCQkgICAg IDEwMDAgKiAxMDAwICogKHRtb19pbl9taWxsaXNlYyAlIDEwMDApKTsKICAgICAgIGlmICgh dGltZW91dCB8fCBFTUFDU19USU1FX0xUICh0bW8sICp0aW1lb3V0KSkKIAl0bW9wID0gJnRt bzsKICAgICB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3h0ZXJtLmMnCi0tLSBzcmMveHRl cm0uYwkyMDEyLTA3LTA1IDE4OjM1OjQ4ICswMDAwCisrKyBzcmMveHRlcm0uYwkyMDEyLTA3 LTA3IDA0OjUzOjM4ICswMDAwCkBAIC0zMTY4LDI2ICszMTY4LDIyIEBACiAgICAgICB4X2Zs dXNoIChmKTsKIAogICAgICAgewotCUVNQUNTX1RJTUUgd2FrZXVwLCBkZWxheTsKLQotCUVN QUNTX0dFVF9USU1FICh3YWtldXApOwotCUVNQUNTX1NFVF9TRUNTX05TRUNTIChkZWxheSwg MCwgMTUwICogMTAwMCAqIDEwMDApOwotCUVNQUNTX0FERF9USU1FICh3YWtldXAsIHdha2V1 cCwgZGVsYXkpOworCUVNQUNTX1RJTUUgZGVsYXkgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIDE1 MCAqIDEwMDAgKiAxMDAwKTsKKwlFTUFDU19USU1FIHdha2V1cCA9IGFkZF9lbWFjc190aW1l IChjdXJyZW50X2VtYWNzX3RpbWUgKCksIGRlbGF5KTsKIAogCS8qIEtlZXAgd2FpdGluZyB1 bnRpbCBwYXN0IHRoZSB0aW1lIHdha2V1cCBvciBhbnkgaW5wdXQgZ2V0cwogCSAgIGF2YWls YWJsZS4gICovCiAJd2hpbGUgKCEgZGV0ZWN0X2lucHV0X3BlbmRpbmcgKCkpCiAJICB7Ci0J ICAgIEVNQUNTX1RJTUUgY3VycmVudCwgdGltZW91dDsKLQotCSAgICBFTUFDU19HRVRfVElN RSAoY3VycmVudCk7CisJICAgIEVNQUNTX1RJTUUgY3VycmVudCA9IGN1cnJlbnRfZW1hY3Nf dGltZSAoKTsKKwkgICAgRU1BQ1NfVElNRSB0aW1lb3V0OwogCiAJICAgIC8qIEJyZWFrIGlm IHJlc3VsdCB3b3VsZCBub3QgYmUgcG9zaXRpdmUuICAqLwogCSAgICBpZiAoRU1BQ1NfVElN RV9MRSAod2FrZXVwLCBjdXJyZW50KSkKIAkgICAgICBicmVhazsKIAogCSAgICAvKiBIb3cg bG9uZyBgc2VsZWN0JyBzaG91bGQgd2FpdC4gICovCi0JICAgIEVNQUNTX1NFVF9TRUNTX05T RUNTICh0aW1lb3V0LCAwLCAxMCAqIDEwMDAgKiAxMDAwKTsKKwkgICAgdGltZW91dCA9IG1h a2VfZW1hY3NfdGltZSAoMCwgMTAgKiAxMDAwICogMTAwMCk7CiAKIAkgICAgLyogVHJ5IHRv IHdhaXQgdGhhdCBsb25nLS1idXQgd2UgbWlnaHQgd2FrZSB1cCBzb29uZXIuICAqLwogCSAg ICBwc2VsZWN0ICgwLCBOVUxMLCBOVUxMLCBOVUxMLCAmdGltZW91dCwgTlVMTCk7CkBAIC04 ODEwLDkgKzg4MDYsOCBAQAogCiAgIC8qIFNldCB0aW1lb3V0IHRvIDAuMSBzZWNvbmQuICBI b3BlZnVsbHkgbm90IG5vdGljZWFibGUuCiAgICAgIE1heWJlIGl0IHNob3VsZCBiZSBjb25m aWd1cmFibGUuICAqLwotICBFTUFDU19TRVRfU0VDU19VU0VDUyAodG1vLCAwLCAxMDAwMDAp OwotICBFTUFDU19HRVRfVElNRSAodG1vX2F0KTsKLSAgRU1BQ1NfQUREX1RJTUUgKHRtb19h dCwgdG1vX2F0LCB0bW8pOworICB0bW8gPSBtYWtlX2VtYWNzX3RpbWUgKDAsIDEwMCAqIDEw MDAgKiAxMDAwKTsKKyAgdG1vX2F0ID0gYWRkX2VtYWNzX3RpbWUgKGN1cnJlbnRfZW1hY3Nf dGltZSAoKSwgdG1vKTsKIAogICB3aGlsZSAocGVuZGluZ19ldmVudF93YWl0LmV2ZW50dHlw ZSkKICAgICB7CkBAIC04ODI1LDExICs4ODIwLDExIEBACiAgICAgICBGRF9aRVJPICgmZmRz KTsKICAgICAgIEZEX1NFVCAoZmQsICZmZHMpOwogCi0gICAgICBFTUFDU19HRVRfVElNRSAo dGltZV9ub3cpOworICAgICAgdGltZV9ub3cgPSBjdXJyZW50X2VtYWNzX3RpbWUgKCk7CiAg ICAgICBpZiAoRU1BQ1NfVElNRV9MVCAodG1vX2F0LCB0aW1lX25vdykpCiAJYnJlYWs7CiAK LSAgICAgIEVNQUNTX1NVQl9USU1FICh0bW8sIHRtb19hdCwgdGltZV9ub3cpOworICAgICAg dG1vID0gc3ViX2VtYWNzX3RpbWUgKHRtb19hdCwgdGltZV9ub3cpOwogICAgICAgaWYgKHBz ZWxlY3QgKGZkICsgMSwgJmZkcywgTlVMTCwgTlVMTCwgJnRtbywgTlVMTCkgPT0gMCkKICAg ICAgICAgYnJlYWs7IC8qIFRpbWVvdXQgKi8KICAgICB9CkBAIC0xMDYwMiw5ICsxMDU5Nyw3 IEBACiAgIEJMT0NLX0lOUFVUOwogICBpZiAoIXhfdGltZW91dF9hdGltZXJfYWN0aXZhdGVk X2ZsYWcpCiAgICAgewotICAgICAgRU1BQ1NfVElNRSBpbnRlcnZhbDsKLQotICAgICAgRU1B Q1NfU0VUX1NFQ1NfVVNFQ1MgKGludGVydmFsLCAwLCAxMDAwMDApOworICAgICAgRU1BQ1Nf VElNRSBpbnRlcnZhbCA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMTAwICogMTAwMCAqIDEwMDAp OwogICAgICAgc3RhcnRfYXRpbWVyIChBVElNRVJfUkVMQVRJVkUsIGludGVydmFsLCB4X3By b2Nlc3NfdGltZW91dHMsIDApOwogICAgICAgeF90aW1lb3V0X2F0aW1lcl9hY3RpdmF0ZWRf ZmxhZyA9IDE7CiAgICAgfQo= --------------000705060609090203090308-- ------------=_1341963242-17224-1--