From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by vger.rutgers.edu id <971700-26836>; Sun, 12 Jul 1998 05:41:21 -0400 Received: from val3-133.abo.wanadoo.fr ([193.252.196.133]:61771 "EHLO lw2l.bnc.interdrome.fr" ident: "IDENT-NONSENSE") by vger.rutgers.edu with ESMTP id <971347-26836>; Sun, 12 Jul 1998 05:40:45 -0400 From: Andrew Derrick Balsa Reply-To: andrebalsa@altern.org To: linux-kernel@vger.rutgers.edu Date: Sun, 12 Jul 1998 12:54:25 +0200 X-Mailer: KMail [version 0.7.9] Content-Type: Multipart/Mixed; boundary="Boundary-=_XrJmOWFrxsjyBldbEFSArCBynEcd" Cc: Alan Cox , "C. Scott Ananian" , Rafael Reilova , Colin Plumb MIME-Version: 1.0 Message-Id: <98071212561206.00441@lw2l.bnc.interdrome.fr> Sender: owner-linux-kernel@vger.rutgers.edu --Boundary-=_XrJmOWFrxsjyBldbEFSArCBynEcd Content-Type: text/plain Content-Transfer-Encoding: 8bit The code itself: (drop-in replacement for time.c in 2.0.34) --------------------- Andrew D. Balsa andrebalsa@altern.org --Boundary-=_XrJmOWFrxsjyBldbEFSArCBynEcd Content-Type: text/x-c; name="time.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="time.c" LyoKICogIGxpbnV4L2FyY2gvaTM4Ni9rZXJuZWwvdGltZS5jCiAqCiAqICBDb3B5cmlnaHQgKEMp IDE5OTEsIDE5OTIsIDE5OTUgIExpbnVzIFRvcnZhbGRzCiAqCiAqIFRoaXMgZmlsZSBjb250YWlu cyB0aGUgUEMtc3BlY2lmaWMgdGltZSBoYW5kbGluZyBkZXRhaWxzOgogKiByZWFkaW5nIHRoZSBS VEMgYXQgYm9vdHVwLCBldGMuLgogKiAxOTk0LTA3LTAyICAgQWxhbiBNb2RyYQogKgkJZml4ZWQg c2V0X3J0Y19tbXNzLCBmaXhlZCB0aW1lLnllYXIgZm9yID49IDIwMDAsIG5ldyBta3RpbWUKICog MTk5NS0wMy0yNiAgIE1hcmt1cyBLdWhuCiAqICAgICAgCWZpeGVkIDUwMCBtcyBidWcgYXQgY2Fs bCB0byBzZXRfcnRjX21tc3MsIGZpeGVkIERTMTI4ODcKICogICAgICAJcHJlY2lzaW9uIENNT1Mg Y2xvY2sgdXBkYXRlCiAqIDE5OTYtMDUtMDMgICBJbmdvIE1vbG5hcgogKiAgICAgIAlmaXhlZCB0 aW1lIHdhcnBzIGluIGRvX1tzbG93fGZhc3RdX2dldHRpbWVvZmZzZXQoKQogKiAxOTk3LTA5LTEw CVVwZGF0ZWQgTlRQIGNvZGUgYWNjb3JkaW5nIHRvIHRlY2huaWNhbCBtZW1vcmFuZHVtIEphbiAn OTYKICoJCSJBIEtlcm5lbCBNb2RlbCBmb3IgUHJlY2lzaW9uIFRpbWVrZWVwaW5nIiBieSBEYXZl IE1pbGxzCiAqIDE5OTgtMDUtMjMJQy4gU2NvdHQgQW5hbmlhbiAmIEFuZHJldyBELiBCYWxzYQog KgkJTW9yZSByb2J1c3QgZG9fZmFzdF9nZXR0aW1lb2Zmc2V0KCkgYWxnb3JpdGhtIGltcGxlbWVu dGVkCiAqCQkod29ya3Mgd2l0aCBBUE0sIEN5cml4IDZ4ODZNWCBhbmQgQ2VudGF1ciBDNiksCiAq CQlkcmlmdC1wcm9vZiBwcmVjaXNpb24gVFNDIGNhbGlicmF0aW9uIG9uIGJvb3QuCiAqLwoKI2lu Y2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgojaW5jbHVkZSA8 bGludXgva2VybmVsLmg+CiNpbmNsdWRlIDxsaW51eC9wYXJhbS5oPgojaW5jbHVkZSA8bGludXgv c3RyaW5nLmg+CiNpbmNsdWRlIDxsaW51eC9tbS5oPgojaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+CiNpbmNsdWRlIDxsaW51eC90aW1lLmg+CiNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgoKI2lu Y2x1ZGUgPGFzbS9zZWdtZW50Lmg+CiNpbmNsdWRlIDxhc20vaW8uaD4KI2luY2x1ZGUgPGFzbS9p cnEuaD4KI2luY2x1ZGUgPGFzbS9kZWxheS5oPgoKI2luY2x1ZGUgPGxpbnV4L21jMTQ2ODE4cnRj Lmg+CiNpbmNsdWRlIDxsaW51eC90aW1leC5oPgojaW5jbHVkZSA8bGludXgvY29uZmlnLmg+Cgpl eHRlcm4gaW50IHNldHVwX3g4Nl9pcnEoaW50LCBzdHJ1Y3QgaXJxYWN0aW9uICopOwoKc3RhdGlj IHVuc2lnbmVkIGxvbmcgY3B1X2h6OwkvKiBEZXRlY3RlZCBhcyB3ZSBjYWxpYnJhdGUgdGhlIFRT QyAqLwoKc3RhdGljIHVuc2lnbmVkIGxvbmcgbGFzdF90c2NfbG93OyAvKiBsc2IgMzIgYml0cyBv ZiBUaW1lIFN0YW1wIENvdW50ZXIgKi8KCi8qIENhY2hlZCAqbXVsdGlwbGllciogdG8gY29udmVy dCBUU0MgY291bnRzIHRvIG1pY3Jvc2Vjb25kcy4KICogKHNlZSB0aGUgZXF1YXRpb24gYmVsb3cp LgogKiBFcXVhbCB0byAyXjMyICogKDEgLyAoY2xvY2tzIHBlciB1c2VjKSApLgogKiBJbml0aWFs aXplZCBpbiB0aW1lX2luaXQuCiAqLwpzdGF0aWMgdW5zaWduZWQgbG9uZyBmYXN0X2dldHRpbWVv ZmZzZXRfcXVvdGllbnQ9MDsKCnN0YXRpYyB1bnNpZ25lZCBsb25nIGRvX2Zhc3RfZ2V0dGltZW9m ZnNldCh2b2lkKQp7CglyZWdpc3RlciB1bnNpZ25lZCBsb25nIGVheCBhc20oImF4Iik7CglyZWdp c3RlciB1bnNpZ25lZCBsb25nIGVkeCBhc20oImR4Iik7CgoJLyogUmVhZCB0aGUgVGltZSBTdGFt cCBDb3VudGVyICovCglfX2FzbV9fKCIuYnl0ZSAweDBmLDB4MzEiCgkJOiI9YSIgKGVheCksICI9 ZCIgKGVkeCkpOwoKCS8qIC4uIHJlbGF0aXZlIHRvIHByZXZpb3VzIGppZmZ5ICgzMiBiaXRzIGlz IGVub3VnaCkgKi8KCWVkeCA9IDA7CgllYXggLT0gbGFzdF90c2NfbG93OwkvKiB0c2NfbG93IGRl bHRhICovCgoJLyoKICAgICAgICAgKiBUaW1lIG9mZnNldCA9ICh0c2NfbG93IGRlbHRhKSAqIGZh c3RfZ2V0dGltZW9mZnNldF9xdW90aWVudC4KICAgICAgICAgKiAgICAgICAgICAgICA9ICh0c2Nf bG93IGRlbHRhKSAvIChjbG9ja3NfcGVyX3VzZWMpCiAgICAgICAgICogICAgICAgICAgICAgPSAo dHNjX2xvdyBkZWx0YSkgLyAoY2xvY2tzX3Blcl9qaWZmeSAvIHVzZWNzX3Blcl9qaWZmeSkKCSAq CgkgKiBVc2luZyBhIG11bGwgaW5zdGVhZCBvZiBhIGRpdmwgc2F2ZXMgdXAgdG8gMzEgY2xvY2sg Y3ljbGVzCgkgKiBpbiB0aGUgY3JpdGljYWwgcGF0aC4KICAgICAgICAgKi8KCglfX2FzbV9fKCJt dWxsICUyIgoJCToiPWEiIChlYXgpLCAiPWQiIChlZHgpCgkJOiJyIiAoZmFzdF9nZXR0aW1lb2Zm c2V0X3F1b3RpZW50KSwKCQkgIjAiIChlYXgpLCAiMSIgKGVkeCkpOwoKCS8qCiAJICogRHVlIHRv IHJvdW5kaW5nIGVycm9ycyAoYW5kIGppZmZpZXMgaW5jb25zaXN0ZW5jaWVzKSwKCSAqIHdlIG5l ZWQgdG8gY2hlY2sgdGhlIHJlc3VsdCBzbyB0aGF0IHdlJ2xsIGdldCBhIHRpbWVyCgkgKiB0aGF0 IGlzIG1vbm90b25pYy4KCSAqCgkgKiBXZSBoYXZlIGEgcHJvYmxlbSBoZXJlLCBiZWNhdXNlIHRo aXMgc2hvdWxkIF9uZXZlcl8KCSAqIGhhcHBlbjogd2UgcmVhZCB0aGUgVFNDIGF0IGVhY2ggdGlt ZXIgaW50ZXJydXB0IGluCgkgKiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgKHNlZSBwZW50aXVtX3Rp bWVyX2ludGVycnVwdCBiZWxvdyksCgkgKiBub3QgaW4gdGhlIGJvdHRvbSBoYWxmIGhhbmRsZXIu CgkgKiBUaGUgcHJvYmxlbSBpcyB0aGF0IHNvbWUgZHJpdmVycyBtYXkgZGlzYWJsZSBpbnRlcnJ1 cHRzLAoJICogdGhlbiBkbyBhbGwgdGhlaXIgSS9PIHN0dWZmIHdoaWNoIHRha2VzIHNvbWUgdGlt ZSwKCSAqIGFuZCB0aGVuIGNhbGwgZ2V0dGltZW9mZGF5KCkgd2l0aG91dCByZXN0b3JpbmcgdGhl IAoJICogaW50ZXJydXB0cyBzdGF0dXMgYWdhaW4uCgkgKi8KCWlmIChlZHggPj0gMTAwMDAyMC9I WikKCQllZHggPSAxMDAwMDIwL0haLTE7CgkvKiBBdCB0aGlzIHBvaW50IHdlIGhvcGUgdGhhdCBn ZXR0aW1lb2ZkYXkoKQoJICogaXNuJ3QgY2FsbGVkIGFnYWluIGJlZm9yZSB0aGUgbmV4dAoJICog dGltZXIgaW50ZXJydXB0IHVwZGF0ZXMgbGFzdF90aW1lcl9jYwoJICogKHdlIHdvdWxkIGdldCB0 d2ljZSB0aGUgc2FtZSB0aW1lc3RhbXApLgoJICovCgoJcmV0dXJuIGVkeDsgLyogb3VyIHRpbWUg b2Zmc2V0IGluIG1pY3Jvc2Vjb25kcyAqLwp9CgovKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2Fs bGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCAKICogSXQgd2FzIGluc3BpcmVkIGJ5IFN0ZXZl IE1jQ2FubmUncyBtaWNyb3RpbWUtaTM4NiBmb3IgQlNELiAgLS0ganJzCiAqIAogKiBIb3dldmVy LCB0aGUgcGMtYXVkaW8gc3BlYWtlciBkcml2ZXIgY2hhbmdlcyB0aGUgZGl2aXNvciBzbyB0aGF0 CiAqIGl0IGdldHMgaW50ZXJydXB0ZWQgcmF0aGVyIG1vcmUgb2Z0ZW4gLSBpdCBsb2FkcyA2NCBp bnRvIHRoZQogKiBjb3VudGVyIHJhdGhlciB0aGFuIDExOTMyISBUaGlzIGhhcyBhbiBhZHZlcnNl IGltcGFjdCBvbgogKiBkb19nZXR0aW1lb2Zmc2V0KCkgLS0gaXQgc3RvcHMgd29ya2luZyEgV2hh dCBpcyBhbHNvIG5vdAogKiBnb29kIGlzIHRoYXQgdGhlIGludGVydmFsIHRoYXQgb3VyIHRpbWVy IGZ1bmN0aW9uIGdldHMgY2FsbGVkCiAqIGlzIG5vIGxvbmdlciAxMC4wMDAyIG1zLCBidXQgOS45 NzY3IG1zLiBUbyBnZXQgYXJvdW5kIHRoaXMKICogd291bGQgcmVxdWlyZSB1c2luZyBhIGRpZmZl cmVudCB0aW1pbmcgc291cmNlLiBNYXliZSBzb21lb25lCiAqIGNvdWxkIHVzZSB0aGUgUlRDIC0g SSBrbm93IHRoYXQgdGhpcyBjYW4gaW50ZXJydXB0IGF0IGZyZXF1ZW5jaWVzCiAqIHJhbmdpbmcg ZnJvbSA4MTkySHogdG8gMkh6LiBJZiBJIGhhZCB0aGUgZW5lcmd5LCBJJ2Qgc29tZWhvdyBmaXgK ICogaXQgc28gdGhhdCBhdCBzdGFydHVwLCB0aGUgdGltZXIgY29kZSBpbiBzY2hlZC5jIHdvdWxk IHNlbGVjdAogKiB1c2luZyBlaXRoZXIgdGhlIFJUQyBvciB0aGUgODI1MyB0aW1lci4gVGhlIGRl Y2lzaW9uIHdvdWxkIGJlCiAqIGJhc2VkIG9uIHdoZXRoZXIgdGhlcmUgd2FzIGFueSBvdGhlciBk ZXZpY2UgYXJvdW5kIHRoYXQgbmVlZGVkCiAqIHRvIHRyYW1wbGUgb24gdGhlIDgyNTMuIEknZCBz ZXQgdXAgdGhlIFJUQyB0byBpbnRlcnJ1cHQgYXQgMTAyNCBIeiwKICogYW5kIHRoZW4gZG8gc29t ZSBqaWdnZXJ5IHRvIGhhdmUgYSB2ZXJzaW9uIG9mIGRvX3RpbWVyIHRoYXQgCiAqIGFkdmFuY2Vk IHRoZSBjbG9jayBieSAxLzEwMjQgcy4gRXZlcnkgdGltZSB0aGF0IHJlYWNoZWQgb3ZlciAxLzEw MAogKiBvZiBhIHNlY29uZCwgdGhlbiBkbyBhbGwgdGhlIG9sZCBjb2RlLiBJZiB0aGUgdGltZSB3 YXMga2VwdCBjb3JyZWN0CiAqIHRoZW4gZG9fZ2V0dGltZW9mZnNldCBjb3VsZCBqdXN0IHJldHVy biAwIC0gdGhlcmUgaXMgbm8gbG93IG9yZGVyCiAqIGRpdmlkZXIgdGhhdCBjYW4gYmUgYWNjZXNz ZWQuCiAqCiAqIElkZWFsbHksIHlvdSB3b3VsZCBiZSBhYmxlIHRvIHVzZSB0aGUgUlRDIGZvciB0 aGUgc3BlYWtlciBkcml2ZXIsCiAqIGJ1dCBpdCBhcHBlYXJzIHRoYXQgdGhlIHNwZWFrZXIgZHJp dmVyIHJlYWxseSBuZWVkcyBpbnRlcnJ1cHQgbW9yZQogKiBvZnRlbiB0aGFuIGV2ZXJ5IDEyMCB1 cyBvciBzby4KICoKICogQW55d2F5LCB0aGlzIG5lZWRzIG1vcmUgdGhvdWdodC4uLi4JCXBqc2cg KDE5OTMtMDgtMjgpCiAqIAogKiBJZiB5b3UgYXJlIHJlYWxseSB0aGF0IGludGVyZXN0ZWQsIHlv dSBzaG91bGQgYmUgcmVhZGluZwogKiBjb21wLnByb3RvY29scy50aW1lLm50cCEKICovCgojZGVm aW5lIFRJQ0tfU0laRSB0aWNrCgpzdGF0aWMgdW5zaWduZWQgbG9uZyBkb19zbG93X2dldHRpbWVv ZmZzZXQodm9pZCkKewoJaW50IGNvdW50OwoJc3RhdGljIGludCBjb3VudF9wID0gMDsKCXVuc2ln bmVkIGxvbmcgb2Zmc2V0ID0gMDsKCXN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfcCA9IDA7 CgoJLyoKCSAqIGNhY2hlIHZvbGF0aWxlIGppZmZpZXMgdGVtcG9yYXJpbHk7IHdlIGhhdmUgSVJR cyB0dXJuZWQgb2ZmLiAKCSAqLwoJdW5zaWduZWQgbG9uZyBqaWZmaWVzX3Q7CgoJLyogdGltZXIg Y291bnQgbWF5IHVuZGVyZmxvdyByaWdodCBoZXJlICovCglvdXRiX3AoMHgwMCwgMHg0Myk7CS8q IGxhdGNoIHRoZSBjb3VudCBBU0FQICovCgljb3VudCA9IGluYl9wKDB4NDApOwkvKiByZWFkIHRo ZSBsYXRjaGVkIGNvdW50ICovCgljb3VudCB8PSBpbmIoMHg0MCkgPDwgODsKCiAJamlmZmllc190 ID0gamlmZmllczsKCgkvKgoJICogYXZvaWRpbmcgdGltZXIgaW5jb25zaXN0ZW5jaWVzICh0aGV5 IGFyZSByYXJlLCBidXQgdGhleSBoYXBwZW4pLi4uCgkgKiB0aGVyZSBhcmUgdGhyZWUga2luZHMg b2YgcHJvYmxlbXMgdGhhdCBtdXN0IGJlIGF2b2lkZWQgaGVyZToKCSAqICAxLiB0aGUgdGltZXIg Y291bnRlciB1bmRlcmZsb3dzCgkgKiAgMi4gaGFyZHdhcmUgcHJvYmxlbSB3aXRoIHRoZSB0aW1l ciwgbm90IGdpdmluZyB1cyBjb250aW51b3VzIHRpbWUsCgkgKiAgICAgdGhlIGNvdW50ZXIgZG9l cyBzbWFsbCAianVtcHMiIHVwd2FyZHMgb24gc29tZSBQZW50aXVtIHN5c3RlbXMsCgkgKiAgICAg dGh1cyBjYXVzZXMgdGltZSB3YXJwcwoJICogIDMuIHdlIGFyZSBhZnRlciB0aGUgdGltZXIgaW50 ZXJydXB0LCBidXQgdGhlIGJvdHRvbSBoYWxmIGhhbmRsZXIKCSAqICAgICBoYXNuJ3QgZXhlY3V0 ZWQgeWV0LgoJICovCglpZiggY291bnQgPiBjb3VudF9wICkgewoJCWlmKCBqaWZmaWVzX3QgPT0g amlmZmllc19wICkgewoJCQlpZiggY291bnQgPiBMQVRDSC1MQVRDSC8xMDAgKQoJCQkJb2Zmc2V0 ID0gVElDS19TSVpFOwoJCQllbHNlCgkJCQkvKgoJCQkJICogYXJnaCwgdGhlIHRpbWVyIGlzIGJ1 Z2dpbmcgd2UgY2FudCBkbyBub3RoaW5nIAoJCQkJICogYnV0IHRvIGdpdmUgdGhlIHByZXZpb3Vz IGNsb2NrIHZhbHVlLgoJCQkJICovCgkJCQljb3VudCA9IGNvdW50X3A7CgkJfSBlbHNlIHsKCQkJ aWYoIHRlc3RfYml0KFRJTUVSX0JILCAmYmhfYWN0aXZlKSApIHsKCQkJCS8qCgkJCQkgKiB3ZSBo YXZlIGRldGVjdGVkIGEgY291bnRlciB1bmRlcmZsb3cuCgkJCSAJICovCgkJCQlvZmZzZXQgPSBU SUNLX1NJWkU7CgkJCQljb3VudF9wID0gY291bnQ7CQkKCQkJfSBlbHNlIHsKCQkJCWNvdW50X3Ag PSBjb3VudDsKCQkJCWppZmZpZXNfcCA9IGppZmZpZXNfdDsKCQkJfQoJCX0KCX0gZWxzZSB7CgkJ Y291bnRfcCA9IGNvdW50OwoJCWppZmZpZXNfcCA9IGppZmZpZXNfdDsKIAl9CgoKCWNvdW50ID0g KChMQVRDSC0xKSAtIGNvdW50KSAqIFRJQ0tfU0laRTsKCWNvdW50ID0gKGNvdW50ICsgTEFUQ0gv MikgLyBMQVRDSDsKCglyZXR1cm4gb2Zmc2V0ICsgY291bnQ7Cn0KCnN0YXRpYyB1bnNpZ25lZCBs b25nICgqZG9fZ2V0dGltZW9mZnNldCkodm9pZCkgPSBkb19zbG93X2dldHRpbWVvZmZzZXQ7Cgov KgogKiBUaGlzIHZlcnNpb24gb2YgZ2V0dGltZW9mZGF5IGhhcyBtaWNyb3NlY29uZCByZXNvbHV0 aW9uCiAqIGFuZCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZCBwcmVjaXNpb24gb24gZmFzdCB4ODYg bWFjaGluZXMgd2l0aCBUU0MuCiAqLwp2b2lkIGRvX2dldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZh bCAqdHYpCnsKCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoJc2F2ZV9mbGFncyhmbGFncyk7CgljbGko KTsKCSp0diA9IHh0aW1lOwoJdHYtPnR2X3VzZWMgKz0gZG9fZ2V0dGltZW9mZnNldCgpOwoJaWYg KHR2LT50dl91c2VjID49IDEwMDAwMDApIHsKCQl0di0+dHZfdXNlYyAtPSAxMDAwMDAwOwoJCXR2 LT50dl9zZWMrKzsKCX0KCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOwp9Cgp2b2lkIGRvX3NldHRpbWVv ZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpCnsKCWNsaSgpOwoJLyogVGhpcyBpcyByZXZvbHRpbmcu IFdlIG5lZWQgdG8gc2V0IHRoZSB4dGltZS50dl91c2VjCgkgKiBjb3JyZWN0bHkuIEhvd2V2ZXIs IHRoZSB2YWx1ZSBpbiB0aGlzIGxvY2F0aW9uIGlzCgkgKiBpcyB2YWx1ZSBhdCB0aGUgbGFzdCB0 aWNrLgoJICogRGlzY292ZXIgd2hhdCBjb3JyZWN0aW9uIGdldHRpbWVvZmRheQoJICogd291bGQg aGF2ZSBkb25lLCBhbmQgdGhlbiB1bmRvIGl0IQoJICovCgl0di0+dHZfdXNlYyAtPSBkb19nZXR0 aW1lb2Zmc2V0KCk7CgoJaWYgKHR2LT50dl91c2VjIDwgMCkgewoJCXR2LT50dl91c2VjICs9IDEw MDAwMDA7CgkJdHYtPnR2X3NlYy0tOwoJfQoKCXh0aW1lID0gKnR2OwoJdGltZV9hZGp1c3QgPSAw OwkJLyogc3RvcCBhY3RpdmUgYWRqdGltZSgpICovCgl0aW1lX3N0YXR1cyB8PSBTVEFfVU5TWU5D OwoJdGltZV9zdGF0ZSA9IFRJTUVfRVJST1I7CS8qIHAuIDI0LCAoYSkgKi8KCXRpbWVfbWF4ZXJy b3IgPSBOVFBfUEhBU0VfTElNSVQ7Cgl0aW1lX2VzdGVycm9yID0gTlRQX1BIQVNFX0xJTUlUOwoJ c3RpKCk7Cn0KCgovKgogKiBJbiBvcmRlciB0byBzZXQgdGhlIENNT1MgY2xvY2sgcHJlY2lzZWx5 LCBzZXRfcnRjX21tc3MgaGFzIHRvIGJlCiAqIGNhbGxlZCA1MDAgbXMgYWZ0ZXIgdGhlIHNlY29u ZCBub3d0aW1lIGhhcyBzdGFydGVkLCBiZWNhdXNlIHdoZW4KICogbm93dGltZSBpcyB3cml0dGVu IGludG8gdGhlIHJlZ2lzdGVycyBvZiB0aGUgQ01PUyBjbG9jaywgaXQgd2lsbAogKiBqdW1wIHRv IHRoZSBuZXh0IHNlY29uZCBwcmVjaXNlbHkgNTAwIG1zIGxhdGVyLiBDaGVjayB0aGUgTW90b3Jv bGEKICogTUMxNDY4MThBIG9yIERhbGxhcyBEUzEyODg3IGRhdGEgc2hlZXQgZm9yIGRldGFpbHMu CiAqCiAqIEJVRzogVGhpcyByb3V0aW5lIGRvZXMgbm90IGhhbmRsZSBob3VyIG92ZXJmbG93IHBy b3Blcmx5OyBpdCBqdXN0CiAqICAgICAgc2V0cyB0aGUgbWludXRlcy4gVXN1YWxseSB5b3UnbGwg b25seSBub3RpY2UgdGhhdCBhZnRlciByZWJvb3QhCiAqLwpzdGF0aWMgaW50IHNldF9ydGNfbW1z cyh1bnNpZ25lZCBsb25nIG5vd3RpbWUpCnsKCWludCByZXR2YWwgPSAwOwoJaW50IHJlYWxfc2Vj b25kcywgcmVhbF9taW51dGVzLCBjbW9zX21pbnV0ZXM7Cgl1bnNpZ25lZCBjaGFyIHNhdmVfY29u dHJvbCwgc2F2ZV9mcmVxX3NlbGVjdDsKCglzYXZlX2NvbnRyb2wgPSBDTU9TX1JFQUQoUlRDX0NP TlRST0wpOyAvKiB0ZWxsIHRoZSBjbG9jayBpdCdzIGJlaW5nIHNldCAqLwoJQ01PU19XUklURSgo c2F2ZV9jb250cm9sfFJUQ19TRVQpLCBSVENfQ09OVFJPTCk7CgoJc2F2ZV9mcmVxX3NlbGVjdCA9 IENNT1NfUkVBRChSVENfRlJFUV9TRUxFQ1QpOyAvKiBzdG9wIGFuZCByZXNldCBwcmVzY2FsZXIg Ki8KCUNNT1NfV1JJVEUoKHNhdmVfZnJlcV9zZWxlY3R8UlRDX0RJVl9SRVNFVDIpLCBSVENfRlJF UV9TRUxFQ1QpOwoKCWNtb3NfbWludXRlcyA9IENNT1NfUkVBRChSVENfTUlOVVRFUyk7CglpZiAo IShzYXZlX2NvbnRyb2wgJiBSVENfRE1fQklOQVJZKSB8fCBSVENfQUxXQVlTX0JDRCkKCQlCQ0Rf VE9fQklOKGNtb3NfbWludXRlcyk7CgoJLyoKCSAqIHNpbmNlIHdlJ3JlIG9ubHkgYWRqdXN0aW5n IG1pbnV0ZXMgYW5kIHNlY29uZHMsCgkgKiBkb24ndCBpbnRlcmZlcmUgd2l0aCBob3VyIG92ZXJm bG93LiBUaGlzIGF2b2lkcwoJICogbWVzc2luZyB3aXRoIHVua25vd24gdGltZSB6b25lcyBidXQg cmVxdWlyZXMgeW91cgoJICogUlRDIG5vdCB0byBiZSBvZmYgYnkgbW9yZSB0aGFuIDE1IG1pbnV0 ZXMKCSAqLwoJcmVhbF9zZWNvbmRzID0gbm93dGltZSAlIDYwOwoJcmVhbF9taW51dGVzID0gbm93 dGltZSAvIDYwOwoJaWYgKCgoYWJzKHJlYWxfbWludXRlcyAtIGNtb3NfbWludXRlcykgKyAxNSkv MzApICYgMSkKCQlyZWFsX21pbnV0ZXMgKz0gMzA7CQkvKiBjb3JyZWN0IGZvciBoYWxmIGhvdXIg dGltZSB6b25lICovCglyZWFsX21pbnV0ZXMgJT0gNjA7CgoJaWYgKGFicyhyZWFsX21pbnV0ZXMg LSBjbW9zX21pbnV0ZXMpIDwgMzApIHsKCQlpZiAoIShzYXZlX2NvbnRyb2wgJiBSVENfRE1fQklO QVJZKSB8fCBSVENfQUxXQVlTX0JDRCkgewoJCQlCSU5fVE9fQkNEKHJlYWxfc2Vjb25kcyk7CgkJ CUJJTl9UT19CQ0QocmVhbF9taW51dGVzKTsKCQl9CgkJQ01PU19XUklURShyZWFsX3NlY29uZHMs UlRDX1NFQ09ORFMpOwoJCUNNT1NfV1JJVEUocmVhbF9taW51dGVzLFJUQ19NSU5VVEVTKTsKCX0g ZWxzZSB7CgkJcHJpbnRrKEtFUk5fV0FSTklORwoJCSAgICAgICAic2V0X3J0Y19tbXNzOiBjYW4n dCB1cGRhdGUgZnJvbSAlZCB0byAlZFxuIiwKCQkgICAgICAgY21vc19taW51dGVzLCByZWFsX21p bnV0ZXMpOwoJCXJldHZhbCA9IC0xOwoJfQoKCS8qIFRoZSBmb2xsb3dpbmcgZmxhZ3MgaGF2ZSB0 byBiZSByZWxlYXNlZCBleGFjdGx5IGluIHRoaXMgb3JkZXIsCgkgKiBvdGhlcndpc2UgdGhlIERT MTI4ODcgKHBvcHVsYXIgTUMxNDY4MThBIGNsb25lIHdpdGggaW50ZWdyYXRlZAoJICogYmF0dGVy eSBhbmQgcXVhcnR6KSB3aWxsIG5vdCByZXNldCB0aGUgb3NjaWxsYXRvciBhbmQgd2lsbCBub3QK CSAqIHVwZGF0ZSBwcmVjaXNlbHkgNTAwIG1zIGxhdGVyLiBZb3Ugd29uJ3QgZmluZCB0aGlzIG1l bnRpb25lZCBpbgoJICogdGhlIERhbGxhcyBTZW1pY29uZHVjdG9yIGRhdGEgc2hlZXRzLCBidXQg d2hvIGJlbGlldmVzIGRhdGEKCSAqIHNoZWV0cyBhbnl3YXkgLi4uICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0gTWFya3VzIEt1aG4KCSAqLwoJQ01PU19XUklURShzYXZlX2NvbnRyb2wsIFJU Q19DT05UUk9MKTsKCUNNT1NfV1JJVEUoc2F2ZV9mcmVxX3NlbGVjdCwgUlRDX0ZSRVFfU0VMRUNU KTsKCglyZXR1cm4gcmV0dmFsOwp9CgovKiBsYXN0IHRpbWUgdGhlIGNtb3MgY2xvY2sgZ290IHVw ZGF0ZWQgKi8Kc3RhdGljIGxvbmcgbGFzdF9ydGNfdXBkYXRlID0gMDsKCi8qCiAqIHRpbWVyX2lu dGVycnVwdCgpIG5lZWRzIHRvIGtlZXAgdXAgdGhlIHJlYWwtdGltZSBjbG9jaywKICogYXMgd2Vs bCBhcyBjYWxsIHRoZSAiZG9fdGltZXIoKSIgcm91dGluZSBldmVyeSBjbG9ja3RpY2sKICovCnN0 YXRpYyBpbmxpbmUgdm9pZCB0aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBz dHJ1Y3QgcHRfcmVncyAqcmVncykKewoJZG9fdGltZXIocmVncyk7CgoJLyoKCSAqIElmIHdlIGhh dmUgYW4gZXh0ZXJuYWxseSBzeW5jaHJvbml6ZWQgTGludXggY2xvY2ssIHRoZW4gdXBkYXRlCgkg KiBDTU9TIGNsb2NrIGFjY29yZGluZ2x5IGV2ZXJ5IH4xMSBtaW51dGVzLiBTZXRfcnRjX21tc3Mo KSBoYXMgdG8gYmUKCSAqIGNhbGxlZCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byA1MDAgbXMgYmVm b3JlIHRoZSBuZXcgc2Vjb25kIHN0YXJ0cy4KCSAqLwoJaWYgKCh0aW1lX3N0YXR1cyAmIFNUQV9V TlNZTkMpID09IDAgJiYKCSAgICB4dGltZS50dl9zZWMgPiBsYXN0X3J0Y191cGRhdGUgKyA2NjAg JiYKCSAgICB4dGltZS50dl91c2VjID4gNTAwMDAwIC0gKHRpY2sgPj4gMSkgJiYKCSAgICB4dGlt ZS50dl91c2VjIDwgNTAwMDAwICsgKHRpY2sgPj4gMSkpCgkgIGlmIChzZXRfcnRjX21tc3MoeHRp bWUudHZfc2VjKSA9PSAwKQoJICAgIGxhc3RfcnRjX3VwZGF0ZSA9IHh0aW1lLnR2X3NlYzsKCSAg ZWxzZQoJICAgIGxhc3RfcnRjX3VwZGF0ZSA9IHh0aW1lLnR2X3NlYyAtIDYwMDsgLyogZG8gaXQg YWdhaW4gaW4gNjAgcyAqLwoJLyogQXMgd2UgcmV0dXJuIHRvIHVzZXIgbW9kZSBmaXJlIG9mZiB0 aGUgb3RoZXIgQ1BVIHNjaGVkdWxlcnMuLiB0aGlzIGlzIAoJICAgYmFzaWNhbGx5IGJlY2F1c2Ug d2UgZG9uJ3QgeWV0IHNoYXJlIElSUSdzIGFyb3VuZC4gVGhpcyBtZXNzYWdlIGlzCgkgICByaWdn ZWQgdG8gYmUgc2FmZSBvbiB0aGUgMzg2IC0gYmFzaWNhbGx5IGl0J3MgYSBoYWNrLCBzbyBkb24n dCBsb29rCgkgICBjbG9zZWx5IGZvciBub3cuLiAqLwoJLypzbXBfbWVzc2FnZV9wYXNzKE1TR19B TExfQlVUX1NFTEYsIE1TR19SRVNDSEVEVUxFLCAwTCwgMCk7ICovCgkgICAgCn0KCi8qCiAqIFRo aXMgaXMgdGhlIHNhbWUgYXMgdGhlIGFib3ZlLCBleGNlcHQgd2UgX2Fsc29fIHNhdmUgdGhlIGN1 cnJlbnQKICogVGltZSBTdGFtcCBDb3VudGVyIHZhbHVlIGF0IHRoZSB0aW1lIG9mIHRoZSB0aW1l ciBpbnRlcnJ1cHQsIHNvIHRoYXQKICogd2UgbGF0ZXIgb24gY2FuIGVzdGltYXRlIHRoZSB0aW1l IG9mIGRheSBtb3JlIGV4YWN0bHkuCiAqLwpzdGF0aWMgdm9pZCBwZW50aXVtX3RpbWVyX2ludGVy cnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CglyZWdp c3RlciB1bnNpZ25lZCBsb25nIGVkeCBhc20oImR4Iik7CgoJLyogcmVhZCBQZW50aXVtIGN5Y2xl IGNvdW50ZXIgKi8KCV9fYXNtX18oIi5ieXRlIDB4MGYsMHgzMSIKCQk6Ij1hIiAobGFzdF90c2Nf bG93KSwKCQkgIj1kIiAoZWR4KSk7Cgl0aW1lcl9pbnRlcnJ1cHQoaXJxLCBOVUxMLCByZWdzKTsK fQoKLyogQ29udmVydHMgR3JlZ29yaWFuIGRhdGUgdG8gc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAx IDAwOjAwOjAwLgogKiBBc3N1bWVzIGlucHV0IGluIG5vcm1hbCBkYXRlIGZvcm1hdCwgaS5lLiAx OTgwLTEyLTMxIDIzOjU5OjU5CiAqID0+IHllYXI9MTk4MCwgbW9uPTEyLCBkYXk9MzEsIGhvdXI9 MjMsIG1pbj01OSwgc2VjPTU5LgogKgogKiBbRm9yIHRoZSBKdWxpYW4gY2FsZW5kYXIgKHdoaWNo IHdhcyB1c2VkIGluIFJ1c3NpYSBiZWZvcmUgMTkxNywKICogQnJpdGFpbiAmIGNvbG9uaWVzIGJl Zm9yZSAxNzUyLCBhbnl3aGVyZSBlbHNlIGJlZm9yZSAxNTgyLAogKiBhbmQgaXMgc3RpbGwgaW4g dXNlIGJ5IHNvbWUgY29tbXVuaXRpZXMpIGxlYXZlIG91dCB0aGUKICogLXllYXIvMTAwK3llYXIv NDAwIHRlcm1zLCBhbmQgYWRkIDEwLl0KICoKICogVGhpcyBhbGdvcml0aG0gd2FzIGZpcnN0IHB1 Ymxpc2hlZCBieSBHYXVzcyAoSSB0aGluaykuCiAqCiAqIFdBUk5JTkc6IHRoaXMgZnVuY3Rpb24g d2lsbCBvdmVyZmxvdyBvbiAyMTA2LTAyLTA3IDA2OjI4OjE2IG9uCiAqIG1hY2hpbmVzIHdlcmUg bG9uZyBpcyAzMi1iaXQhIChIb3dldmVyLCBhcyB0aW1lX3QgaXMgc2lnbmVkLCB3ZQogKiB3aWxs IGFscmVhZHkgZ2V0IHByb2JsZW1zIGF0IG90aGVyIHBsYWNlcyBvbiAyMDM4LTAxLTE5IDAzOjE0 OjA4KQogKi8Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1rdGltZSh1bnNpZ25lZCBpbnQg eWVhciwgdW5zaWduZWQgaW50IG1vbiwKCXVuc2lnbmVkIGludCBkYXksIHVuc2lnbmVkIGludCBo b3VyLAoJdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNlYykKewoJaWYgKDAgPj0gKGlu dCkgKG1vbiAtPSAyKSkgewkvKiAxLi4xMiAtPiAxMSwxMiwxLi4xMCAqLwoJCW1vbiArPSAxMjsJ LyogUHV0cyBGZWIgbGFzdCBzaW5jZSBpdCBoYXMgbGVhcCBkYXkgKi8KCQl5ZWFyIC09IDE7Cgl9 CglyZXR1cm4gKCgoCgkgICAgKHVuc2lnbmVkIGxvbmcpKHllYXIvNCAtIHllYXIvMTAwICsgeWVh ci80MDAgKyAzNjcqbW9uLzEyICsgZGF5KSArCgkgICAgICB5ZWFyKjM2NSAtIDcxOTQ5OQoJICAg ICkqMjQgKyBob3VyIC8qIG5vdyBoYXZlIGhvdXJzICovCgkgICApKjYwICsgbWluIC8qIG5vdyBo YXZlIG1pbnV0ZXMgKi8KCSAgKSo2MCArIHNlYzsgLyogZmluYWxseSBzZWNvbmRzICovCn0KCnVu c2lnbmVkIGxvbmcgZ2V0X2Ntb3NfdGltZSh2b2lkKQp7Cgl1bnNpZ25lZCBpbnQgeWVhciwgbW9u LCBkYXksIGhvdXIsIG1pbiwgc2VjOwoJaW50IGk7CgoJLyogVGhlIExpbnV4IGludGVycHJldGF0 aW9uIG9mIHRoZSBDTU9TIGNsb2NrIHJlZ2lzdGVyIGNvbnRlbnRzOgoJICogV2hlbiB0aGUgVXBk YXRlLUluLVByb2dyZXNzIChVSVApIGZsYWcgZ29lcyBmcm9tIDEgdG8gMCwgdGhlCgkgKiBSVEMg cmVnaXN0ZXJzIHNob3cgdGhlIHNlY29uZCB3aGljaCBoYXMgcHJlY2lzZWx5IGp1c3Qgc3RhcnRl ZC4KCSAqIExldCdzIGhvcGUgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgaW50ZXJwcmV0IHRoZSBS VEMgdGhlIHNhbWUgd2F5LgoJICovCgkvKiByZWFkIFJUQyBleGFjdGx5IG9uIGZhbGxpbmcgZWRn ZSBvZiB1cGRhdGUgZmxhZyAqLwoJZm9yIChpID0gMCA7IGkgPCAxMDAwMDAwIDsgaSsrKQkvKiBt YXkgdGFrZSB1cCB0byAxIHNlY29uZC4uLiAqLwoJCWlmIChDTU9TX1JFQUQoUlRDX0ZSRVFfU0VM RUNUKSAmIFJUQ19VSVApCgkJCWJyZWFrOwoJZm9yIChpID0gMCA7IGkgPCAxMDAwMDAwIDsgaSsr KQkvKiBtdXN0IHRyeSBhdCBsZWFzdCAyLjIyOCBtcyAqLwoJCWlmICghKENNT1NfUkVBRChSVENf RlJFUV9TRUxFQ1QpICYgUlRDX1VJUCkpCgkJCWJyZWFrOwoJZG8geyAvKiBJc24ndCB0aGlzIG92 ZXJraWxsID8gVUlQIGFib3ZlIHNob3VsZCBndWFyYW50ZWUgY29uc2lzdGVuY3kgKi8KCQlzZWMg PSBDTU9TX1JFQUQoUlRDX1NFQ09ORFMpOwoJCW1pbiA9IENNT1NfUkVBRChSVENfTUlOVVRFUyk7 CgkJaG91ciA9IENNT1NfUkVBRChSVENfSE9VUlMpOwoJCWRheSA9IENNT1NfUkVBRChSVENfREFZ X09GX01PTlRIKTsKCQltb24gPSBDTU9TX1JFQUQoUlRDX01PTlRIKTsKCQl5ZWFyID0gQ01PU19S RUFEKFJUQ19ZRUFSKTsKCX0gd2hpbGUgKHNlYyAhPSBDTU9TX1JFQUQoUlRDX1NFQ09ORFMpKTsK CWlmICghKENNT1NfUkVBRChSVENfQ09OVFJPTCkgJiBSVENfRE1fQklOQVJZKSB8fCBSVENfQUxX QVlTX0JDRCkKCSAgewoJICAgIEJDRF9UT19CSU4oc2VjKTsKCSAgICBCQ0RfVE9fQklOKG1pbik7 CgkgICAgQkNEX1RPX0JJTihob3VyKTsKCSAgICBCQ0RfVE9fQklOKGRheSk7CgkgICAgQkNEX1RP X0JJTihtb24pOwoJICAgIEJDRF9UT19CSU4oeWVhcik7CgkgIH0KCWlmICgoeWVhciArPSAxOTAw KSA8IDE5NzApCgkJeWVhciArPSAxMDA7CglyZXR1cm4gbWt0aW1lKHllYXIsIG1vbiwgZGF5LCBo b3VyLCBtaW4sIHNlYyk7Cn0KCnN0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uIGlycTAgID0geyB0aW1l cl9pbnRlcnJ1cHQsIDAsIDAsICJ0aW1lciIsIE5VTEwsIE5VTEx9OwoKLyogLS0tLS0tIENhbGli cmF0ZSB0aGUgVFNDIC0tLS0tLS0gCiAqIFJldHVybiAyXjMyICogKDEgLyAoVFNDIGNsb2NrcyBw ZXIgdXNlYykpIGZvciBkb19mYXN0X2dldHRpbWVvZmZzZXQoKS4KICogVG9vIG11Y2ggNjQtYml0 IGFyaXRobWV0aWMgaGVyZSB0byBkbyB0aGlzIGNsZWFubHkgaW4gQywgYW5kIGZvcgogKiBhY2N1 cmFjeSdzIHNha2Ugd2Ugd2FudCB0byBrZWVwIHRoZSBvdmVyaGVhZCBvbiB0aGUgQ1RDIHNwZWFr ZXIgKGNoYW5uZWwgMikKICogb3V0cHV0IGJ1c3kgbG9vcCBhcyBsb3cgYXMgcG9zc2libGUuIFdl IGF2b2lkIHJlYWRpbmcgdGhlIENUQyByZWdpc3RlcnMKICogZGlyZWN0bHkgYmVjYXVzZSBvZiB0 aGUgYXdrd2FyZCA4LWJpdCBhY2Nlc3MgbWVjaGFuaXNtIG9mIHRoZSA4MkM1NAogKiBkZXZpY2Uu CiAqLwoKc3RhdGljIHVuc2lnbmVkIGxvbmcgY2FsaWJyYXRlX3RzYyh2b2lkKQp7CiAgICAgICB1 bnNpZ25lZCBsb25nIHJldHZhbDsKCiAgICAgICBfX2FzbV9fKCAvKiBzZXQgdGhlIEdhdGUgaGln aCwgcHJvZ3JhbSBDVEMgY2hhbm5lbCAyIGZvciBtb2RlIDAKCQkgKiAoaW50ZXJydXB0IG9uIHRl cm1pbmFsIGNvdW50IG1vZGUpLCBiaW5hcnkgY291bnQsIAoJCSAqIGxvYWQgNSAqIExBVENIIGNv dW50LCAoTFNCIGFuZCBNU0IpCgkJICogdG8gYmVnaW4gY291bnRkb3duLCByZWFkIHRoZSBUU0Mg YW5kIGJ1c3kgd2FpdC4KCQkgKiBCVFcgTEFUQ0ggaXMgY2FsY3VsYXRlZCBpbiB0aW1leC5oIGZy b20gdGhlIEhaIHZhbHVlCgkJICovCgoJICAgICAgIC8qIFNldCB0aGUgR2F0ZSBoaWdoLCBkaXNh YmxlIHNwZWFrZXIgKi8KCSAgICAgICAiaW5iICAkMHg2MSwgJSVhbFxuXHQiIC8qIFJlYWQgcG9y dCAqLwoJICAgICAgICJhbmRiICQweGZkLCAlJWFsXG5cdCIgLyogVHVybiBvZmYgc3BlYWtlciBE YXRhICovCgkgICAgICAgIm9yYiAgJDB4MDEsICUlYWxcblx0IiAvKiBTZXQgR2F0ZSBoaWdoICov CgkgICAgICAgIm91dGIgJSVhbCwgJDB4NjFcblx0IiAvKiBXcml0ZSBwb3J0ICovCgoJICAgICAg IC8qIE5vdyBsZXQncyB0YWtlIGNhcmUgb2YgQ1RDIGNoYW5uZWwgMiAqLwoJICAgICAgICJtb3Zi ICQweGIwLCAlJWFsXG5cdCIgLyogYmluYXJ5LCBtb2RlIDAsIExTQi9NU0IsIGNoIDIqLwoJICAg ICAgICJvdXRiICUlYWwsICQweDQzXG5cdCIgLyogV3JpdGUgdG8gQ1RDIGNvbW1hbmQgcG9ydCAq LwoJICAgICAgICJtb3ZiICQweDBjLCAlJWFsXG5cdCIKCSAgICAgICAib3V0YiAlJWFsLCAkMHg0 MlxuXHQiIC8qIExTQiBvZiBjb3VudCAqLwoJICAgICAgICJtb3ZiICQweGU5LCAlJWFsXG5cdCIK CSAgICAgICAib3V0YiAlJWFsLCAkMHg0MlxuXHQiIC8qIE1TQiBvZiBjb3VudCAqLwoKICAgICAg ICAgICAgICAgLyogUmVhZCB0aGUgVFNDOyBjb3VudGluZyBoYXMganVzdCBzdGFydGVkICovCiAg ICAgICAgICAgICAgICJyZHRzY1xuXHQiCiAgICAgICAgICAgICAgIC8qIE1vdmUgdGhlIHZhbHVl IGZvciBzYWZlLWtlZXBpbmcuICovCiAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCAlJWVieFxu XHQiCiAgICAgICAgICAgICAgICJtb3ZsICUlZWR4LCAlJWVjeFxuXHQiCgoJICAgICAgIC8qIEJ1 c3kgd2FpdC4gT25seSA1MCBtcyB3YXN0ZWQgYXQgYm9vdCB0aW1lLiAqLwogICAgICAgICAgICAg ICAiMDogaW5iICQweDYxLCAlJWFsXG5cdCIgLyogUmVhZCBTcGVha2VyIE91dHB1dCBQb3J0ICov CgkgICAgICAgInRlc3RiICQweDIwLCAlJWFsXG5cdCIgLyogQ2hlY2sgQ1RDIGNoYW5uZWwgMiBv dXRwdXQgKGJpdCA1KSAqLwogICAgICAgICAgICAgICAianogMGJcblx0IgoKICAgICAgICAgICAg ICAgLyogQW5kIHJlYWQgdGhlIFRTQy4gIDUgamlmZmllcyAoNTAuMDAwNzdtcykgaGF2ZSBlbGFw c2VkLiAqLwogICAgICAgICAgICAgICAicmR0c2Ncblx0IgoKICAgICAgICAgICAgICAgLyogR3Jl YXQuICBTbyBmYXIgc28gZ29vZC4gIFN0b3JlIGxhc3QgVFNDIHJlYWRpbmcgaW4KICAgICAgICAg ICAgICAgICogbGFzdF90c2NfbG93IChvbmx5IDMyIGxzYiBiaXRzIG5lZWRlZCkgKi8KICAgICAg ICAgICAgICAgIm1vdmwgJSVlYXgsIGxhc3RfdHNjX2xvd1xuXHQiCiAgICAgICAgICAgICAgIC8q IEFuZCBub3cgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHJlYWRpbmdzLiAq LwogICAgICAgICAgICAgICAic3VibCAlJWVieCwgJSVlYXhcblx0IgogICAgICAgICAgICAgICAi c2JibCAlJWVjeCwgJSVlZHhcblx0IiAvKiA2NC1iaXQgc3VidHJhY3QgKi8KCSAgICAgICAvKiBi dXQgcHJvYmFibHkgZWR4ID0gMCBhdCB0aGlzIHBvaW50IChzZWUgYmVsb3cpLiAqLwogICAgICAg ICAgICAgICAvKiBOb3cgd2UgaGF2ZSA1ICogKFRTQyBjb3VudHMgcGVyIGppZmZ5KSBpbiBlYXgu ICBXZSB3YW50CiAgICAgICAgICAgICAgICAqIHRvIGNhbGN1bGF0ZSBUU0MtPm1pY3Jvc2Vjb25k IGNvbnZlcnNpb24gZmFjdG9yLiAqLwoKICAgICAgICAgICAgICAgLyogTm90ZSB0aGF0IGVkeCAo aGlnaCAzMi1iaXRzIG9mIGRpZmZlcmVuY2UpIHdpbGwgbm93IGJlIAogICAgICAgICAgICAgICAg KiB6ZXJvIGlmZiBDUFUgY2xvY2sgc3BlZWQgaXMgbGVzcyB0aGFuIDg1IEdIei4gIE1vb3JlJ3MK ICAgICAgICAgICAgICAgICogbGF3IHNheXMgdGhhdCB0aGlzIGlzIGxpa2VseSB0byBiZSB0cnVl IGZvciB0aGUgbmV4dAogICAgICAgICAgICAgICAgKiAxMiB5ZWFycyBvciBzby4gIFlvdSB3aWxs IGhhdmUgdG8gY2hhbmdlIHRoaXMgY29kZSB0bwogICAgICAgICAgICAgICAgKiBkbyBhIHJlYWwg NjQtYnktNjQgZGl2aWRlIGJlZm9yZSB0aGF0IHRpbWUncyB1cC4gKi8KICAgICAgICAgICAgICAg Im1vdmwgJSVlYXgsICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgInhvcmwgJSVlYXgsICUlZWF4 XG5cdCIKICAgICAgICAgICAgICAgIm1vdmwgJTEsICUlZWR4XG5cdCIKICAgICAgICAgICAgICAg ImRpdmwgJSVlY3hcblx0IiAvKiBlYXg9IDJeMzIgLyAoMSAqIFRTQyBjb3VudHMgcGVyIG1pY3Jv c2Vjb25kKSAqLwoJICAgICAgIC8qIFJldHVybiBlYXggZm9yIHRoZSB1c2Ugb2YgZmFzdF9nZXR0 aW1lb2Zmc2V0ICovCiAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCAlMFxuXHQiCiAgICAgICAg ICAgICAgIDogIj1yIiAocmV0dmFsKQogICAgICAgICAgICAgICA6ICJyIiAoNSAqIDEwMDAwMjAv SFopCiAgICAgICAgICAgICAgIDogLyogd2UgY2xvYmJlcjogKi8gImF4IiwgImJ4IiwgImN4Iiwg ImR4IiwgImNjIiwgIm1lbW9yeSIpOwogICAgICAgcmV0dXJuIHJldHZhbDsKfQoKdm9pZCB0aW1l X2luaXQodm9pZCkKewoJeHRpbWUudHZfc2VjID0gZ2V0X2Ntb3NfdGltZSgpOwoJeHRpbWUudHZf dXNlYyA9IDA7CgovKgogKiBJZiB3ZSBoYXZlIEFQTSBlbmFibGVkIG9yIHRoZSBDUFUgY2xvY2sg c3BlZWQgaXMgdmFyaWFibGUKICogKENQVSBzdG9wcyBjbG9jayBvbiBITFQgb3Igc2xvd3MgY2xv Y2sgdG8gc2F2ZSBwb3dlcikKICogdGhlbiB0aGUgVFNDIHRpbWVzdGFtcHMgbWF5IGRpdmVyZ2Ug YnkgdXAgdG8gMSBqaWZmeSBmcm9tCiAqICdyZWFsIHRpbWUnIGJ1dCBub3RoaW5nIHdpbGwgYnJl YWsuCiAqIFRoZSBtb3N0IGZyZXF1ZW50IGNhc2UgaXMgdGhhdCB0aGUgQ1BVIGlzICJ3b2tlbiIg ZnJvbSBhIGhhbHQKICogc3RhdGUgYnkgdGhlIHRpbWVyIGludGVycnVwdCBpdHNlbGYsIHNvIHdl IGdldCAwIGVycm9yLiBJbiB0aGUKICogcmFyZSBjYXNlcyB3aGVyZSBhIGRyaXZlciB3b3VsZCAi d2FrZSIgdGhlIENQVSBhbmQgcmVxdWVzdCBhCiAqIHRpbWVzdGFtcCwgdGhlIG1heGltdW0gZXJy b3IgaXMgPCAxIGppZmZ5LiBCdXQgdGltZXN0YW1wcyBhcmUKICogc3RpbGwgcGVyZmVjdGx5IG9y ZGVyZWQuCiAqIE5vdGUgdGhhdCB0aGUgVFNDIGNvdW50ZXIgd2lsbCBiZSByZXNldCBpZiBBUE0g c3VzcGVuZHMKICogdG8gZGlzazsgdGhpcyB3b24ndCBicmVhayB0aGUga2VybmVsLCB0aG91Z2gs ICdjdXogd2UncmUKICogc21hcnQuICBTZWUgZGV2aWNlcy9jaGFyL2FwbV9iaW9zLmMuCiAqLwoJ aWYgKHg4Nl9jYXBhYmlsaXR5ICYgMTYpIHsKCQlkb19nZXR0aW1lb2Zmc2V0ID0gZG9fZmFzdF9n ZXR0aW1lb2Zmc2V0OwoJCWlycTAuaGFuZGxlciA9IHBlbnRpdW1fdGltZXJfaW50ZXJydXB0OwoJ CWZhc3RfZ2V0dGltZW9mZnNldF9xdW90aWVudCA9IGNhbGlicmF0ZV90c2MoKTsKCQkKCQkvKiBy ZXBvcnQgQ1BVIGNsb2NrIHJhdGUgaW4gSHouCgkJICogVGhlIGZvcm11bGEgaXMgKDEwXjYgKiAy XjMyKSAvICgyXjMyICogMSAvIChjbG9ja3MvdXMpKSA9CgkJICogY2xvY2svc2Vjb25kLiBPdXIg cHJlY2lzaW9uIGlzIGFib3V0IDEwMCBwcG0uCgkJICovCgkJewl1bnNpZ25lZCBsb25nIGVheD0w LCBlZHg9MTAwMDAwMDsKCQkJX19hc21fXygiZGl2bCAlMiIKCSAgICAgICAJCToiPWEiIChjcHVf aHopLCAiPWQiIChlZHgpCiAgICAgICAgICAgICAgIAkJOiJyIiAoZmFzdF9nZXR0aW1lb2Zmc2V0 X3F1b3RpZW50KSwKICAgICAgICAgICAgICAgIAkiMCIgKGVheCksICIxIiAoZWR4KSk7CgkJCXBy aW50aygiRGV0ZWN0ZWQgJWxkIEh6IHByb2Nlc3Nvci5cbiIsIGNwdV9oeik7CgkJfQoJfQoJc2V0 dXBfeDg2X2lycSgwLCAmaXJxMCk7CQp9Cg== --Boundary-=_XrJmOWFrxsjyBldbEFSArCBynEcd-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html