From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dedi548.your-server.de (dedi548.your-server.de [85.10.215.148]) by sourceware.org (Postfix) with ESMTPS id 7B3023858C50 for ; Mon, 1 Aug 2022 06:46:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7B3023858C50 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embedded-brains.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embedded-brains.de Received: from sslproxy02.your-server.de ([78.47.166.47]) by dedi548.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1oIPCb-000PXK-1D for libc-help@sourceware.org; Mon, 01 Aug 2022 08:46:57 +0200 Received: from [82.100.198.138] (helo=mail.embedded-brains.de) by sslproxy02.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oIPCb-000RAw-73 for libc-help@sourceware.org; Mon, 01 Aug 2022 08:46:57 +0200 Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id E200D48005B for ; Mon, 1 Aug 2022 08:46:56 +0200 (CEST) Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id PGvBiXSRUU1H for ; Mon, 1 Aug 2022 08:46:56 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 5B81248013E for ; Mon, 1 Aug 2022 08:46:56 +0200 (CEST) X-Virus-Scanned: amavisd-new at zimbra.eb.localhost Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id MNpc4tDvBz1l for ; Mon, 1 Aug 2022 08:46:56 +0200 (CEST) Received: from [10.10.171.6] (unknown [10.10.171.6]) by mail.embedded-brains.de (Postfix) with ESMTPSA id 278E648005B for ; Mon, 1 Aug 2022 08:46:56 +0200 (CEST) Content-Type: multipart/mixed; boundary="------------pc6Zod5J1TwB3LMP0RyxXTPw" Message-ID: Date: Tue, 2 Aug 2022 10:43:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Content-Language: en-US To: libc-help@sourceware.org From: Sebastian Huber Subject: pthread_mutex_timedlock() vs. clock_settime() X-Authenticated-Sender: smtp-embedded@poldinet.de X-Virus-Scanned: Clear (ClamAV 0.103.6/26615/Thu Jul 28 09:58:07 2022) X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, DATE_IN_FUTURE_24_48, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-help@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-help mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Aug 2022 06:47:02 -0000 This is a multi-part message in MIME format. --------------pc6Zod5J1TwB3LMP0RyxXTPw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hello, I use the attached test program to check several POSIX functions which=20 use an absolute CLOCK_REALTIME timeout. I noticed that the=20 pthread_mutex_timedlock() with clock_settime() test cases doesn't work=20 (it doesn't time out when the CLOCK_REALTIME is set past the time out=20 time point). The test case works for the other synchronization objects,=20 for example semaphores (sem_timedwait()) or condition variables=20 (pthread_cond_timedwait()). I am not sure if this is a problem with my=20 understanding of the POSIX standard, my test case implementation, or the=20 glibc/Linux version. I use Linux 5.3.18. --=20 embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.huber@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht M=C3=BCnchen Registernummer: HRB 157899 Vertretungsberechtigte Gesch=C3=A4ftsf=C3=BChrer: Peter Rasmussen, Thomas= D=C3=B6rfler Unsere Datenschutzerkl=C3=A4rung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/ --------------pc6Zod5J1TwB3LMP0RyxXTPw Content-Type: text/x-csrc; charset=UTF-8; name="init.c" Content-Disposition: attachment; filename="init.c" Content-Transfer-Encoding: base64 LyoKICogQ29weXJpZ2h0IChjKSAyMDE3IGVtYmVkZGVkIGJyYWlucyBHbWJILiAgQWxsIHJp Z2h0cyByZXNlcnZlZC4KICoKICogVGhlIGxpY2Vuc2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJt cyBmb3IgdGhpcyBmaWxlIG1heSBiZQogKiBmb3VuZCBpbiB0aGUgZmlsZSBMSUNFTlNFIGlu IHRoaXMgZGlzdHJpYnV0aW9uIG9yIGF0CiAqIGh0dHA6Ly93d3cucnRlbXMuY29tL2xpY2Vu c2UvTElDRU5TRS4KICovCgovKgogKiBUaGlzIHRlc3QgcHJvZ3JhbSBydW5zIGFsc28gb24g R05VL0xpbnV4LiAgVXNlCiAqCiAqIGNjIGluaXQuYyAtcHRocmVhZCAtV2FsbCAtV2V4dHJh IC1scnQgJiYgc3VkbyAuL2Eub3V0CiAqCiAqIHRvIHJ1biBpdC4gIEl0IG11c3QgcnVuIHBy b2JhYmx5IGFzIHJvb3QgZm9yIHRoZSBjbG9ja19zZXR0aW1lKCkuCiAqLwoKI2lmZGVmIEhB VkVfQ09ORklHX0gKI2luY2x1ZGUgImNvbmZpZy5oIgojZW5kaWYKCiNpbmNsdWRlIDxzeXMv c3RhdC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRl IDxpbnR0eXBlcy5oPgojaW5jbHVkZSA8bGltaXRzLmg+CiNpbmNsdWRlIDxtcXVldWUuaD4K I2luY2x1ZGUgPHB0aHJlYWQuaD4KI2luY2x1ZGUgPHNlbWFwaG9yZS5oPgojaW5jbHVkZSA8 c3RkYm9vbC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5j bHVkZSA8dGltZS5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgojaWZkZWYgX19ydGVtc19fCgoj aW5jbHVkZSAidG1hY3Jvcy5oIgoKI2Vsc2UgLyogX19ydGVtc19fICovCgojaW5jbHVkZSA8 YXNzZXJ0Lmg+CgojZGVmaW5lIHJ0ZW1zX3Rlc3RfYXNzZXJ0KHgpIGFzc2VydCh4KQoKI2Vu ZGlmIC8qIF9fcnRlbXNfXyAqLwoKc3RhdGljIHZvaWQgYXNzZXJ0X2Vubyhjb25zdCBjaGFy ICpoaW50LCBpbnQgZW5vLCBpbnQgZXhwZWN0ZWRfZW5vKQp7CiAgY29uc3QgY2hhciAqd2Fy bjsKCiAgaWYgKGVubyAhPSBleHBlY3RlZF9lbm8pIHsKICAgIHdhcm4gPSAiV0FSTklORzog IjsKICB9IGVsc2UgewogICAgd2FybiA9ICIiOwogIH0KCiAgcHJpbnRmKAogICAgIiVzJXM6 IGFjdHVhbCAnJXMnLCBleHBlY3RlZCAnJXMnXG4iLAogICAgd2FybiwKICAgIGhpbnQsCiAg ICBzdHJlcnJvcihlbm8pLAogICAgc3RyZXJyb3IoZXhwZWN0ZWRfZW5vKQogICk7CiNpZmRl ZiBfX3J0ZW1zX18KICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0gZXhwZWN0ZWRfZW5vKTsK I2VuZGlmIC8qIF9fcnRlbXNfXyAqLwp9CgpzdGF0aWMgdm9pZCBhc3NlcnRfcnYoY29uc3Qg Y2hhciAqaGludCwgaW50IHJ2LCBpbnQgZXhwZWN0ZWRfZW5vKQp7CiAgaW50IGVubzsKCiAg aWYgKHJ2ICE9IDApIHsKICAgIGVubyA9IGVycm5vOwogIH0gZWxzZSB7CiAgICBlbm8gPSAw OwogIH0KCiAgYXNzZXJ0X2VubyhoaW50LCBlbm8sIGV4cGVjdGVkX2Vubyk7Cn0KCnR5cGVk ZWYgc3RydWN0IHsKICBjaGFyIGRhdGE7Cn0gdGVzdF9tc2c7CgojZGVmaW5lIE1TR19DT1VO VCAxCgojZGVmaW5lIE1TR19TSVpFIHNpemVvZih0ZXN0X21zZykKCnR5cGVkZWYgc3RydWN0 IHsKICBpbnQgdmFsdWU7CiAgcHRocmVhZF9tdXRleF90IG10eDsKICBwdGhyZWFkX2NvbmRf dCBjbmQ7Cn0gZXZlbnQ7Cgp0eXBlZGVmIGVudW0gewogIEFDVElPTl9OT05FLAogIEFDVElP Tl9NVFhfTE9DSywKICBBQ1RJT05fQ05EX1dBSVQsCiAgQUNUSU9OX1JXX1JETE9DSywKICBB Q1RJT05fUldfV1JMT0NLLAogIEFDVElPTl9TRU1fV0FJVCwKICBBQ1RJT05fTVFfU0VORCwK ICBBQ1RJT05fTVFfUkVDViwKICBBQ1RJT05fQ0xPQ0tfTkFOT1NMRUVQLAogIEFDVElPTl9U RVJNSU5BVEUKfSB0ZXN0X2FjdGlvbjsKCnR5cGVkZWYgZW51bSB7CiAgTU9ERV9USU1FT1VU X0ZJTklURSwKICBNT0RFX1RJTUVPVVRfTkVHQVRJVkVfU0VDLAogIE1PREVfVElNRU9VVF9O RUdBVElWRV9OU0VDLAogIE1PREVfVElNRU9VVF9ORUdBVElWRV9TRUNfTlNFQywKICBNT0RF X1RJTUVPVVRfSFVHRV9OU0VDLAojaWZkZWYgX19ydGVtc19fCiAgTU9ERV9USU1FT1VUX05V TEwsCiNlbmRpZiAvKiBfX3J0ZW1zX18gKi8KICBNT0RFX1RJTUVPVVRfUFJBQ1RJQ0FMTFlf SU5GSU5JVEUsCiAgTU9ERV9DT1VOVAp9IHRlc3RfbW9kZTsKCnR5cGVkZWYgc3RydWN0IHsK ICB0ZXN0X21vZGUgbW9kZTsKICBwdGhyZWFkX3Qgd29ya2VyOwogIGV2ZW50IGFjdGlvbjsK ICBldmVudCBkb25lOwogIHB0aHJlYWRfbXV0ZXhfdCBtdHg7CiAgcHRocmVhZF9tdXRleF90 IG10eDI7CiAgcHRocmVhZF9jb25kX3QgY25kOwogIHB0aHJlYWRfcndsb2NrX3Qgcnc7CiAg c2VtX3Qgc2VtOwogIG1xZF90IG1xOwogIGludCBjb3VudGVyW0FDVElPTl9URVJNSU5BVEUg KyAxXTsKfSB0ZXN0X2NvbnRleHQ7CgpzdGF0aWMgdGVzdF9jb250ZXh0IHRlc3RfaW5zdGFu Y2U7CgpzdGF0aWMgdm9pZCBldmVudF9pbml0KGV2ZW50ICplKQp7CiAgaW50IGVubzsKCiAg ZW5vID0gcHRocmVhZF9tdXRleF9pbml0KCZlLT5tdHgsIE5VTEwpOwogIHJ0ZW1zX3Rlc3Rf YXNzZXJ0KGVubyA9PSAwKTsKCiAgZW5vID0gcHRocmVhZF9jb25kX2luaXQoJmUtPmNuZCwg TlVMTCk7CiAgcnRlbXNfdGVzdF9hc3NlcnQoZW5vID09IDApOwp9CgpzdGF0aWMgdm9pZCBl dmVudF9kZXN0cm95KGV2ZW50ICplKQp7CiAgaW50IGVubzsKCiAgZW5vID0gcHRocmVhZF9t dXRleF9kZXN0cm95KCZlLT5tdHgpOwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGVubyA9PSAwKTsK CiAgZW5vID0gcHRocmVhZF9jb25kX2Rlc3Ryb3koJmUtPmNuZCk7CiAgcnRlbXNfdGVzdF9h c3NlcnQoZW5vID09IDApOwp9CgpzdGF0aWMgdm9pZCBldmVudF9wb3N0KGV2ZW50ICplLCBp bnQgdmFsdWUpCnsKICBpbnQgZW5vOwoKICBlbm8gPSBwdGhyZWFkX211dGV4X2xvY2soJmUt Pm10eCk7CiAgcnRlbXNfdGVzdF9hc3NlcnQoZW5vID09IDApOwoKICBlLT52YWx1ZSA9IHZh bHVlOwoKICBlbm8gPSBwdGhyZWFkX2NvbmRfc2lnbmFsKCZlLT5jbmQpOwogIHJ0ZW1zX3Rl c3RfYXNzZXJ0KGVubyA9PSAwKTsKCiAgZW5vID0gcHRocmVhZF9tdXRleF91bmxvY2soJmUt Pm10eCk7CiAgcnRlbXNfdGVzdF9hc3NlcnQoZW5vID09IDApOwp9CgpzdGF0aWMgaW50IGV2 ZW50X2dldChldmVudCAqZSkKewogIGludCBlbm87CiAgaW50IHZhbHVlOwoKICBlbm8gPSBw dGhyZWFkX211dGV4X2xvY2soJmUtPm10eCk7CiAgcnRlbXNfdGVzdF9hc3NlcnQoZW5vID09 IDApOwoKICB3aGlsZSAodHJ1ZSkgewogICAgdmFsdWUgPSBlLT52YWx1ZTsKCiAgICBpZiAo dmFsdWUgIT0gMCkgewogICAgICBlLT52YWx1ZSA9IDA7CiAgICAgIGJyZWFrOwogICAgfQoK ICAgIGVubyA9IHB0aHJlYWRfY29uZF93YWl0KCZlLT5jbmQsICZlLT5tdHgpOwogICAgcnRl bXNfdGVzdF9hc3NlcnQoZW5vID09IDApOwogIH0KCiAgZW5vID0gcHRocmVhZF9tdXRleF91 bmxvY2soJmUtPm10eCk7CiAgcnRlbXNfdGVzdF9hc3NlcnQoZW5vID09IDApOwoKICByZXR1 cm4gdmFsdWU7Cn0KCnN0YXRpYyB2b2lkICp3b3JrZXIodm9pZCAqYXJnKQp7CiAgdGVzdF9j b250ZXh0ICpjdHg7CiAgdGVzdF9hY3Rpb24gYWN0aW9uOwogIHRlc3RfbW9kZSBtb2RlOwog IGludCBlbm87CiAgaW50IHVudXNlZDsKCiAgY3R4ID0gYXJnOwogIG1vZGUgPSBjdHgtPm1v ZGU7CgogIGVubyA9IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoUFRIUkVBRF9DQU5DRUxfRU5B QkxFLCAmdW51c2VkKTsKICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0gMCk7CgogIGVubyA9 IHB0aHJlYWRfc2V0Y2FuY2VsdHlwZShQVEhSRUFEX0NBTkNFTF9BU1lOQ0hST05PVVMsICZ1 bnVzZWQpOwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGVubyA9PSAwKTsKCiAgd2hpbGUgKChhY3Rp b24gPSBldmVudF9nZXQoJmN0eC0+YWN0aW9uKSkgIT0gQUNUSU9OX1RFUk1JTkFURSkgewog ICAgaW50IHJ2OwogICAgc3RydWN0IHRpbWVzcGVjIHRvX3N0b3JhZ2U7CiAgICBjb25zdCBz dHJ1Y3QgdGltZXNwZWMgKnRvOwogICAgaW50IGV4cGVjdGVkX2VubzsKICAgIHRlc3RfbXNn IG1zZzsKICAgIHVuc2lnbmVkIHByaW87CgogICAgc3dpdGNoIChtb2RlKSB7CiAgICAgIGNh c2UgTU9ERV9USU1FT1VUX0ZJTklURToKICAgICAgICBydiA9IGNsb2NrX2dldHRpbWUoQ0xP Q0tfUkVBTFRJTUUsICZ0b19zdG9yYWdlKTsKICAgICAgICBydGVtc190ZXN0X2Fzc2VydChy diA9PSAwKTsKCiAgICAgICAgdG9fc3RvcmFnZS50dl9zZWMgKz0gMzYwMDsKICAgICAgICB0 byA9ICZ0b19zdG9yYWdlOwogICAgICAgIGV4cGVjdGVkX2VubyA9IEVUSU1FRE9VVDsKICAg ICAgICBicmVhazsKICAgICAgY2FzZSBNT0RFX1RJTUVPVVRfTkVHQVRJVkVfU0VDOgogICAg ICAgIHRvX3N0b3JhZ2UudHZfc2VjID0gLTE7CiAgICAgICAgdG9fc3RvcmFnZS50dl9uc2Vj ID0gMTsKICAgICAgICB0byA9ICZ0b19zdG9yYWdlOwogICAgICAgIGV4cGVjdGVkX2VubyA9 IEVUSU1FRE9VVDsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBNT0RFX1RJTUVPVVRfTkVH QVRJVkVfTlNFQzoKICAgICAgICB0b19zdG9yYWdlLnR2X3NlYyA9IDE7CiAgICAgICAgdG9f c3RvcmFnZS50dl9uc2VjID0gLTE7CiAgICAgICAgdG8gPSAmdG9fc3RvcmFnZTsKICAgICAg ICBleHBlY3RlZF9lbm8gPSBFSU5WQUw7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgTU9E RV9USU1FT1VUX05FR0FUSVZFX1NFQ19OU0VDOgogICAgICAgIHRvX3N0b3JhZ2UudHZfc2Vj ID0gLTE7CiAgICAgICAgdG9fc3RvcmFnZS50dl9uc2VjID0gLTE7CiAgICAgICAgdG8gPSAm dG9fc3RvcmFnZTsKICAgICAgICBleHBlY3RlZF9lbm8gPSBFSU5WQUw7CiAgICAgICAgYnJl YWs7CiAgICAgIGNhc2UgTU9ERV9USU1FT1VUX0hVR0VfTlNFQzoKICAgICAgICB0b19zdG9y YWdlLnR2X3NlYyA9IDE7CiAgICAgICAgdG9fc3RvcmFnZS50dl9uc2VjID0gTE9OR19NQVg7 CiAgICAgICAgdG8gPSAmdG9fc3RvcmFnZTsKICAgICAgICBleHBlY3RlZF9lbm8gPSBFSU5W QUw7CiAgICAgICAgYnJlYWs7CiNpZmRlZiBfX3J0ZW1zX18KICAgICAgY2FzZSBNT0RFX1RJ TUVPVVRfTlVMTDoKICAgICAgICB0byA9IE5VTEw7CiAgICAgICAgZXhwZWN0ZWRfZW5vID0g RUlOVkFMOwogICAgICAgIGJyZWFrOwojZW5kaWYgLyogX19ydGVtc19fICovCiAgICAgIGNh c2UgTU9ERV9USU1FT1VUX1BSQUNUSUNBTExZX0lORklOSVRFOgogICAgICAgIHRvX3N0b3Jh Z2UudHZfc2VjID0gSU5UNjRfTUFYOwogICAgICAgIHRvX3N0b3JhZ2UudHZfbnNlYyA9IDk5 OTk5OTk5OTsKICAgICAgICB0byA9ICZ0b19zdG9yYWdlOwogICAgICAgIGV4cGVjdGVkX2Vu byA9IC0xOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHRvID0gTlVM TDsKICAgICAgICBleHBlY3RlZF9lbm8gPSAtMTsKICAgICAgICBydGVtc190ZXN0X2Fzc2Vy dCgwKTsKICAgICAgICBicmVhazsKICAgIH0KCiAgICBzd2l0Y2ggKGFjdGlvbikgewogICAg ICBjYXNlIEFDVElPTl9NVFhfTE9DSzoKICAgICAgICBwdXRzKCJwdGhyZWFkX211dGV4X3Rp bWVkbG9jayIpOwogICAgICAgIGVubyA9IHB0aHJlYWRfbXV0ZXhfdGltZWRsb2NrKCZjdHgt Pm10eCwgdG8pOwogICAgICAgIGFzc2VydF9lbm8oInB0aHJlYWRfbXV0ZXhfdGltZWRsb2Nr IiwgZW5vLCBleHBlY3RlZF9lbm8pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEFDVElP Tl9DTkRfV0FJVDoKICAgICAgICBlbm8gPSBwdGhyZWFkX211dGV4X2xvY2soJmN0eC0+bXR4 Mik7CiAgICAgICAgcnRlbXNfdGVzdF9hc3NlcnQoZW5vID09IDApOwoKICAgICAgICBwdXRz KCJwdGhyZWFkX2NvbmRfdGltZWR3YWl0Iik7CiAgICAgICAgZW5vID0gcHRocmVhZF9jb25k X3RpbWVkd2FpdCgmY3R4LT5jbmQsICZjdHgtPm10eDIsIHRvKTsKICAgICAgICBhc3NlcnRf ZW5vKCJwdGhyZWFkX2NvbmRfdGltZWR3YWl0IiwgZW5vLCBleHBlY3RlZF9lbm8pOwoKICAg ICAgICBlbm8gPSBwdGhyZWFkX211dGV4X3VubG9jaygmY3R4LT5tdHgyKTsKICAgICAgICBy dGVtc190ZXN0X2Fzc2VydChlbm8gPT0gMCk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2Ug QUNUSU9OX1JXX1JETE9DSzoKICAgICAgICBwdXRzKCJwdGhyZWFkX3J3bG9ja190aW1lZHJk bG9jayIpOwogICAgICAgIGVubyA9IHB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrKCZjdHgt PnJ3LCB0byk7CiAgICAgICAgYXNzZXJ0X2VubygicHRocmVhZF9yd2xvY2tfdGltZWRyZGxv Y2siLCBlbm8sIGV4cGVjdGVkX2Vubyk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgQUNU SU9OX1JXX1dSTE9DSzoKICAgICAgICBwdXRzKCJwdGhyZWFkX3J3bG9ja190aW1lZHdybG9j ayIpOwogICAgICAgIGVubyA9IHB0aHJlYWRfcndsb2NrX3RpbWVkd3Jsb2NrKCZjdHgtPnJ3 LCB0byk7CiAgICAgICAgYXNzZXJ0X2VubygicHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2si LCBlbm8sIGV4cGVjdGVkX2Vubyk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgQUNUSU9O X1NFTV9XQUlUOgogICAgICAgIHB1dHMoInNlbV90aW1lZHdhaXQiKTsKICAgICAgICBlcnJu byA9IDA7CiAgICAgICAgcnYgPSBzZW1fdGltZWR3YWl0KCZjdHgtPnNlbSwgdG8pOwogICAg ICAgIGFzc2VydF9ydigic2VtX3RpbWVkd2FpdCIsIHJ2LCBleHBlY3RlZF9lbm8pOwogICAg ICAgIGJyZWFrOwogICAgICBjYXNlIEFDVElPTl9NUV9TRU5EOgogICAgICAgIHB1dHMoIm1x X3NlbmQiKTsKICAgICAgICBtc2cuZGF0YSA9IDEzOwogICAgICAgIHJ2ID0gbXFfc2VuZChj dHgtPm1xLCAmbXNnLmRhdGEsIHNpemVvZihtc2cpLCA3KTsKICAgICAgICBydGVtc190ZXN0 X2Fzc2VydChydiA9PSAwKTsKICAgICAgICBwdXRzKCJtcV90aW1lZHNlbmQiKTsKICAgICAg ICBtc2cuZGF0YSA9IDMxOwogICAgICAgIGVycm5vID0gMDsKICAgICAgICBydiA9IG1xX3Rp bWVkc2VuZChjdHgtPm1xLCAmbXNnLmRhdGEsIHNpemVvZihtc2cpLCA1LCB0byk7CiAgICAg ICAgYXNzZXJ0X3J2KCJtcV90aW1lZHNlbmQiLCBydiwgZXhwZWN0ZWRfZW5vKTsKICAgICAg ICBicmVhazsKICAgICAgY2FzZSBBQ1RJT05fTVFfUkVDVjoKICAgICAgICBwdXRzKCJtcV9y ZWNlaXZlIik7CiAgICAgICAgbXNnLmRhdGEgPSAwOwogICAgICAgIHByaW8gPSAwOwogICAg ICAgIHJ2ID0gbXFfcmVjZWl2ZShjdHgtPm1xLCAmbXNnLmRhdGEsIHNpemVvZihtc2cpLCAm cHJpbyk7CiAgICAgICAgcnRlbXNfdGVzdF9hc3NlcnQocnYgPT0gMSk7CiAgICAgICAgcnRl bXNfdGVzdF9hc3NlcnQobXNnLmRhdGEgPT0gMTMpOwogICAgICAgIHJ0ZW1zX3Rlc3RfYXNz ZXJ0KHByaW8gPT0gNyk7CiAgICAgICAgcHV0cygibXFfdGltZWRyZWNlaXZlIik7CiAgICAg ICAgbXNnLmRhdGEgPSAwOwogICAgICAgIHByaW8gPSAwOwogICAgICAgIGVycm5vID0gMDsK ICAgICAgICBydiA9IG1xX3RpbWVkcmVjZWl2ZShjdHgtPm1xLCAmbXNnLmRhdGEsIHNpemVv Zihtc2cpLCAmcHJpbywgdG8pOwogICAgICAgIGFzc2VydF9ydigibXFfdGltZWRyZWNlaXZl IiwgcnYsIGV4cGVjdGVkX2Vubyk7CiAgICAgICAgcnRlbXNfdGVzdF9hc3NlcnQobXNnLmRh dGEgPT0gMCk7CiAgICAgICAgcnRlbXNfdGVzdF9hc3NlcnQocHJpbyA9PSAwKTsKICAgICAg ICBicmVhazsKICAgICAgY2FzZSBBQ1RJT05fQ0xPQ0tfTkFOT1NMRUVQOgogICAgICAgIHB1 dHMoImNsb2NrX25hbm9zbGVlcCIpOwogICAgICAgIHJ2ID0gY2xvY2tfbmFub3NsZWVwKENM T0NLX1JFQUxUSU1FLCBUSU1FUl9BQlNUSU1FLCB0bywgTlVMTCk7CgogICAgICAgIGlmIChl eHBlY3RlZF9lbm8gPT0gRVRJTUVET1VUKSB7CiAgICAgICAgICBhc3NlcnRfcnYoImNsb2Nr X25hbm9zbGVlcCIsIHJ2LCAwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYXNzZXJ0 X3J2KCJjbG9ja19uYW5vc2xlZXAiLCBydiwgZXhwZWN0ZWRfZW5vKTsKICAgICAgICB9CiAg ICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgcnRlbXNfdGVzdF9hc3NlcnQo MCk7CiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgKytjdHgtPmNvdW50ZXJbYWN0aW9uXTsK CiAgICBldmVudF9wb3N0KCZjdHgtPmRvbmUsIDEpOwogIH0KCiAgcmV0dXJuIGN0eDsKfQoK c3RhdGljIHZvaWQgZGVsYXkodm9pZCkKewogIGludCBydjsKCiAgcnYgPSBzbGVlcCgxKTsK ICBydGVtc190ZXN0X2Fzc2VydChydiA9PSAwKTsKfQoKc3RhdGljIHZvaWQgcnVuKAogIHRl c3RfY29udGV4dCAqY3R4LAogIGNvbnN0IGNoYXIgKnRlc3QsCiAgdGVzdF9tb2RlIG1vZGUs CiAgdm9pZCAoKmYpKHZvaWQpCikKewogIHRlc3RfYWN0aW9uIGFjdGlvbjsKICBpbnQgZW5v OwogIHZvaWQgKnN0YXR1czsKCiAgcHJpbnRmKCIqKiogJXMgKioqXG4iLCB0ZXN0KTsKICBj dHgtPm1vZGUgPSBtb2RlOwoKICBlbm8gPSBwdGhyZWFkX2NyZWF0ZSgmY3R4LT53b3JrZXIs IE5VTEwsIHdvcmtlciwgY3R4KTsKICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0gMCk7Cgog IGZvciAoYWN0aW9uID0gQUNUSU9OX01UWF9MT0NLOyBhY3Rpb24gPCBBQ1RJT05fVEVSTUlO QVRFOyArK2FjdGlvbikgewogICAgZXZlbnRfcG9zdCgmY3R4LT5hY3Rpb24sIGFjdGlvbik7 CiAgICBkZWxheSgpOwoKICAgIHB1dHMoIndha2UgdXAiKTsKICAgICgqZikoKTsKCiAgICBl dmVudF9nZXQoJmN0eC0+ZG9uZSk7CiAgfQoKICBldmVudF9wb3N0KCZjdHgtPmFjdGlvbiwg QUNUSU9OX1RFUk1JTkFURSk7CgogIHN0YXR1cyA9IE5VTEw7CiAgZW5vID0gcHRocmVhZF9q b2luKGN0eC0+d29ya2VyLCAmc3RhdHVzKTsKICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0g MCk7CiAgcnRlbXNfdGVzdF9hc3NlcnQoc3RhdHVzID09IGN0eCk7Cn0KCnN0YXRpYyB2b2lk IHRpbWVvdXRfZmluaXRlKHZvaWQpCnsKICBzdHJ1Y3QgdGltZXNwZWMgbm93OwogIGludCBy djsKCiAgcnYgPSBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmbm93KTsKICBydGVt c190ZXN0X2Fzc2VydChydiA9PSAwKTsKCiAgbm93LnR2X3NlYyArPSA3MjAwOwoKICBydiA9 IGNsb2NrX3NldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOwogIHJ0ZW1zX3Rlc3RfYXNz ZXJ0KHJ2ID09IDApOwp9CgpzdGF0aWMgdm9pZCB0ZXN0X3RpbWVvdXRfZmluaXRlKHRlc3Rf Y29udGV4dCAqY3R4KQp7CiAgcnVuKGN0eCwgInRpbWVvdXQgZmluaXRlIiwgTU9ERV9USU1F T1VUX0ZJTklURSwgdGltZW91dF9maW5pdGUpOwp9CgpzdGF0aWMgdm9pZCBkb19ub3RoaW5n KHZvaWQpCnsKICAvKiBEbyBub3RoaW5nICovCn0KCnN0YXRpYyB2b2lkIHRlc3RfdGltZW91 dF9uZWdhdGl2ZV9zZWModGVzdF9jb250ZXh0ICpjdHgpCnsKICBydW4oY3R4LCAidGltZW91 dCBuZWdhdGl2ZSBzZWMiLCBNT0RFX1RJTUVPVVRfTkVHQVRJVkVfU0VDLCBkb19ub3RoaW5n KTsKfQoKc3RhdGljIHZvaWQgdGVzdF90aW1lb3V0X25lZ2F0aXZlX25zZWModGVzdF9jb250 ZXh0ICpjdHgpCnsKICBydW4oY3R4LCAidGltb3V0IG5lZ2F0aXZlIG5zZWMiLCBNT0RFX1RJ TUVPVVRfTkVHQVRJVkVfTlNFQywgZG9fbm90aGluZyk7Cn0KCnN0YXRpYyB2b2lkIHRlc3Rf dGltZW91dF9uZWdhdGl2ZV9zZWNfbnNlYyh0ZXN0X2NvbnRleHQgKmN0eCkKewogIHJ1bigK ICAgIGN0eCwKICAgICJ0aW1vdXQgbmVnYXRpdmUgc2VjIGFuZCBuc2VjIiwKICAgIE1PREVf VElNRU9VVF9ORUdBVElWRV9TRUNfTlNFQywKICAgIGRvX25vdGhpbmcKICApOwp9CgpzdGF0 aWMgdm9pZCB0ZXN0X3RpbWVvdXRfaHVnZV9uc2VjKHRlc3RfY29udGV4dCAqY3R4KQp7CiAg cnVuKGN0eCwgInRpbW91dCBodWdlIG5zZWMiLCBNT0RFX1RJTUVPVVRfSFVHRV9OU0VDLCBk b19ub3RoaW5nKTsKfQoKI2lmZGVmIF9fcnRlbXNfXwpzdGF0aWMgdm9pZCB0ZXN0X3RpbWVv dXRfbnVsbCh0ZXN0X2NvbnRleHQgKmN0eCkKewogIHJ1bihjdHgsICJ0aW1lb3V0IE5VTEwi LCBNT0RFX1RJTUVPVVRfTlVMTCwgZG9fbm90aGluZyk7Cn0KI2VuZGlmIC8qIF9fcnRlbXNf XyAqLwoKc3RhdGljIHZvaWQgdGVzdF90aW1lb3V0X3ByYWN0aWNhbGx5X2luZmluaXRlKHRl c3RfY29udGV4dCAqY3R4KQp7CiAgdGVzdF9hY3Rpb24gYWN0aW9uOwogIGludCBlbm87Cgog IHB1dHMoIioqKiB0aW1lb3V0IHByYWN0aWNhbGx5IGluZmluaXRlICoqKiIpOwogIGN0eC0+ bW9kZSA9IE1PREVfVElNRU9VVF9QUkFDVElDQUxMWV9JTkZJTklURTsKCiAgZm9yIChhY3Rp b24gPSBBQ1RJT05fTVRYX0xPQ0s7IGFjdGlvbiA8IEFDVElPTl9URVJNSU5BVEU7ICsrYWN0 aW9uKSB7CiAgICB2b2lkICpzdGF0dXM7CgogICAgZW5vID0gcHRocmVhZF9jcmVhdGUoJmN0 eC0+d29ya2VyLCBOVUxMLCB3b3JrZXIsIGN0eCk7CiAgICBydGVtc190ZXN0X2Fzc2VydChl bm8gPT0gMCk7CgogICAgZXZlbnRfcG9zdCgmY3R4LT5hY3Rpb24sIGFjdGlvbik7CiAgICBk ZWxheSgpOwoKICAgIGVubyA9IHB0aHJlYWRfY2FuY2VsKGN0eC0+d29ya2VyKTsKICAgIHJ0 ZW1zX3Rlc3RfYXNzZXJ0KGVubyA9PSAwKTsKCiAgICBzdGF0dXMgPSBOVUxMOwogICAgZW5v ID0gcHRocmVhZF9qb2luKGN0eC0+d29ya2VyLCAmc3RhdHVzKTsKICAgIHJ0ZW1zX3Rlc3Rf YXNzZXJ0KGVubyA9PSAwKTsKICAgIHJ0ZW1zX3Rlc3RfYXNzZXJ0KHN0YXR1cyA9PSBQVEhS RUFEX0NBTkNFTEVEKTsKICB9Cn0KCnN0YXRpYyB2b2lkIHRlc3QodGVzdF9jb250ZXh0ICpj dHgpCnsKICB0ZXN0X2FjdGlvbiBhY3Rpb247CiAgaW50IGVubzsKICBpbnQgcnY7CiAgbW9k ZV90IG1vZGU7CiAgc3RydWN0IG1xX2F0dHIgbWE7CgogIGV2ZW50X2luaXQoJmN0eC0+YWN0 aW9uKTsKICBldmVudF9pbml0KCZjdHgtPmRvbmUpOwoKICBlbm8gPSBwdGhyZWFkX211dGV4 X2luaXQoJmN0eC0+bXR4LCBOVUxMKTsKICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0gMCk7 CgogIGVubyA9IHB0aHJlYWRfbXV0ZXhfbG9jaygmY3R4LT5tdHgpOwogIHJ0ZW1zX3Rlc3Rf YXNzZXJ0KGVubyA9PSAwKTsKCiAgZW5vID0gcHRocmVhZF9tdXRleF9pbml0KCZjdHgtPm10 eDIsIE5VTEwpOwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGVubyA9PSAwKTsKCiAgZW5vID0gcHRo cmVhZF9jb25kX2luaXQoJmN0eC0+Y25kLCBOVUxMKTsKICBydGVtc190ZXN0X2Fzc2VydChl bm8gPT0gMCk7CgogIGVubyA9IHB0aHJlYWRfcndsb2NrX2luaXQoJmN0eC0+cncsIE5VTEwp OwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGVubyA9PSAwKTsKCiAgZW5vID0gcHRocmVhZF9yd2xv Y2tfd3Jsb2NrKCZjdHgtPnJ3KTsKICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0gMCk7Cgog IHJ2ID0gc2VtX2luaXQoJmN0eC0+c2VtLCAwLCAwKTsKICBydGVtc190ZXN0X2Fzc2VydChy diA9PSAwKTsKCiAgbW9kZSA9IFNfSVJXWFUgfCBTX0lSV1hHIHwgU19JUldYTzsKICBtZW1z ZXQoJm1hLCAwLCBzaXplb2YobWEpKTsKICBtYS5tcV9tYXhtc2cgPSBNU0dfQ09VTlQ7CiAg bWEubXFfbXNnc2l6ZSA9IE1TR19TSVpFOwogIGN0eC0+bXEgPSBtcV9vcGVuKCIvbXEiLCBP X0NSRUFUIHwgT19SRFdSLCBtb2RlLCAmbWEpOwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGN0eC0+ bXEgIT0gKG1xZF90KSAtMSk7CgogIHRlc3RfdGltZW91dF9maW5pdGUoY3R4KTsKICB0ZXN0 X3RpbWVvdXRfbmVnYXRpdmVfc2VjKGN0eCk7CiAgdGVzdF90aW1lb3V0X25lZ2F0aXZlX25z ZWMoY3R4KTsKICB0ZXN0X3RpbWVvdXRfbmVnYXRpdmVfc2VjX25zZWMoY3R4KTsKICB0ZXN0 X3RpbWVvdXRfaHVnZV9uc2VjKGN0eCk7CiNpZmRlZiBfX3J0ZW1zX18KICB0ZXN0X3RpbWVv dXRfbnVsbChjdHgpOwojZW5kaWYgLyogX19ydGVtc19fICovCiAgdGVzdF90aW1lb3V0X3By YWN0aWNhbGx5X2luZmluaXRlKGN0eCk7CgogIGV2ZW50X2Rlc3Ryb3koJmN0eC0+YWN0aW9u KTsKICBldmVudF9kZXN0cm95KCZjdHgtPmRvbmUpOwoKICBlbm8gPSBwdGhyZWFkX211dGV4 X3VubG9jaygmY3R4LT5tdHgpOwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGVubyA9PSAwKTsKCiAg ZW5vID0gcHRocmVhZF9tdXRleF9kZXN0cm95KCZjdHgtPm10eCk7CiAgcnRlbXNfdGVzdF9h c3NlcnQoZW5vID09IDApOwoKICBlbm8gPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmN0eC0+ bXR4Mik7CiNpZmRlZiBfX3J0ZW1zX18KICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0gMCk7 CiNlbHNlIC8qIF9fcnRlbXNfXyAqLwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGVubyA9PSAwIHx8 IGVubyA9PSBFQlVTWSk7CiNlbmRpZiAvKiBfX3J0ZW1zX18gKi8KCiAgZW5vID0gcHRocmVh ZF9jb25kX2Rlc3Ryb3koJmN0eC0+Y25kKTsKICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0g MCk7CgogIGVubyA9IHB0aHJlYWRfcndsb2NrX3VubG9jaygmY3R4LT5ydyk7CiAgcnRlbXNf dGVzdF9hc3NlcnQoZW5vID09IDApOwoKICBlbm8gPSBwdGhyZWFkX3J3bG9ja19kZXN0cm95 KCZjdHgtPnJ3KTsKICBydGVtc190ZXN0X2Fzc2VydChlbm8gPT0gMCk7CgogIHJ2ID0gc2Vt X2Rlc3Ryb3koJmN0eC0+c2VtKTsKICBydGVtc190ZXN0X2Fzc2VydChydiA9PSAwKTsKCiAg cnYgPSBtcV9jbG9zZShjdHgtPm1xKTsKICBydGVtc190ZXN0X2Fzc2VydChydiA9PSAwKTsK CiAgcnYgPSBtcV91bmxpbmsoIi9tcSIpOwogIHJ0ZW1zX3Rlc3RfYXNzZXJ0KHJ2ID09IDAp OwoKICBmb3IgKGFjdGlvbiA9IEFDVElPTl9NVFhfTE9DSzsgYWN0aW9uIDwgQUNUSU9OX1RF Uk1JTkFURTsgKythY3Rpb24pIHsKICAgIHJ0ZW1zX3Rlc3RfYXNzZXJ0KGN0eC0+Y291bnRl clthY3Rpb25dID09IE1PREVfQ09VTlQgLSAxKTsKICB9Cn0KCiNpZmRlZiBfX3J0ZW1zX18K CmNvbnN0IGNoYXIgcnRlbXNfdGVzdF9uYW1lW10gPSAiUFNYQ0xPQ0tSRUFMVElNRSAxIjsK CnN0YXRpYyB2b2lkICpQT1NJWF9Jbml0KHZvaWQgKmFyZykKewogIFRFU1RfQkVHSU4oKTsK ICB0ZXN0KCZ0ZXN0X2luc3RhbmNlKTsKICBURVNUX0VORCgpOwogIHJ0ZW1zX3Rlc3RfZXhp dCgwKTsKfQoKI2RlZmluZSBDT05GSUdVUkVfQVBQTElDQVRJT05fTkVFRFNfQ0xPQ0tfRFJJ VkVSCiNkZWZpbmUgQ09ORklHVVJFX0FQUExJQ0FUSU9OX05FRURTX1NJTVBMRV9DT05TT0xF X0RSSVZFUgoKI2RlZmluZSBDT05GSUdVUkVfTUFYSU1VTV9QT1NJWF9USFJFQURTIDIKI2Rl ZmluZSBDT05GSUdVUkVfTUFYSU1VTV9QT1NJWF9NRVNTQUdFX1FVRVVFUyAxCgojZGVmaW5l IENPTkZJR1VSRV9QT1NJWF9JTklUX1RIUkVBRF9UQUJMRQoKI2RlZmluZSBDT05GSUdVUkVf SU5JVAoKI2luY2x1ZGUgPHJ0ZW1zL2NvbmZkZWZzLmg+CgojZWxzZSAvKiBfX3J0ZW1zX18g Ki8KCmludCBtYWluKHZvaWQpCnsKICB0ZXN0KCZ0ZXN0X2luc3RhbmNlKTsKICByZXR1cm4g MDsKfQoKI2VuZGlmIC8qIF9fcnRlbXNfXyAqLwo= --------------pc6Zod5J1TwB3LMP0RyxXTPw--