Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Feb 2004 02:36:39 -0600 (CST)
From:      Mike Silbersack <silby@silby.com>
To:        emulation@freebsd.org
Subject:   Another updated RTC driver for vmware users to try
Message-ID:  <20040217023115.W17031@odysseus.silby.com>

next in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1539921637-1077006999=:17031
Content-Type: TEXT/PLAIN; charset=US-ASCII


Ok, I took a closer look at how the linux rtc driver actually works, and I
came up with this updated rtc driver.  It should be a better emulation,
but my laptop is so pokey that I have trouble noticing a difference.  It
appears that the current rtc is making the vmware client sleep too much,
so this might improve responsiveness a bit.

Anyway, give it a shot and tell me how it works.  I believe that this is
the last performance-related change to the driver, next up will be device
cloning.

To build this, just throw rtc.c in the files/ directory of the rtc port
and rebuild it.

Thanks,

Mike "Silby" Silbersack
--0-1539921637-1077006999=:17031
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="rtc.c"
Content-Transfer-Encoding: BASE64
Content-ID: <20040217023639.I17031@odysseus.silby.com>
Content-Description: 
Content-Disposition: attachment; filename="rtc.c"

LyoNCiAqIENvcHlyaWdodCBieSBWbGFkaW1pciBOLiBTaWx5YWV2IDIwMDAN
CiAqDQogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucw0KICogYXJlIG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiAqDQogKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQ0KICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRA0KICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KICogRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1INCiAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwNCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQog
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUg0KICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUDQogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
DQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFH
RS4NCiAqDQogKiAkRnJlZUJTRDogcG9ydHMvZW11bGF0b3JzL3J0Yy9maWxl
cy9ydGMuYyx2IDEuMTAgMjAwNC8wMS8yOCAwODoxNToxOSBzaWxieSBFeHAg
JA0KICogJHZtRnJlZUJTRDogdm13YXJlL3ZtbmV0LW9ubHkvZnJlZWJzZC92
bW5ldC5jLHYgMS4xNCAyMDAwLzAxLzIzIDIyOjI5OjUwIHZzaWx5YWV2IEV4
cCAkDQogKi8NCg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUg
PHN5cy9zeXN0bS5oPg0KI2luY2x1ZGUgPHN5cy9jb25mLmg+DQojaW5jbHVk
ZSA8c3lzL2Vycm5vLmg+DQojaW5jbHVkZSA8c3lzL2tlcm5lbC5oPg0KI2lu
Y2x1ZGUgPHN5cy9tYWxsb2MuaD4NCiNpbmNsdWRlIDxzeXMvbWJ1Zi5oPg0K
I2luY2x1ZGUgPHN5cy9zb2NraW8uaD4NCiNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+DQojaW5jbHVkZSA8c3lzL2ZpbGlvLmg+DQojaW5jbHVkZSA8c3lzL3Bv
bGwuaD4NCiNpbmNsdWRlIDxzeXMvcHJvYy5oPg0KI2luY2x1ZGUgPHN5cy91
aW8uaD4NCiNpbmNsdWRlIDxzeXMvdm5vZGUuaD4NCg0KI2luY2x1ZGUgPG1h
Y2hpbmUvY2xvY2suaD4NCg0KI2luY2x1ZGUgInJ0Yy5oIg0KDQojaWZkZWYg
TU9EVUxFX0RFUEVORA0KTU9EVUxFX0RFUEVORChydGMsIGxpbnV4LCAxLCAx
LCAxKTsNCiNlbmRpZg0KDQojZGVmaW5lIENERVZfTUFKT1IgMjAyDQojaWYg
ZGVmaW5lZChDREVWX01BSk9SXykgJiYgQ0RFVl9NQUpPUiAhPSBDREVWX01B
Sk9SXw0KI2Vycm9yICJDREVWX01BSk9SICE9IENERVZfTUFKT1JfIg0KI2Vu
ZGlmDQoNCiNkZWZpbmUJREVWSUNFX05BTUUJInJ0YyINCg0KZW51bSBydGNf
bG9nX2xldmVsIHtMZW50ZXI9MCwgTGV4aXQ9MSwgTGluZm8sIEx3YXJuaW5n
LCBMZmFpbH07DQojZGVmaW5lIERFQlVHIDANCiNpZiBERUJVRw0KI2RlZmlu
ZSBERUIoeCkgeA0KI2RlZmluZSBETG9nKGxldmVsLCBmbXQsIGFyZ3MuLi4p
CXByaW50ZigiJXM6ICIgZm10ICJcbiIsIF9fRlVOQ1RJT05fXyAsICAgIyNh
cmdzKQ0KI2Vsc2UgLyogIURFQlVHICovDQojZGVmaW5lIERFQih4KQ0KI2Rl
ZmluZQlETG9nKGxldmVsLCBmbXQsIGFyZ3MuLi4pIA0KI2VuZGlmIC8qIERF
QlVHICovDQoNCnN0cnVjdCBydGNfc29mdGMgew0KCWRldl90CQlkZXY7IC8q
IEJhY2sgcmVmZXJlbmNlIHRvIGRldmljZSAqLw0KCXN0cnVjdCB7DQoJIGlu
dAlmcmVxOw0KCSBzdHJ1Y3Qgew0KCQlpbnQJb3BlbmVkOjE7DQoJCWludCAJ
ZW5hYmxlZDoxOw0KCSB9IGZsYWdzOw0KCXN0cnVjdCBjYWxsb3V0IHJ0Y19o
YW5kbGU7DQoJc3RydWN0IHRpbWVzcGVjIGxhc3R0aW1lOw0KCXN0cnVjdCBz
ZWxpbmZvIHNpcDsNCglpbnQgd29rZW47DQoJdm9pZCAqcnRjX2lkZW50Ow0K
CX0gdmFyOw0KfTsNCg0Kc3RhdGljIGRfb3Blbl90CQlydGNfb3BlbjsNCnN0
YXRpYyBkX2Nsb3NlX3QgCXJ0Y19jbG9zZTsNCnN0YXRpYyBkX2lvY3RsX3QJ
cnRjX2lvY3RsOw0Kc3RhdGljIGRfcG9sbF90CQlydGNfcG9sbDsNCnN0YXRp
YyBkX3JlYWRfdAkJcnRjX3JlYWQ7DQoNCnN0YXRpYyB2b2lkIHJ0Y19jYWxs
YmFjayh2b2lkICp4dHApOw0Kc3RhdGljIGludCBydGNfbW9kZWV2ZW50KG1v
ZHVsZV90IG1vZCwgaW50IGNtZCwgdm9pZCAqYXJnKTsNCg0Kc3RhdGljIHN0
cnVjdCBjZGV2c3cgcnRjX2NkZXZzdyA9IHsNCiNpZiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA1MDAxMDQNCgkuZF9vcGVuID0JcnRjX29wZW4sDQoJLmRfY2xv
c2UgPQlydGNfY2xvc2UsDQoJLmRfaW9jdGwgPQlydGNfaW9jdGwsDQoJLmRf
cG9sbCA9CXJ0Y19wb2xsLA0KCS5kX3JlYWQgPQlydGNfcmVhZCwNCgkuZF9u
YW1lID0JREVWSUNFX05BTUUsDQoJLmRfbWFqID0JQ0RFVl9NQUpPUiwNCiNl
bHNlDQoJLyogb3BlbiAqLwlydGNfb3BlbiwNCgkvKiBjbG9zZSAqLwlydGNf
Y2xvc2UsDQoJLyogcmVhZCAqLwlydGNfcmVhZCwNCgkvKiB3cml0ZSAqLwlu
b3dyaXRlLA0KCS8qIGlvY3RsICovCXJ0Y19pb2N0bCwNCgkvKiBwb2xsICov
CXJ0Y19wb2xsLA0KCS8qIG1tYXAgKi8Jbm9tbWFwLA0KCS8qIHN0cmF0ZWd5
ICovCW5vc3RyYXRlZ3ksDQoJLyogbmFtZSAqLwlERVZJQ0VfTkFNRSwNCgkv
KiBtYWogKi8JQ0RFVl9NQUpPUiwNCgkvKiBkdW1wICovCW5vZHVtcCwNCgkv
KiBwc2l6ZSAqLwlub3BzaXplLA0KCS8qIGZsYWdzICovCTAsDQojaWYgX19G
cmVlQlNEX3ZlcnNpb24gPD0gNTAwMDE4DQoJLyogYm1haiAqLwktMSwNCiNl
bmRpZg0KI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAxOCB8fCBfX0Zy
ZWVCU0RfdmVyc2lvbiA+PSA0MzAwMDANCgkvKiBrcWZpbHRlciAqLwlub2tx
ZmlsdGVyLA0KI2VuZGlmDQojZW5kaWYgDQp9Ow0KDQovKiANCiAqIE5vdyBk
ZWNsYXJlIHRoZSBtb2R1bGUgdG8gdGhlIHN5c3RlbS4gDQogKiBJTVBPUlRB
TlQ6IE11c3QgYmUgYmVmb3JlIG5ldGdyYXBoIG5vZGUgZGVjbGFyYXRpb24u
DQogKi8NCkRFVl9NT0RVTEUocnRjLCBydGNfbW9kZWV2ZW50LCAwKTsNCg0K
DQovKiAtPS09LT0tPS09LT0tPS09LT0gYXR0YWNoL2RldGFjaCBkZXZpY2Ug
c3R1ZmYgLT0tPS09LT0tPS09LT0tPS09ICovDQoNCnN0YXRpYyBzdHJ1Y3Qg
cnRjX3NvZnRjICoNCnJ0Y19hdHRhY2goZGV2X3QgZGV2KQ0Kew0KCXN0cnVj
dCBydGNfc29mdGMgKnNjOw0KCWludCB1bml0Ow0KDQojaWYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gNTAwMDE0DQoJdW5pdCA9IGRldjJ1bml0KGRldik7DQoj
ZWxzZQ0KCXVuaXQgPSBsbWlub3IoZGV2KTsNCiNlbmRpZg0KCURMb2coTGVu
dGVyLCAiJWQgJXAiLCB1bml0LCBkZXYpOw0KCWlmIChkZXYtPnNpX2RydjEp
IHsNCgkJRExvZyhMZXhpdCwgIm9sZCAlcCwgJXAiLCBkZXYsIGRldi0+c2lf
ZHJ2MSk7DQoJCXJldHVybiBkZXYtPnNpX2RydjE7DQoJfQ0KDQoJTUFMTE9D
KHNjLCBzdHJ1Y3QgcnRjX3NvZnRjKiwgc2l6ZW9mKCpzYyksIE1fREVWQlVG
LCBNX1dBSVRPSyk7DQoJaWYgKHNjPT1OVUxMKQ0KCQlyZXR1cm4gTlVMTDsN
Cg0KCWJ6ZXJvKHNjLCBzaXplb2YoKnNjKSk7DQoJZGV2LT5zaV9kcnYxID0g
c2M7IC8qIExpbmsgdG9nZXRoZXIgKi8NCglzYy0+ZGV2ID0gZGV2Ow0KCXNj
LT52YXIuZnJlcSA9IDE7DQoNCiNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1
MDAwMDANCgljYWxsb3V0X2luaXQoJnNjLT52YXIucnRjX2hhbmRsZSwgMSk7
DQojZWxzZQ0KCWNhbGxvdXRfaW5pdCgmc2MtPnZhci5ydGNfaGFuZGxlKTsN
CiNlbmRpZg0KCQ0KCURMb2coTGV4aXQsICJuZXcgJXAsJXAiLCBkZXYsIHNj
KTsNCglyZXR1cm4gc2M7DQp9DQoNCnN0YXRpYyBpbnQNCnJ0Y19kZXRhY2go
ZGV2X3QgZGV2LCBzdHJ1Y3QgcnRjX3NvZnRjICpzYykgDQp7DQoJaW50IGVy
cm9yPTA7DQoNCglpZiAoc2MgPT0gTlVMTCkgew0KCQlyZXR1cm4gZXJyb3I7
DQoJfQ0KDQoJY2FsbG91dF9zdG9wKCZzYy0+dmFyLnJ0Y19oYW5kbGUpOw0K
CUZSRUUoc2MsIE1fREVWQlVGKTsNCglkZXYtPnNpX2RydjEgPSBOVUxMOw0K
CXJldHVybiBlcnJvcjsNCn0NCg0KLyogLT0tPS09LT0tPS09LT0tPS09IGNo
YXJhY3RlciBkZXZpY2Ugc3R1ZmYgLT0tPS09LT0tPS09LT0tPS09ICovDQoN
CmludCANCiNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMjMNCnJ0Y19v
cGVuKGRldl90IGRldiwgaW50IG9mbGFnLCBpbnQgb3R5cCwgc3RydWN0IHRo
cmVhZCAqcCkNCiNlbHNlDQpydGNfb3BlbihkZXZfdCBkZXYsIGludCBvZmxh
ZywgaW50IG90eXAsIHN0cnVjdCBwcm9jICpwKQ0KI2VuZGlmDQp7DQoJc3Ry
dWN0IHJ0Y19zb2Z0YyAqc2M7DQoJDQoJc2MgPSBydGNfYXR0YWNoKGRldik7
DQoJDQoJaWYgKHNjPT1OVUxMKQ0KCQlyZXR1cm4gKEVBR0FJTik7DQoJDQoJ
aWYgKHNjLT52YXIuZmxhZ3Mub3BlbmVkKQ0KCQlyZXR1cm4gKEVCVVNZKTsN
CgkNCglzYy0+dmFyLmZsYWdzLm9wZW5lZCA9IDE7DQoJDQoJcmV0dXJuIDA7
DQp9DQoNCmludCANCiNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMjMN
CnJ0Y19jbG9zZShkZXZfdCBkZXYsIGludCBmZmxhZywgaW50IG90eXAsIHN0
cnVjdCB0aHJlYWQgKnApDQojZWxzZQ0KcnRjX2Nsb3NlKGRldl90IGRldiwg
aW50IGZmbGFnLCBpbnQgb3R5cCwgc3RydWN0IHByb2MgKnApDQojZW5kaWYN
CnsNCglzdHJ1Y3QgcnRjX3NvZnRjICpzYyA9IChzdHJ1Y3QgcnRjX3NvZnRj
ICopIGRldi0+c2lfZHJ2MTsNCg0KCXJ0Y19kZXRhY2goZGV2LCBzYyk7DQoJ
c2MtPnZhci5mbGFncy5vcGVuZWQgPSAwOw0KCXJldHVybiAwOw0KfQ0KDQpp
bnQgDQojaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDIzDQpydGNfaW9j
dGwoZGV2X3QgZGV2LCB1X2xvbmcgY21kLCBjYWRkcl90IGFyZywgaW50IG1v
ZGUsIHN0cnVjdCB0aHJlYWQgKnApDQojZWxzZQ0KcnRjX2lvY3RsKGRldl90
IGRldiwgdV9sb25nIGNtZCwgY2FkZHJfdCBhcmcsIGludCBtb2RlLCBzdHJ1
Y3QgcHJvYyAqcCkNCiNlbmRpZg0Kew0KCXN0cnVjdCBydGNfc29mdGMgKnNj
ID0gKHN0cnVjdCBydGNfc29mdGMgKikgZGV2LT5zaV9kcnYxOw0KCWludCBl
cnJvcj0wLCBmcmVxLCBzbGVlcDsNCgkNCglETG9nKExlbnRlciwgImNtZCAw
eCUwNGx4IiwgY21kKTsNCglzd2l0Y2ggKGNtZCkgew0KCWNhc2UgUlRDSU9f
SVJRUF9TRVQ6DQoJCWZyZXEgPSAqKGludCAqKWFyZzsNCgkJaWYgKGZyZXEg
PCAyKSB7DQoJCQllcnJvciA9IEVJTlZBTDsNCgkJCWJyZWFrOw0KCQl9DQoJ
CWlmIChmcmVxID4gMTAyNCkgew0KCQkJZXJyb3IgPSBFSU5WQUw7DQoJCQli
cmVhazsNCgkJfQ0KCQlzYy0+dmFyLmZyZXEgPSBmcmVxOw0KCQlpZiAoc2Mt
PnZhci5mcmVxICogOSA+IGh6ICogOCkgew0KCQkJc2MtPnZhci5mcmVxID0g
aHo7DQoJCQlwcmludGYoInJ0YzogJWQgPiBrZXJuLmh6OiBUaW1pbmcgd2ls
bCBiZSBpbmFjY3VyYXRlLCBwbGVhc2UgaW5jcmVhc2UgaHouXG4iLCBzYy0+
dmFyLmZyZXEpOw0KCQl9DQoJCXNsZWVwID0gaHogLyBzYy0+dmFyLmZyZXE7
DQoJCURMb2coTGluZm8sICJTZXQgUlRDIGZyZXEgJWQiLCBzYy0+dmFyLmZy
ZXEpOw0KCQljYWxsb3V0X3N0b3AoJnNjLT52YXIucnRjX2hhbmRsZSk7DQoJ
CW5hbm91cHRpbWUoJnNjLT52YXIubGFzdHRpbWUpOw0KCQljYWxsb3V0X3Jl
c2V0KCZzYy0+dmFyLnJ0Y19oYW5kbGUsIHNsZWVwLCAmcnRjX2NhbGxiYWNr
LCAodm9pZCAqKXNjKTsNCgkJYnJlYWs7DQoJY2FzZSBSVENJT19QSUVfT046
DQoJCXNjLT52YXIuZmxhZ3MuZW5hYmxlZCA9IDE7DQoJCURMb2coTGluZm8s
ICJFbmFibGUgaW50ZXJydXB0cyIpOw0KCQlicmVhazsNCglkZWZhdWx0Og0K
CQlETG9nKExmYWlsLCAiVW5rbm93biBJT0NUTCAweCUwNGx4IiwgY21kKTsN
CgkJZXJyb3IgPSBFSU5WQUw7DQoJCWJyZWFrOw0KCX0NCglETG9nKExlbnRl
ciwgInJlc3VsdCAlZCIsIGVycm9yKTsNCglyZXR1cm4gKGVycm9yKTsNCn0N
Cg0KaW50IA0KI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAyMw0KcnRj
X3BvbGwoZGV2X3QgZGV2LCBpbnQgZXZlbnRzLCBzdHJ1Y3QgdGhyZWFkICpw
KQ0KI2Vsc2UNCnJ0Y19wb2xsKGRldl90IGRldiwgaW50IGV2ZW50cywgc3Ry
dWN0IHByb2MgKnApDQojZW5kaWYNCnsNCglzdHJ1Y3QgcnRjX3NvZnRjICpz
YyA9IChzdHJ1Y3QgcnRjX3NvZnRjICopIGRldi0+c2lfZHJ2MTsNCiAgIAlp
bnQgcmV2ZW50cyA9IDA7DQoJDQoJaWYgKCFzYy0+dmFyLmZsYWdzLmVuYWJs
ZWQpIA0KCQlyZXR1cm4gMDsNCg0KCWlmIChldmVudHMpIHsNCgkJRExvZyhM
aW5mbywgIkRlbGF5IGZvciAlZCB1c2VjIiwgZGVsYXkpOw0KCQlpZiAoc2Mt
PnZhci53b2tlbikgew0KCQkJcmV2ZW50cyA9IGV2ZW50czsNCgkJfSBlbHNl
IHsNCgkJCXNlbHJlY29yZChwLCAmc2MtPnZhci5zaXApOw0KCQl9DQoJfQ0K
CXJldHVybiByZXZlbnRzOw0KfQ0KDQppbnQgDQpydGNfcmVhZChkZXZfdCBk
ZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzIF9fdW51c2VkKQ0Kew0K
CXN0cnVjdCBydGNfc29mdGMgKnNjID0gKHN0cnVjdCBydGNfc29mdGMgKikg
ZGV2LT5zaV9kcnYxOw0KCWludCBlcnJvciA9IDA7DQoJDQoJaWYgKCFzYy0+
dmFyLmZsYWdzLmVuYWJsZWQpIA0KCQlyZXR1cm4gMDsNCg0KCWlmIChmbGFn
cyAmIElPX05ERUxBWSkNCgkJcmV0dXJuIEVBR0FJTjsNCg0KCURMb2coTGlu
Zm8sICJEZWxheSBmb3IgJWQgdXNlYyIsIGRlbGF5KTsNCglpZiAoc2MtPnZh
ci53b2tlbiA9PSAwKQ0KCQl0c2xlZXAoJnNjLT52YXIucnRjX2lkZW50LCBQ
Q0FUQ0gsICJydGMgcmQiLCBoeiAqIDEwKTsNCiNpZiAwDQoJaWYgKHNjLT52
YXIud29rZW4gPiAxKQ0KCQlwcmludGYoIndva2VuOiAlZFxuIiwgc2MtPnZh
ci53b2tlbik7DQojZW5kaWYNCg0KCWlmICh1aW8tPnVpb19yZXNpZCA9PSBz
aXplb2YoaW50KSkgew0KCQllcnJvciA9IHVpb21vdmUoJnNjLT52YXIud29r
ZW4sIHNpemVvZihpbnQpLCB1aW8pOw0KCX0NCglzYy0+dmFyLndva2VuID0g
MDsNCglyZXR1cm4gZXJyb3I7DQp9DQoNCi8qIC09LT0tPS09LT0tPS09LT0t
PSBtb2R1bGUgbG9hZC91bmxvYWQgc3R1ZmYgLT0tPS09LT0tPS09LT0tPS09
ICovDQpzdGF0aWMgZGV2X3QgcnRjX2RldiA9IE5VTEw7DQoNCnN0YXRpYyBp
bnQNCmluaXRfbW9kdWxlKHZvaWQpDQp7DQoJaW50IGVycm9yID0gMDsNCg0K
I2lmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNTAwMTA0DQogICAJZXJyb3IgPSBj
ZGV2c3dfYWRkKCZydGNfY2RldnN3KTsNCglpZiAoZXJyb3IpIA0KCQlyZXR1
cm4gZXJyb3I7DQojZW5kaWYNCg0KCXJ0Y19kZXYgPSBtYWtlX2RldigmcnRj
X2NkZXZzdywgMCwgVUlEX1JPT1QsIEdJRF9XSEVFTCwgMDY0NCwgREVWSUNF
X05BTUUpOw0KCWlmIChydGNfZGV2PT1OVUxMKQ0KCQllcnJvciA9IEVOT01F
TTsNCg0KCXJldHVybiBlcnJvcjsNCn0NCg0KDQoNCnN0YXRpYyBpbnQNCmNs
ZWFudXBfbW9kdWxlKHZvaWQpDQp7DQoJaW50IGVycm9yID0gMDsNCg0KCWRl
c3Ryb3lfZGV2KHJ0Y19kZXYpOw0KI2lmIF9fRnJlZUJTRF92ZXJzaW9uIDwg
NTAwMTA0DQoJZXJyb3IgPSBjZGV2c3dfcmVtb3ZlKCZydGNfY2RldnN3KTsN
CiNlbmRpZg0KCURMb2coTGluZm8sICJyZXR1cm4gJWQiLCBlcnJvcik7DQoJ
cmV0dXJuIGVycm9yOw0KfQ0KDQpzdGF0aWMgaW50DQpydGNfbW9kZWV2ZW50
KG1vZHVsZV90IG1vZCwgaW50IGNtZCwgdm9pZCAqYXJnKQ0Kew0KICAgIGlu
dCAgZXJyb3IgPSAwOw0KDQogICAgc3dpdGNoIChjbWQpIHsNCiAgICBjYXNl
IE1PRF9MT0FEOg0KCWVycm9yID0gaW5pdF9tb2R1bGUoKTsNCglicmVhazsJ
DQoNCiAgICBjYXNlIE1PRF9VTkxPQUQ6DQogICAgICAgIC8qIGZhbGwgdGhy
b3VnaCAqLw0KICAgIGNhc2UgTU9EX1NIVVRET1dOOg0KIAllcnJvciA9IGNs
ZWFudXBfbW9kdWxlKCk7DQoJYnJlYWs7DQoNCiAgICBkZWZhdWx0OgkvKiB3
ZSBvbmx5IHVuZGVyc3RhbmQgbG9hZC91bmxvYWQgKi8NCgllcnJvciA9IEVJ
TlZBTDsNCglicmVhazsNCiAgICB9DQoNCiAgICByZXR1cm4gKGVycm9yKTsN
Cn0NCg0Kdm9pZA0KcnRjX2NhbGxiYWNrKHZvaWQgKnh0cCkNCnsNCglpbnQg
c2xlZXA7DQoJc3RydWN0IHJ0Y19zb2Z0YyAqc2MgPSAoc3RydWN0IHJ0Y19z
b2Z0YyAqKXh0cDsNCglzdHJ1Y3QgdGltZXNwZWMgY3VydGltZSwgbmV4dHRp
bWUsIGluY3JlbWVudDsNCg0KCWlmIChjYWxsb3V0X3BlbmRpbmcoJnNjLT52
YXIucnRjX2hhbmRsZSkgfHwgIWNhbGxvdXRfYWN0aXZlKCZzYy0+dmFyLnJ0
Y19oYW5kbGUpKQ0KCQlyZXR1cm47DQoJLyogV2FrZXVwIHNsZWVwZXJzICov
DQoJc2MtPnZhci53b2tlbisrOw0KCXNlbHdha2V1cCgmc2MtPnZhci5zaXAp
Ow0KCXdha2V1cCgmc2MtPnZhci5ydGNfaWRlbnQpOw0KDQoJLyogU2V0dXAg
Zm9yIG91ciBuZXh0IG5hcC4gKi8NCgluYW5vdXB0aW1lKCZjdXJ0aW1lKTsN
CnJlc3RhcnQ6DQoJaW5jcmVtZW50LnR2X3NlYyA9IDA7DQoJaW5jcmVtZW50
LnR2X25zZWMgPSAxMDAwMDAwMDAwIC8gc2MtPnZhci5mcmVxOw0KCXRpbWVz
cGVjYWRkKCZzYy0+dmFyLmxhc3R0aW1lLCAmaW5jcmVtZW50KTsNCgluZXh0
dGltZS50dl9zZWMgPSBzYy0+dmFyLmxhc3R0aW1lLnR2X3NlYzsNCgluZXh0
dGltZS50dl9uc2VjID0gc2MtPnZhci5sYXN0dGltZS50dl9uc2VjOw0KCXRp
bWVzcGVjYWRkKCZuZXh0dGltZSwgJmluY3JlbWVudCk7DQoJaWYgKHRpbWVz
cGVjY21wKCZuZXh0dGltZSwgJmN1cnRpbWUsIDwpKSB7DQoJCS8qIENhdGNo
IHVwIGlmIHdlIGxhZyBjdXJ0aW1lICovDQoJCXNjLT52YXIubGFzdHRpbWUu
dHZfc2VjID0gY3VydGltZS50dl9zZWM7DQoJCXNjLT52YXIubGFzdHRpbWUu
dHZfbnNlYyA9IGN1cnRpbWUudHZfbnNlYzsNCgkJdGltZXNwZWNzdWIoJnNj
LT52YXIubGFzdHRpbWUsICZpbmNyZW1lbnQpOw0KCQl0aW1lc3BlY3N1Yigm
bmV4dHRpbWUsICZjdXJ0aW1lKTsNCiNpZiAwDQoJCXByaW50ZigibGFnZ2lu
ZyBjdXJ0aW1lIGJ5ICVkLiVsZFxuIiwgbmV4dHRpbWUudHZfc2VjLCBuZXh0
dGltZS50dl9uc2VjKTsNCiNlbmRpZg0KCQlnb3RvIHJlc3RhcnQ7DQoJfSBl
bHNlIHsNCgkJdGltZXNwZWNzdWIoJm5leHR0aW1lLCAmY3VydGltZSk7DQoJ
CXNsZWVwID0gbmV4dHRpbWUudHZfbnNlYyAvICgxMDAwMDAwMDAwIC8gaHop
Ow0KCX0NCgljYWxsb3V0X3Jlc2V0KCZzYy0+dmFyLnJ0Y19oYW5kbGUsIHNs
ZWVwLCAmcnRjX2NhbGxiYWNrLCB4dHApOw0KfQ0K

--0-1539921637-1077006999=:17031--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040217023115.W17031>