From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?Schl=E4gl?= "Manfred jun." Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-ECmjDVaUiJaGePPSgdSc" Date: Mon, 06 Nov 2006 12:03:15 +0100 Message-Id: <1162810995.5144.20.camel@domain.hid> Mime-Version: 1.0 Subject: [Xenomai-help] timer-handling adeos/xenomai on arm List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xenomai-help --=-ECmjDVaUiJaGePPSgdSc Content-Type: multipart/mixed; boundary="=-6i9a42qxBs7pHDhB8oYB" --=-6i9a42qxBs7pHDhB8oYB Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi again! I've the presumption, there is something wrong with my timer-handling. Could you please take a look at my handling. Thanks in advance! __ipipe_mach_get_tsc should return the absolute timer-ticks since bootup, right? my current handling: INIT: * ns_timer_reload=3Dticks_per_jiffy * timer is loaded with ns_timer_reload * timer is configured to start counting down from ns_timer_reload to zero and trigger an interrupt; after triggering it reloads automatically with ns_timer_reload. IPIPE-FUNCTIONS: #define ns_getticksoffset(timer) \ (likely(ns_tscok) ? ns_timer_reload - TIMER_READ(timer) : 0) /* called after each timer-interrupt */ /* never called, if interrupt is triggered manually! */ void __ipipe_mach_acktimer(void) { /* int -> ns_timer_reload ticks are done; timer has already reloaded with ns_timer_reload and is counting */ __ipipe_mach_tsc+=3Dns_timer_reload; ns_timer_lxlost+=3Dns_timer_reload; /* ack interrupt */ TIMER_ACKINT(TIMER_USED); } EXPORT_SYMBOL(__ipipe_mach_acktimer); /* get ticks since start */ unsigned long long __ipipe_mach_get_tsc(void) { unsigned long long result; unsigned long flags; spin_lock_irqsave_hw(&timer_lock, flags); /* ticks before last interrupt + ticks since last interrupt (ack) */ result =3D __ipipe_mach_tsc + ns_getticksoffset(TIMER_USED);=20 spin_unlock_irqrestore_hw(&timer_lock, flags); return result; } EXPORT_SYMBOL(__ipipe_mach_get_tsc); /* set new timer reload */ void __ipipe_mach_set_dec(unsigned long reload) { unsigned long ticks; unsigned long flags; spin_lock_irqsave_hw(&timer_lock, flags); =09 /* ticks since last interrupt (since ack) */ ticks =3D ns_getticksoffset(TIMER_USED);=20 __ipipe_mach_tsc +=3D ticks; ns_timer_lxlost +=3D ticks; /* reprogramm timer */ set_dec(TIMER_USED,reload); spin_unlock_irqrestore_hw(&timer_lock, flags); } EXPORT_SYMBOL(__ipipe_mach_set_dec); /* get timer value */ unsigned long __ipipe_mach_get_dec(void) { return TIMER_READ(TIMER_USED); } EXPORT_SYMBOL(__ipipe_mach_get_dec); whole source see attachment - Manfred --=-6i9a42qxBs7pHDhB8oYB Content-Disposition: attachment; filename=time.c Content-Type: text/x-csrc; name=time.c; charset=us-ascii Content-Transfer-Encoding: base64 LyoNCiAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uczk3NTAvdGltZS5oDQogKg0KICog Q29weXJpZ2h0IChDKSAyMDA0IGJ5IEZTIEZvcnRoLVN5c3RlbWUgR21iSC4NCiAqIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQogKiBNYXJrdXMgUGlldHJlayA8bXBpZXRyZWtAZnNmb3J0aC5kZT4NCiAq IEBSZWZlcmVuY2VzOiBbMV0gTlM5NzUwIEhhcmR3YXJlIFJlZmVyZW5jZS9EZWNlbWJlciAyMDAz DQogKiAgICAgICAgICAgICAgWzJdIGRlcml2ZWQgZnJvbSBhcmNoLWludGVncmF0b3IvdGltZS5o DQogKg0KICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkNCiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQogKiB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KICogKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiAqDQogKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m DQogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlDQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lg0KICoNCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlDQogKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQ0KICovDQovKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioNCiAqICBASGlzdG9yeToNCiAqICAgICAyMDA2LzA5LzAxIDogQWRlb3MvaXBp cGUgc3VwcG9ydCBieSBTY2hsYWVnbCBNYW5mcmVkIGp1bi4gDQogKiAJCQk8bWFuZnJlZC5zY2hs YWVnbEBnbXguYXQ+DQogKiAgICAgMjAwNC8wOS8wMiA6IGltcGxlbWVudGVkIGdldHRpbWVvZmZz ZXQNCiAqICAgICAyMDA0LzA4LzIwIDogcG9ydGVkIHRvIGtlcm5lbCAyLjYuOA0KICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLw0KDQojaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CQkJLyogRVhQT1JUX1NZTUJPTCAq Lw0KI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgkJCS8qIHJlcXVlc3RfcmVzb3VyY2UgKi8NCiNp bmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4JCS8qIGlycXJldHVybl90ICovDQoNCiNpbmNsdWRl IDxhc20vaW8uaD4JCQkJCS8qIHdyaXRlbCAqLw0KI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+ DQoNCiNpbmNsdWRlIDxhc20vYXJjaC9uczk3NTBfc3lzLmg+IAkvKiBOU19TWVMgKi8NCiNpbmNs dWRlIDxhc20vYXJjaC9pcnFzLmg+CQkJLyogSVJRX1RJTUVSXzAgKi8NCiNpbmNsdWRlIDxhc20v YXJjaC90aW1lLmg+IAkJCS8qIG5zX3RpbWVfaW5pdCAqLw0KDQojaW5jbHVkZSA8YXNtL2FyY2gv dGltZXguaD4gCQkvKiBmcmVxdWVuY3kgKi8NCg0KDQovKiBzdGFydCBkZWZhdWx0IGRlYnVnLWxl dmVsICovDQojZGVmaW5lIERFQlVHX0VOQUJMRUQNCiNkZWZpbmUgREVGQVVMVF9ERUJVRyAJCTAN Cg0KLyogdGltZXIgdXNlZCBhcyBzeXN0ZW0gdGltZXIgKi8NCiNkZWZpbmUgVElNRVJfVVNFRAkJ CTANCg0KLyogYWN0aXZhdGUgc2VxdWVuY2UgbG9jayB3aGlsZSBzeXN0ZW0tdGltZXItaXNyIChm cm9tIGludGVncmF0b3IpICovDQojZGVmaW5lIFNFUV9MT0NLDQoNCg0KLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioNCiMgYmVnaW4JCURFRklOSVRJT05TDQoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8NCg0KI2RlZmluZSBDQVQoeCx5KQl4ICMjIHkNCiNkZWZpbmUgWENBVCh4LHkp CUNBVCh4LHkpDQojZGVmaW5lIE5TX1NZU19USU1FUl9DVFJMX1RMQ1ModGxjcykgCVhDQVQoTlNf U1lTX1RJTUVSX0NUUkxfVExDU18sdGxjcykNCg0KI2lmIDANCi8qIHRpbWVyIGZyZXF1ZW5jeSA9 IGZ1bGwgY2xvY2stZnJlcXVlbmN5IC8gVExDUyAqLw0KI2RlZmluZQlDRkdfSFoJCShDUFVfQ0xL X0ZSRVEvVElNRVJfRkRJVikNCiNlbmRpZg0KDQovKiBpc3IgKi8NCnN0YXRpYyBpcnFyZXR1cm5f dCBuczk3NTBfdGltZXJfaW50ZXJydXB0KCAvKkB1bnVzZWRAKi8gaW50IGlycSwNCgkJCQkJICAg dm9pZCogZGV2X2lkLA0KCQkJCQkgICBzdHJ1Y3QgcHRfcmVncyogcmVncyApOw0KDQoNCnN0YXRp YyBzdHJ1Y3QgaXJxYWN0aW9uIG5zX3RpbWVyX2lycSA9IHsNCgkubmFtZQkJPSAiTlM5NzUwIFRp bWVyIFRpY2siLA0KCS5mbGFncwkJPSBTQV9JTlRFUlJVUFQgfCBTQV9USU1FUiwNCgkuaGFuZGxl cgk9IG5zOTc1MF90aW1lcl9pbnRlcnJ1cHQNCn07DQoNCg0KLyogcmVsb2FkIHZhbHVlIGZvciB0 aW1lciAqLw0Kc3RhdGljIHVuc2lnbmVkIGludCBuc190aW1lcl9yZWxvYWQ7DQoNCi8qIGNvcnJl Y3QgdGlja3MgKi8NCnN0YXRpYyB1bnNpZ25lZCBsb25nIG5zX3RpbWVyX2RlbHRhX29sZDsNCnN0 YXRpYyB1bnNpZ25lZCBpbnQgbnNfdGltZXJfamlmZmllc19vbGQ7DQoNCi8qIGxvc3QgdGlja3Ms IHNhdmVkIGlmIF9faXBpcGVfbWFjaF9zZXRfc2VjIHdoaWxlIHJ1bm5pbmcgdGltZXIgKi8NCnN0 YXRpYyB1bnNpZ25lZCBsb25nIG5zX3RpbWVyX2x4bG9zdDsNCg0KLyogdGltZXIgb2sgLSBmbGFn ICovDQpzdGF0aWMgaW50IG5zX3RzY29rOw0KDQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioNCiMgYmVnaW4JCUlQSVBFLVNQRUNJRklDIFZBUklBQkxFUw0KKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovDQojaWZkZWYgQ09ORklHX0lQSVBFDQoNCiNpZmRlZiBDT05GSUdfTk9f SURMRV9IWg0KI2Vycm9yICJkeW5hbWljIHRpY2sgdGltZXIgbm90IHlldCBzdXBwb3J0ZWQgd2l0 aCBJUElQRSINCiNlbmRpZiAvKiBDT05GSUdfTk9fSURMRV9IWiAqLw0KDQovKiB0aGUgdGltZXIg aW50ZXJydXB0ICovDQppbnQgX19pcGlwZV9tYWNoX3RpbWVyaW50ID0gSVJRX1RJTUVSXzAgKyBU SU1FUl9VU0VEOw0KRVhQT1JUX1NZTUJPTChfX2lwaXBlX21hY2hfdGltZXJpbnQpOw0KDQovKiB0 aWNrcy1jb3VudGVyICovDQpzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIF9faXBpcGVfbWFjaF90 c2M7DQoNCi8qIHRpbWVyIGxvY2sgKi8NCnN0YXRpYyBERUZJTkVfU1BJTkxPQ0sodGltZXJfbG9j ayk7DQoNCi8qIHRpbWVyIHN0b2xlbiAtIGZsYWcgKi8NCmludCBfX2lwaXBlX21hY2hfdGltZXJz dG9sZW4gPSAwOw0KRVhQT1JUX1NZTUJPTChfX2lwaXBlX21hY2hfdGltZXJzdG9sZW4pOw0KDQov KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIyBlbmQJCUlQSVBFLVNQRUNJRklDIFZBUklB QkxFUw0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQojZW5kaWYgLyogQ09ORklHX0lQ SVBFICovDQoNCg0KDQovKiB0aW1lci10aWNrcyBwZXIgamlmZnkgKGluaXQgaW4gbnNfdGltZV9p bml0KSAqLw0KdW5zaWduZWQgaW50IF9faXBpcGVfbWFjaF90aWNrc19wZXJfamlmZnk7DQpFWFBP UlRfU1lNQk9MKF9faXBpcGVfbWFjaF90aWNrc19wZXJfamlmZnkpOyANCg0KDQp2b2lkIF9fdG1f aW5pdF90aW1lcih2b2lkKTsNCg0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIyBi ZWdpbgkJREVCVUctSEFORExJTkcNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQpp bnQgREVCVUcgPSBERUZBVUxUX0RFQlVHOw0KDQojZGVmaW5lIE1ZX05BTUUgInRpbWUuYyINCi8q IGRlYnVnIG1lc3NhZ2VzICovDQoNCiNpZmRlZiBERUJVR19FTkFCTEVEDQojZGVmaW5lIGRiZ19y YXcobGV2ZWwsIGZtdCwgYXJnLi4uKSAJCQkJCQlcDQoJZG8gewkJCQkJCQkJCVwNCgkJaWYgKGxl dmVsPD1ERUJVRykJCQkJCQlcDQoJCQlwcmludGsgKGZtdCwgIyMgYXJnKTsJCQkJCVwNCgl9IHdo aWxlICgwKQ0KI2Vsc2UNCiNkZWZpbmUgZGJnX3JhdyhsZXZlbCwgZm10LCBhcmcuLi4pDQojZW5k aWYNCg0KLyogZGVidWcgbWVzc2FnZXMgd2l0aCBtb2R1bGUtIGFuZCBmdW5jdGlvbi1pbmZvcm1h dGlvbiAqLw0KI2RlZmluZSBkYmcobGV2ZWwsIGZtdCwgYXJnLi4uKSAJCQkJCQlcDQoJZGJnX3Jh dyhsZXZlbCwgIiVzOiAlczpcdFx0IiBmbXQsIE1ZX05BTUUgLCBfX0ZVTkNUSU9OX18gLCAjIyBh cmcpCQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIyBlbmQJCURFQlVHLUhBTkRM SU5HDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KDQovKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KIyBiZWdpbgkJR0VORVJBTCBUSU1FUi1GVU5DVElPTlMNCioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLw0KDQovKiByZWFkIHRpbWVyIHZhbHVlICovDQojZGVmaW5l IFRJTUVSX1JFQUQodGltZXIpCQkJCQlcDQoJcmVhZGwoTlNfU1lTX1RJTUVSX1JFQUQodGltZXIp KQ0KDQovKiBzZXQgdGltZXIgcmVsb2FkICovDQojZGVmaW5lIFRJTUVSX1NFVF9SRUxPQUQodGlt ZXIsIHJlbG9hZCkJCVwNCgl3cml0ZWwoIHJlbG9hZCwgTlNfU1lTX1RJTUVSX0NPVU5UKHRpbWVy KSApDQoNCi8qIHNldCB0aW1lciBjdHJsICovDQojZGVmaW5lIFRJTUVSX1NFVF9DVFJMKHRpbWVy LCBjdHJsKQkJCVwNCgl3cml0ZWwoIGN0cmwsIE5TX1NZU19USU1FUl9DVFJMKHRpbWVyKSApDQoN Ci8qIGRpc2FibGUgdGltZXIgKFRFTiBhbmQgZ2VuZXJhdGUgaW50ZXJydXB0KSAqLw0KI2RlZmlu ZSBUSU1FUl9ESVNBQkxFKHRpbWVyKQkJCQlcDQoJcm13bCggTlNfU1lTX1RJTUVSX0NUUkwodGlt ZXIpLCAmIH5OU19TWVNfVElNRVJfQ1RSTF9URU4gJiB+TlNfU1lTX1RJTUVSX0NUUkxfSU5UUyk7 DQoNCi8qIGVuYWJsZSB0aW1lciAoVEVOIGFuZCBnZW5lcmF0ZSBpbnRlcnJ1cHQpICovDQojZGVm aW5lIFRJTUVSX0VOQUJMRSh0aW1lcikJCQkJCVwNCglybXdsKCBOU19TWVNfVElNRVJfQ1RSTCh0 aW1lciksIHwgTlNfU1lTX1RJTUVSX0NUUkxfVEVOIHwgTlNfU1lTX1RJTUVSX0NUUkxfSU5UUykN Cg0KLyogY2xlYXIgdGltZXIgKi8NCiNkZWZpbmUgVElNRVJfQ0xFQVIodGltZXIpCQkJCQlcDQpk byB7CQkJCQkJCQkJCVwNCgl3cml0ZWwoMCxOU19TWVNfVElNRVJfQ1RSTCh0aW1lcikgKTsJXA0K CVRJTUVSX1NFVF9SRUxPQUQodGltZXIsMCk7CQkJCVwNCn0gd2hpbGUoMCkNCg0KLyogYWNrIHRp bWVyIGludGVycnVwdCAqLw0KI2RlZmluZSBUSU1FUl9BQ0tJTlQodGltZXIpCQkJCQkJCQkJCQkJ CVwNCmRvIHsJCQkJCQkJCQkJCQkJCQkJCQlcDQoJcm13bCggTlNfU1lTX1RJTUVSX0NUUkwodGlt ZXIpLCB8IE5TX1NZU19USU1FUl9DVFJMX0lOVEMgKTsJCQkJXA0KCXJtd2woIE5TX1NZU19USU1F Ul9DVFJMKHRpbWVyKSwgJiB+TlNfU1lTX1RJTUVSX0NUUkxfSU5UQyApOwkJCVwNCn13aGlsZSAo MCkNCg0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIyBlbmQJCUdFTkVSQUwgVElN RVItRlVOQ1RJT05TDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCiMgYmVnaW4JCVNQRUNJRklDIFNZU1RFTS1USU1FUi1GVU5D VElPTlMNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQoNCi8qIGluaXQgc3lzdGVt LXRpbWVyICovDQojZGVmaW5lIFRJTUVSX0lOSVQodGltZXIpCQkJCQkJCQkJCQkJCQkJXA0KCVRJ TUVSX1NFVF9DVFJMKHRpbWVyLAkJCQkJCQkJCQkJCQkJCVwNCgkJTlNfU1lTX1RJTUVSX0NUUkxf VExDUyhUSU1FUl9GRElWKSB8CS8qIGNsb2NrZnJlcSAvIFRJTUVSX0ZESVYgKi8JCVwNCgkJTlNf U1lTX1RJTUVSX0NUUkxfUkVOIHwJCQkJCS8qIHBlcmlvZGljICovCQkJCQkJXA0KCQlOU19TWVNf VElNRVJfQ1RSTF9UREJHIHwJCQkJLyogc3RvcCB0aW1lciBpbiBkZWJ1Zy1tb2RlICovCQlcDQoJ CU5TX1NZU19USU1FUl9DVFJMX1VEUyB8CQkJCQkvKiBkb3duLWNvdW50ZXIgKi8JCQkJCVwNCgkJ TlNfU1lTX1RJTUVSX0NUUkxfVFNaIAkJCQkJLyogMzIgYml0ICovCQkJCQkJXA0KCSkNCg0KDQoN Ci8qIHJlcHJvZ3JhbW0gdGltZXIgKi8NCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZGVjKGludCB0 aW1lciwgdW5zaWduZWQgbG9uZyByZWxvYWQpDQp7DQoJLyogZGlzYWJsZSB0aW1lciAqLw0KCVRJ TUVSX0RJU0FCTEUodGltZXIpOw0KDQoJLyogc2V0IG5ldyByZWxvYWQtdmFsdWUgKi8NCglUSU1F Ul9TRVRfUkVMT0FEKHRpbWVyLHJlbG9hZCk7DQoNCgkvKiBhY3RpdmF0ZSB0aW1lciAqLw0KCVRJ TUVSX0VOQUJMRSh0aW1lcik7DQoNCgkvKiBzYXZlIHJlbG9hZCAqLw0KCW5zX3RpbWVyX3JlbG9h ZCA9IHJlbG9hZDsNCn0NCg0KDQovKiBnZXQgdGlja3Mtb2Zmc2V0ICovDQojZGVmaW5lIG5zX2dl dHRpY2tzb2Zmc2V0KHRpbWVyKSAJCQkJCQkJCQkJCVwNCgkobGlrZWx5KG5zX3RzY29rKSA/IG5z X3RpbWVyX3JlbG9hZCAtIFRJTUVSX1JFQUQodGltZXIpIDogMCkNCg0KDQovKg0KICogUmV0dXJu cyBudW1iZXIgb2YgdXMgc2luY2UgbGFzdCBjbG9jayBpbnRlcnJ1cHQuICBOb3RlIHRoYXQgaW50 ZXJydXB0cw0KICogd2lsbCBoYXZlIGJlZW4gZGlzYWJsZWQgYnkgZG9fZ2V0dGltZW9mZnNldCgp DQogKi8NCnVuc2lnbmVkIGxvbmcgbnM5NzUwX2dldHRpbWVvZmZzZXQodm9pZCkNCnsNCgkvKiBn ZXQgdGlja3MgKi8NCgl1bnNpZ25lZCBsb25nIHRpbWVyX2RlbHRhID0gbnNfZ2V0dGlja3NvZmZz ZXQoVElNRVJfVVNFRCk7DQoNCiNpZiAxIC8qIGNvcnJlY3Rpb24gZnJvbSBvcmlnaW5hbC1pbXBs ZW1lbnRhdGlvbiAqLw0KCWlmKCBuc190aW1lcl9qaWZmaWVzX29sZCA9PSBqaWZmaWVzICYmIG5z X3RpbWVyX2RlbHRhX29sZCA+IHRpbWVyX2RlbHRhICkgew0KCQkvKiB3ZSBhcmUgY2FsbGVkIGJ5 IGFybS9rZXJuZWwvdGltZS5jOmRvX2dldHRpbWVvZmRheSB3aXRoDQoJCSAqIGludGVycnVwdHMg ZGlzYWJsZWQuDQoJCSAqIEl0IG1heSBoYXBwZW4gdGhlbiB0aGF0IHRoZXJlIGlzIGEgdGltZXIg cmVsb2FkIGFmdGVyDQoJCSAqIGludGVycnVwdHMgZGlzYWJsZS4gVGhlcmVmb3JlIGppZmZpZXMg aXMgbm90IGluY3JlbWVudGVkLg0KCQkgKiBTbyB3aGlsZSBqaWZmaWVzIGhhcyBub3QgYmVlbiB1 cGRhdGVkLCByZXR1cm4gdGhlIG9sZA0KCQkgKiB0aW1lLiAqLw0KCQl0aW1lcl9kZWx0YSA9IG5z X3RpbWVyX2RlbHRhX29sZDsNCgl9IGVsc2Ugew0KCQluc190aW1lcl9kZWx0YV9vbGQgPSB0aW1l cl9kZWx0YTsNCgkJbnNfdGltZXJfamlmZmllc19vbGQgPSBqaWZmaWVzOw0KCX0NCiNlbmRpZg0K DQoJLyogY2FsYyAqLw0KCXJldHVybiAoICgxMDAwICogKG5zX3RpbWVyX2x4bG9zdCArIHRpbWVy X2RlbHRhKSkgLyAoX19pcGlwZV9tYWNoX3RpY2tzX3Blcl9qaWZmeSAvIDEwKSApOw0KfQ0KRVhQ T1JUX1NZTUJPTChuczk3NTBfZ2V0dGltZW9mZnNldCk7DQoNCg0KDQovKg0KICogSVJRIGhhbmRs ZXIgZm9yIHRoZSB0aW1lcg0KICovDQpzdGF0aWMgaXJxcmV0dXJuX3QgbnM5NzUwX3RpbWVyX2lu dGVycnVwdCggLypAdW51c2VkQCovIGludCBpcnEsDQoJCQkJCSAgIHZvaWQqIGRldl9pZCwNCgkJ CQkJICAgc3RydWN0IHB0X3JlZ3MqIHJlZ3MgKQ0Kew0KI2lmZGVmIFNFUV9MT0NLDQoJd3JpdGVf c2VxbG9jaygmeHRpbWVfbG9jayk7DQojZW5kaWYNCg0KI2lmZGVmIENPTkZJR19JUElQRQ0KCS8q DQoJICogLSBpZiBMaW51eCBpcyBydW5uaW5nIG5hdGl2ZWx5IChubyBpcGlwZSksIGFjayB0aGUg dGltZXIgKHJlcHJvZ3JhbW1pbmcgYXV0b21hdGljYWxseSkNCgkgKiAtIGlmIExpbnV4IGlzIHJ1 bm5pbmcgdW5kZXIgaXBpcGUsIGJ1dCBpdCBzdGlsbCBoYXMgdGhlIGNvbnRyb2wgb3Zlcg0KCSAq ICAgdGhlIHRpbWVyIChubyBYZW5vbWFpIGZvciBleGFtcGxlKSwgdGhlbiBkbyBub3RoaW5nIChp cGlwZQ0KCSAqICAgaGFzIGFscmVhZHkgYWNrZWQgaXQ7IHJlcHJvZ3JhbW1pbmcgYXV0b21hdGlj YWxseSkNCgkgKiAtIGlmIHNvbWUgb3RoZXIgZG9tYWluIGhhcyB0YWtlbiBvdmVyIHRoZSB0aW1l ciwgdGhlbiBkbyBub3RoaW5nDQoJICogICAoaXBpcGUgaGFzIGFja2VkIGl0LCBhbmQgdGhlIG90 aGVyIGRvbWFpbiBoYXMgcmVwcm9ncmFtZWQgaXQpDQoJICovDQoJLyogc2F2ZSB0aWNrcyBzaW5j ZSBib290ICovDQoJaWYgKCFfX2lwaXBlX21hY2hfdGltZXJzdG9sZW4pIHsNCgkJLyogdGlja3Mg c2luY2UgbGFzdCBpbnQgKGFscmVhZHkgZG9uZSBpbiBhY2spKi8NCi8vCQlfX2lwaXBlX21hY2hf dHNjICs9IG5zX3RpbWVyX3JlbG9hZDsNCg0KCX0NCiNlbHNlDQoJLyogYWNrX3RpbWVyICovDQoJ VElNRVJfQUNLSU5UKFRJTUVSX1VTRUQpOw0KI2VuZGlmDQoNCgkvKiBjbGVhciBsb3N0IHRpY2tz IHNpbmNlIGxhc3QgdGltZXJfdGljayAqLw0KCW5zX3RpbWVyX2x4bG9zdCA9IDA7DQoNCgkvKiBs aW51eCB0aW1lciB0aWNrICovDQoJdGltZXJfdGljayggcmVncyApOw0KDQojaWZkZWYgU0VRX0xP Q0sNCgl3cml0ZV9zZXF1bmxvY2soJnh0aW1lX2xvY2spOw0KI2VuZGlmDQoNCglyZXR1cm4gSVJR X0hBTkRMRUQ7DQp9DQoNCnN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgdGltZXJfcmVzb3VyY2VbIDMg XSA9IHsNCgl7DQoJCS5uYW1lCT0gInN5c3RlbSB0aW1lciIsDQoJCS5zdGFydAk9IChOU19TWVNf VElNRVJfQ1RSTCggVElNRVJfVVNFRCApICksDQoJCS5lbmQJPSAoTlNfU1lTX1RJTUVSX0NUUkwo IFRJTUVSX1VTRUQgKSApICsgMywNCgl9LA0KCXsNCgkJLm5hbWUJPSAic3lzdGVtIHRpbWVyIiwN CgkJLnN0YXJ0CT0gKE5TX1NZU19USU1FUl9SRUFEKCBUSU1FUl9VU0VEICkgKSwNCgkJLmVuZAk9 IChOU19TWVNfVElNRVJfUkVBRCggVElNRVJfVVNFRCApICkgKyAzLA0KCX0sDQoJew0KCQkubmFt ZQk9ICJzeXN0ZW0gdGltZXIiLA0KCQkuc3RhcnQJPSAoTlNfU1lTX1RJTUVSX0NPVU5UKCBUSU1F Ul9VU0VEICkgKSwNCgkJLmVuZAk9IChOU19TWVNfVElNRVJfQ09VTlQoIFRJTUVSX1VTRUQgKSAp ICsgMywNCgl9DQp9Ow0KDQovKg0KICogU2V0IHVwIHRpbWVyIGludGVycnVwdCwgYW5kIHJldHVy biB0aGUgY3VycmVudCB0aW1lIGluIHNlY29uZHMuDQogKi8NCnZvaWQgX19pbml0IG5zX3RpbWVf aW5pdCggdm9pZCApDQp7DQoJcmVxdWVzdF9yZXNvdXJjZSggJmlvbWVtX3Jlc291cmNlLCAmdGlt ZXJfcmVzb3VyY2VbIDAgXSApOw0KCXJlcXVlc3RfcmVzb3VyY2UoICZpb21lbV9yZXNvdXJjZSwg JnRpbWVyX3Jlc291cmNlWyAxIF0gKTsNCglyZXF1ZXN0X3Jlc291cmNlKCAmaW9tZW1fcmVzb3Vy Y2UsICZ0aW1lcl9yZXNvdXJjZVsgMiBdICk7DQoNCglfX2lwaXBlX21hY2hfdGlja3NfcGVyX2pp ZmZ5ID0gTEFUQ0g7DQoNCglkYmcoMCwiXG4iDQogICAgICAgICIgc3lzdGVtLWNsb2NrOiAgICAg ICAgICAgICAgICAlZCBIelxuIg0KCQkiIHRpbWVyLWNsb2NrOiAgICAgICAgICAgICAgICAgJWQg SHogICAoPXN5c3RlbS1jbG9jay8lZCkgXG4iDQoJCSIgdGlja3NfcGVyX2ppZmZ5OiAgICAgICAg ICAgICAlZCBcbiINCgkJIiBqaWZmaXMgcGVyIHVzZWNzICAgICAgICAgICAgICVkICAgICAgKEha LXZhbHVlKVxuIg0KCQksDQoJCUNQVV9DTEtfRlJFUSwNCgkJQ0xPQ0tfVElDS19SQVRFLCBUSU1F Ul9GRElWLCANCgkJX19pcGlwZV9tYWNoX3RpY2tzX3Blcl9qaWZmeSwNCgkJSFoNCgkpOw0KDQoJ LyogY2xlYXIgdGltZXIqLw0KCVRJTUVSX0NMRUFSKFRJTUVSX1VTRUQpOw0KDQoJLyogc2V0IHRp bWVyLWlzciAqLw0KCXNldHVwX2lycSggSVJRX1RJTUVSXzAgKyBUSU1FUl9VU0VELCAmbnNfdGlt ZXJfaXJxICk7DQoNCgkvKiBpbml0IHRpbWVyICovDQoJVElNRVJfSU5JVChUSU1FUl9VU0VEKTsN Cg0KCS8qIHJlbG9hZCB0aW1lciAqLw0KCXNldF9kZWMoVElNRVJfVVNFRCxfX2lwaXBlX21hY2hf dGlja3NfcGVyX2ppZmZ5KTsgLyogYSB0aWNrIGV2ZXJ5IEhaICovDQoNCgkvKiBvayAqLw0KCW5z X3RzY29rID0gMTsNCn0NCg0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojIGVu ZAkJU1BFQ0lGSUMgU1lTVEVNLVRJTUVSLUZVTkNUSU9OUw0KKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovDQoNCg0KDQoNCiNpZmRlZiBDT05GSUdfSVBJUEUNCi8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQojIGJlZ2luCQlJUElQRS1GVU5DVElPTlMNCioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLw0KDQovKiBjYWxsZWQgYWZ0ZXIgZWFjaCB0aW1lci1pbnRlcnJ1cHQgKi8N Ci8qIG5ldmVyIGNhbGxlZCwgaWYgaW50ZXJydXB0IGlzIHRyaWdnZXJlZCBtYW51YWxseSEgKi8N CnZvaWQgX19pcGlwZV9tYWNoX2Fja3RpbWVyKHZvaWQpDQp7DQoJLyogaW50IC0+IG5zX3RpbWVy X3JlbG9hZCB0aWNrcyBkb25lICovDQoJX19pcGlwZV9tYWNoX3RzYys9bnNfdGltZXJfcmVsb2Fk Ow0KCW5zX3RpbWVyX2x4bG9zdCs9bnNfdGltZXJfcmVsb2FkOw0KDQoJLyogYWNrIGludGVycnVw dCAqLw0KCVRJTUVSX0FDS0lOVChUSU1FUl9VU0VEKTsNCn0NCkVYUE9SVF9TWU1CT0woX19pcGlw ZV9tYWNoX2Fja3RpbWVyKTsNCg0KLyogZ2V0IHRpY2tzIHNpbmNlIHN0YXJ0ICovDQp1bnNpZ25l ZCBsb25nIGxvbmcgX19pcGlwZV9tYWNoX2dldF90c2Modm9pZCkNCnsNCgl1bnNpZ25lZCBsb25n IGxvbmcgcmVzdWx0Ow0KCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQoNCglzcGluX2xvY2tfaXJxc2F2 ZV9odygmdGltZXJfbG9jaywgZmxhZ3MpOw0KCXJlc3VsdCA9IF9faXBpcGVfbWFjaF90c2MgKyBu c19nZXR0aWNrc29mZnNldChUSU1FUl9VU0VEKTsNCglzcGluX3VubG9ja19pcnFyZXN0b3JlX2h3 KCZ0aW1lcl9sb2NrLCBmbGFncyk7DQoNCglyZXR1cm4gcmVzdWx0Ow0KfQ0KRVhQT1JUX1NZTUJP TChfX2lwaXBlX21hY2hfZ2V0X3RzYyk7DQoNCi8qIHNldCBuZXcgdGltZXIgcmVsb2FkICovDQp2 b2lkIF9faXBpcGVfbWFjaF9zZXRfZGVjKHVuc2lnbmVkIGxvbmcgcmVsb2FkKQ0Kew0KCXVuc2ln bmVkIGxvbmcgdGlja3M7DQoJdW5zaWduZWQgbG9uZyBmbGFnczsNCg0KCXNwaW5fbG9ja19pcnFz YXZlX2h3KCZ0aW1lcl9sb2NrLCBmbGFncyk7DQoJDQoJLyogdGlja3Mgc2luY2UgbGFzdCBpbnQg Ki8NCgl0aWNrcyA9IG5zX2dldHRpY2tzb2Zmc2V0KFRJTUVSX1VTRUQpOw0KCV9faXBpcGVfbWFj aF90c2MgKz0gdGlja3M7DQoJbnNfdGltZXJfbHhsb3N0ICs9IHRpY2tzOw0KDQoJLyogcmVwcm9n cmFtbSB0aW1lciAqLw0KCXNldF9kZWMoVElNRVJfVVNFRCxyZWxvYWQpOw0KDQoJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZV9odygmdGltZXJfbG9jaywgZmxhZ3MpOw0KfQ0KDQpFWFBPUlRfU1lNQk9M KF9faXBpcGVfbWFjaF9zZXRfZGVjKTsNCg0KDQovKiBnZXQgdGltZXIgdmFsdWUgKi8NCnVuc2ln bmVkIGxvbmcgX19pcGlwZV9tYWNoX2dldF9kZWModm9pZCkNCnsNCglyZXR1cm4gVElNRVJfUkVB RChUSU1FUl9VU0VEKTsNCn0NCkVYUE9SVF9TWU1CT0woX19pcGlwZV9tYWNoX2dldF9kZWMpOw0K DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojIGVuZAkJSVBJUEUtRlVOQ1RJT05T DQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiNlbmRpZiAvKiBDT05GSUdfSVBJUEUg Ki8NCg0K --=-6i9a42qxBs7pHDhB8oYB-- --=-ECmjDVaUiJaGePPSgdSc Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQBFTxZybMvu5jIEpfsRAi0cAKCK3t+BdIxeUVOo9io7FkAHDeQSUgCgj7ln 7R3VTa51R6t3q8iOQ6elFVo= =CxG4 -----END PGP SIGNATURE----- --=-ECmjDVaUiJaGePPSgdSc--