Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Jan 2004 15:16:47 -0600 (CST)
From:      Mike Silbersack <silby@silby.com>
To:        emulation@freebsd.org
Subject:   New /dev/rtc driver for vmware
Message-ID:  <20040124151131.I29927@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-1432871052-1074979007=:29927
Content-Type: TEXT/PLAIN; charset=US-ASCII


Over the last few days, I've been hacking together a new /dev/rtc driver
for vmware to use.  I still need to do a bit more work to get its timing
better (which may involve making other changes to the kernel), but I think
that it's ready for general testing.  Please copy the included rtc.c into
the files/ directory of the rtc port, rebuild, and see how it works for
you.  Also, make sure that you're running with kern.hz = 1000 or greater;
it's not going to work well otherwise.

The biggest change you'll notice is that when running vmware is that
processor usage will be much lower.

Things I have yet to do with the driver:

1.  Make it work decently at hz = 100
1a.  Improve its timing
2.  Implement device cloning so that under 5.x the driver can be used by
multiple copies of vmware at once.

But for now, it seems to work pretty well, and I may just commit it as is,
unless people report other problems with it.

Thanks,

Mike "Silby" Silbersack
--0-1432871052-1074979007=:29927
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="rtc.c"
Content-Transfer-Encoding: BASE64
Content-ID: <20040124151647.U29927@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
cy9ydGMuYyx2IDEuOCAyMDAzLzA1LzE1IDEzOjA2OjU3IG1iciBFeHAgJA0K
ICogJHZtRnJlZUJTRDogdm13YXJlL3ZtbmV0LW9ubHkvZnJlZWJzZC92bW5l
dC5jLHYgMS4xNCAyMDAwLzAxLzIzIDIyOjI5OjUwIHZzaWx5YWV2IEV4cCAk
DQogKi8NCg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUgPHN5
cy9zeXN0bS5oPg0KI2luY2x1ZGUgPHN5cy9jb25mLmg+DQojaW5jbHVkZSA8
c3lzL2Vycm5vLmg+DQojaW5jbHVkZSA8c3lzL2tlcm5lbC5oPg0KI2luY2x1
ZGUgPHN5cy9tYWxsb2MuaD4NCiNpbmNsdWRlIDxzeXMvbWJ1Zi5oPg0KI2lu
Y2x1ZGUgPHN5cy9zb2NraW8uaD4NCiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+
DQojaW5jbHVkZSA8c3lzL2ZpbGlvLmg+DQojaW5jbHVkZSA8c3lzL3BvbGwu
aD4NCiNpbmNsdWRlIDxzeXMvcHJvYy5oPg0KI2luY2x1ZGUgPHN5cy91aW8u
aD4NCiNpbmNsdWRlIDxzeXMvdm5vZGUuaD4NCg0KI2luY2x1ZGUgPG1hY2hp
bmUvY2xvY2suaD4NCg0KI2luY2x1ZGUgInJ0Yy5oIg0KDQojaWZkZWYgTU9E
VUxFX0RFUEVORA0KTU9EVUxFX0RFUEVORChydGMsIGxpbnV4LCAxLCAxLCAx
KTsNCiNlbmRpZg0KDQojZGVmaW5lIENERVZfTUFKT1IgMjAyDQojaWYgZGVm
aW5lZChDREVWX01BSk9SXykgJiYgQ0RFVl9NQUpPUiAhPSBDREVWX01BSk9S
Xw0KI2Vycm9yICJDREVWX01BSk9SICE9IENERVZfTUFKT1JfIg0KI2VuZGlm
DQoNCiNkZWZpbmUJREVWSUNFX05BTUUJInJ0YyINCg0KZW51bSBydGNfbG9n
X2xldmVsIHtMZW50ZXI9MCwgTGV4aXQ9MSwgTGluZm8sIEx3YXJuaW5nLCBM
ZmFpbH07DQojZGVmaW5lIERFQlVHIDANCiNpZiBERUJVRw0KI2RlZmluZSBE
RUIoeCkgeA0KI2RlZmluZSBETG9nKGxldmVsLCBmbXQsIGFyZ3MuLi4pCXBy
aW50ZigiJXM6ICIgZm10ICJcbiIsIF9fRlVOQ1RJT05fXyAsICAgIyNhcmdz
KQ0KI2Vsc2UgLyogIURFQlVHICovDQojZGVmaW5lIERFQih4KQ0KI2RlZmlu
ZQlETG9nKGxldmVsLCBmbXQsIGFyZ3MuLi4pIA0KI2VuZGlmIC8qIERFQlVH
ICovDQoNCnN0cnVjdCBydGNfc29mdGMgew0KCWRldl90CQlkZXY7IC8qIEJh
Y2sgcmVmZXJlbmNlIHRvIGRldmljZSAqLw0KCXN0cnVjdCB7DQoJIGludAlm
cmVxOw0KCSBzdHJ1Y3Qgew0KCQlpbnQJb3BlbmVkOjE7DQoJCWludCAJZW5h
YmxlZDoxOw0KCSB9IGZsYWdzOw0KCXN0cnVjdCBjYWxsb3V0IHJ0Y19oYW5k
bGU7DQoJc3RydWN0IHRpbWVzcGVjIGxhc3R0aW1lOw0KCXN0cnVjdCBzZWxp
bmZvIHNpcDsNCglpbnQgd29rZW47DQoJdm9pZCAqcnRjX2lkZW50Ow0KCX0g
dmFyOw0KfTsNCg0Kc3RhdGljIGRfb3Blbl90CQlydGNfb3BlbjsNCnN0YXRp
YyBkX2Nsb3NlX3QgCXJ0Y19jbG9zZTsNCnN0YXRpYyBkX2lvY3RsX3QJcnRj
X2lvY3RsOw0Kc3RhdGljIGRfcG9sbF90CQlydGNfcG9sbDsNCnN0YXRpYyBk
X3JlYWRfdAkJcnRjX3JlYWQ7DQoNCnN0YXRpYyB2b2lkIHJ0Y19jYWxsYmFj
ayh2b2lkICp4dHApOw0Kc3RhdGljIGludCBydGNfbW9kZWV2ZW50KG1vZHVs
ZV90IG1vZCwgaW50IGNtZCwgdm9pZCAqYXJnKTsNCg0Kc3RhdGljIHN0cnVj
dCBjZGV2c3cgcnRjX2NkZXZzdyA9IHsNCiNpZiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSA1MDAxMDQNCgkuZF9vcGVuID0JcnRjX29wZW4sDQoJLmRfY2xvc2Ug
PQlydGNfY2xvc2UsDQoJLmRfaW9jdGwgPQlydGNfaW9jdGwsDQoJLmRfcG9s
bCA9CXJ0Y19wb2xsLA0KCS5kX3JlYWQgPQlydGNfcmVhZCwNCgkuZF9uYW1l
ID0JREVWSUNFX05BTUUsDQoJLmRfbWFqID0JQ0RFVl9NQUpPUiwNCiNlbHNl
DQoJLyogb3BlbiAqLwlydGNfb3BlbiwNCgkvKiBjbG9zZSAqLwlydGNfY2xv
c2UsDQoJLyogcmVhZCAqLwlydGNfcmVhZCwNCgkvKiB3cml0ZSAqLwlub3dy
aXRlLA0KCS8qIGlvY3RsICovCXJ0Y19pb2N0bCwNCgkvKiBwb2xsICovCXJ0
Y19wb2xsLA0KCS8qIG1tYXAgKi8Jbm9tbWFwLA0KCS8qIHN0cmF0ZWd5ICov
CW5vc3RyYXRlZ3ksDQoJLyogbmFtZSAqLwlERVZJQ0VfTkFNRSwNCgkvKiBt
YWogKi8JQ0RFVl9NQUpPUiwNCgkvKiBkdW1wICovCW5vZHVtcCwNCgkvKiBw
c2l6ZSAqLwlub3BzaXplLA0KCS8qIGZsYWdzICovCTAsDQojaWYgX19GcmVl
QlNEX3ZlcnNpb24gPD0gNTAwMDE4DQoJLyogYm1haiAqLwktMSwNCiNlbmRp
Zg0KI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAxOCB8fCBfX0ZyZWVC
U0RfdmVyc2lvbiA+PSA0MzAwMDANCgkvKiBrcWZpbHRlciAqLwlub2txZmls
dGVyLA0KI2VuZGlmDQojZW5kaWYgDQp9Ow0KDQovKiANCiAqIE5vdyBkZWNs
YXJlIHRoZSBtb2R1bGUgdG8gdGhlIHN5c3RlbS4gDQogKiBJTVBPUlRBTlQ6
IE11c3QgYmUgYmVmb3JlIG5ldGdyYXBoIG5vZGUgZGVjbGFyYXRpb24uDQog
Ki8NCkRFVl9NT0RVTEUocnRjLCBydGNfbW9kZWV2ZW50LCAwKTsNCg0KDQov
KiAtPS09LT0tPS09LT0tPS09LT0gYXR0YWNoL2RldGFjaCBkZXZpY2Ugc3R1
ZmYgLT0tPS09LT0tPS09LT0tPS09ICovDQoNCnN0YXRpYyBzdHJ1Y3QgcnRj
X3NvZnRjICoNCnJ0Y19hdHRhY2goZGV2X3QgZGV2KQ0Kew0KCXN0cnVjdCBy
dGNfc29mdGMgKnNjOw0KCWludCB1bml0Ow0KDQojaWYgX19GcmVlQlNEX3Zl
cnNpb24gPj0gNTAwMDE0DQoJdW5pdCA9IGRldjJ1bml0KGRldik7DQojZWxz
ZQ0KCXVuaXQgPSBsbWlub3IoZGV2KTsNCiNlbmRpZg0KCURMb2coTGVudGVy
LCAiJWQgJXAiLCB1bml0LCBkZXYpOw0KCWlmIChkZXYtPnNpX2RydjEpIHsN
CgkJRExvZyhMZXhpdCwgIm9sZCAlcCwgJXAiLCBkZXYsIGRldi0+c2lfZHJ2
MSk7DQoJCXJldHVybiBkZXYtPnNpX2RydjE7DQoJfQ0KDQoJTUFMTE9DKHNj
LCBzdHJ1Y3QgcnRjX3NvZnRjKiwgc2l6ZW9mKCpzYyksIE1fREVWQlVGLCBN
X1dBSVRPSyk7DQoJaWYgKHNjPT1OVUxMKQ0KCQlyZXR1cm4gTlVMTDsNCg0K
CWJ6ZXJvKHNjLCBzaXplb2YoKnNjKSk7DQoJZGV2LT5zaV9kcnYxID0gc2M7
IC8qIExpbmsgdG9nZXRoZXIgKi8NCglzYy0+ZGV2ID0gZGV2Ow0KCXNjLT52
YXIuZnJlcSA9IDE7DQoNCiNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAw
MDANCgljYWxsb3V0X2luaXQoJnNjLT52YXIucnRjX2hhbmRsZSwgMSk7DQoj
ZWxzZQ0KCWNhbGxvdXRfaW5pdCgmc2MtPnZhci5ydGNfaGFuZGxlKTsNCiNl
bmRpZg0KCQ0KCURMb2coTGV4aXQsICJuZXcgJXAsJXAiLCBkZXYsIHNjKTsN
CglyZXR1cm4gc2M7DQp9DQoNCnN0YXRpYyBpbnQNCnJ0Y19kZXRhY2goZGV2
X3QgZGV2LCBzdHJ1Y3QgcnRjX3NvZnRjICpzYykgDQp7DQoJaW50IGVycm9y
PTA7DQoNCglpZiAoc2MgPT0gTlVMTCkgew0KCQlyZXR1cm4gZXJyb3I7DQoJ
fQ0KDQoJY2FsbG91dF9zdG9wKCZzYy0+dmFyLnJ0Y19oYW5kbGUpOw0KCUZS
RUUoc2MsIE1fREVWQlVGKTsNCglkZXYtPnNpX2RydjEgPSBOVUxMOw0KCXJl
dHVybiBlcnJvcjsNCn0NCg0KLyogLT0tPS09LT0tPS09LT0tPS09IGNoYXJh
Y3RlciBkZXZpY2Ugc3R1ZmYgLT0tPS09LT0tPS09LT0tPS09ICovDQoNCmlu
dCANCiNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMjMNCnJ0Y19vcGVu
KGRldl90IGRldiwgaW50IG9mbGFnLCBpbnQgb3R5cCwgc3RydWN0IHRocmVh
ZCAqcCkNCiNlbHNlDQpydGNfb3BlbihkZXZfdCBkZXYsIGludCBvZmxhZywg
aW50IG90eXAsIHN0cnVjdCBwcm9jICpwKQ0KI2VuZGlmDQp7DQoJc3RydWN0
IHJ0Y19zb2Z0YyAqc2M7DQoJDQoJc2MgPSBydGNfYXR0YWNoKGRldik7DQoJ
DQoJaWYgKHNjPT1OVUxMKQ0KCQlyZXR1cm4gKEVBR0FJTik7DQoJDQoJaWYg
KHNjLT52YXIuZmxhZ3Mub3BlbmVkKQ0KCQlyZXR1cm4gKEVCVVNZKTsNCgkN
CglzYy0+dmFyLmZsYWdzLm9wZW5lZCA9IDE7DQoJDQoJcmV0dXJuIDA7DQp9
DQoNCmludCANCiNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMjMNCnJ0
Y19jbG9zZShkZXZfdCBkZXYsIGludCBmZmxhZywgaW50IG90eXAsIHN0cnVj
dCB0aHJlYWQgKnApDQojZWxzZQ0KcnRjX2Nsb3NlKGRldl90IGRldiwgaW50
IGZmbGFnLCBpbnQgb3R5cCwgc3RydWN0IHByb2MgKnApDQojZW5kaWYNCnsN
CglzdHJ1Y3QgcnRjX3NvZnRjICpzYyA9IChzdHJ1Y3QgcnRjX3NvZnRjICop
IGRldi0+c2lfZHJ2MTsNCg0KCXJ0Y19kZXRhY2goZGV2LCBzYyk7DQoJc2Mt
PnZhci5mbGFncy5vcGVuZWQgPSAwOw0KCXJldHVybiAwOw0KfQ0KDQppbnQg
DQojaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDIzDQpydGNfaW9jdGwo
ZGV2X3QgZGV2LCB1X2xvbmcgY21kLCBjYWRkcl90IGFyZywgaW50IG1vZGUs
IHN0cnVjdCB0aHJlYWQgKnApDQojZWxzZQ0KcnRjX2lvY3RsKGRldl90IGRl
diwgdV9sb25nIGNtZCwgY2FkZHJfdCBhcmcsIGludCBtb2RlLCBzdHJ1Y3Qg
cHJvYyAqcCkNCiNlbmRpZg0Kew0KCXN0cnVjdCBydGNfc29mdGMgKnNjID0g
KHN0cnVjdCBydGNfc29mdGMgKikgZGV2LT5zaV9kcnYxOw0KCWludCBlcnJv
cj0wLCBmcmVxLCBzbGVlcDsNCgkNCglETG9nKExlbnRlciwgImNtZCAweCUw
NGx4IiwgY21kKTsNCglzd2l0Y2ggKGNtZCkgew0KCWNhc2UgUlRDSU9fSVJR
UF9TRVQ6DQoJCWZyZXEgPSAqKGludCAqKWFyZzsNCgkJaWYgKGZyZXEgPCAy
KSB7DQoJCQllcnJvciA9IEVJTlZBTDsNCgkJCWJyZWFrOw0KCQl9DQoJCWlm
IChmcmVxID4gMTAyNCkgew0KCQkJZXJyb3IgPSBFSU5WQUw7DQoJCQlicmVh
azsNCgkJfQ0KCQlzYy0+dmFyLmZyZXEgPSBmcmVxOw0KCQlpZiAoc2MtPnZh
ci5mcmVxID4gMTAwMCkgew0KCQkJLyogY2FsbG91dF9yZXNldCBpcyBpbiBt
c2VjLCBzbyAxMDAwIGlzIHRoZSBtYXggKi8NCgkJCXNjLT52YXIuZnJlcSA9
IDEwMDA7DQoJCX0NCgkJaWYgKHNjLT52YXIuZnJlcSA+IGh6KSB7DQoJCQlz
Yy0+dmFyLmZyZXEgPSBoejsNCgkJCXByaW50ZigicnRjOiAlZCA+IGtlcm4u
aHo6IFRpbWluZyB3aWxsIGJlIGluYWNjdXJhdGUsIHBsZWFzZSBpbmNyZWFz
ZSBoei5cbiIsIHNjLT52YXIuZnJlcSk7DQoJCX0NCgkJc2xlZXAgPSAxMDAw
IC8gc2MtPnZhci5mcmVxOw0KI2lmIDANCgkJcHJpbnRmKCJTZXQgUlRDIGZy
ZXEgJWRcbiIsIHNjLT52YXIuZnJlcSk7DQojZW5kaWYNCgkJRExvZyhMaW5m
bywgIlNldCBSVEMgZnJlcSAlZCIsIHNjLT52YXIuZnJlcSk7DQoJCWNhbGxv
dXRfc3RvcCgmc2MtPnZhci5ydGNfaGFuZGxlKTsNCgkJbmFub3VwdGltZSgm
c2MtPnZhci5sYXN0dGltZSk7DQoJCWNhbGxvdXRfcmVzZXQoJnNjLT52YXIu
cnRjX2hhbmRsZSwgc2xlZXAsICZydGNfY2FsbGJhY2ssICh2b2lkICopc2Mp
Ow0KCQlicmVhazsNCgljYXNlIFJUQ0lPX1BJRV9PTjoNCgkJc2MtPnZhci5m
bGFncy5lbmFibGVkID0gMTsNCgkJRExvZyhMaW5mbywgIkVuYWJsZSBpbnRl
cnJ1cHRzIik7DQoJCWJyZWFrOw0KCWRlZmF1bHQ6DQoJCURMb2coTGZhaWws
ICJVbmtub3duIElPQ1RMIDB4JTA0bHgiLCBjbWQpOw0KCQllcnJvciA9IEVJ
TlZBTDsNCgkJYnJlYWs7DQoJfQ0KCURMb2coTGVudGVyLCAicmVzdWx0ICVk
IiwgZXJyb3IpOw0KCXJldHVybiAoZXJyb3IpOw0KfQ0KDQppbnQgDQojaWYg
X19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDIzDQpydGNfcG9sbChkZXZfdCBk
ZXYsIGludCBldmVudHMsIHN0cnVjdCB0aHJlYWQgKnApDQojZWxzZQ0KcnRj
X3BvbGwoZGV2X3QgZGV2LCBpbnQgZXZlbnRzLCBzdHJ1Y3QgcHJvYyAqcCkN
CiNlbmRpZg0Kew0KCXN0cnVjdCBydGNfc29mdGMgKnNjID0gKHN0cnVjdCBy
dGNfc29mdGMgKikgZGV2LT5zaV9kcnYxOw0KICAgCWludCByZXZlbnRzID0g
MDsNCgkNCglpZiAoIXNjLT52YXIuZmxhZ3MuZW5hYmxlZCkgDQoJCXJldHVy
biAwOw0KDQoJaWYgKGV2ZW50cykgew0KCQlETG9nKExpbmZvLCAiRGVsYXkg
Zm9yICVkIHVzZWMiLCBkZWxheSk7DQoJCWlmIChzYy0+dmFyLndva2VuKSB7
DQoJCQlzYy0+dmFyLndva2VuID0gMDsNCgkJCXJldmVudHMgPSBldmVudHM7
DQoJCX0gZWxzZSB7DQoJCQlzZWxyZWNvcmQocCwgJnNjLT52YXIuc2lwKTsN
CgkJfQ0KI2lmIDANCgkJdHNsZWVwKCZzYy0+dmFyLnJ0Y19pZGVudCwgcC0+
dGRfcHJpb3JpdHksICJydGMgcGwiLCBoeiAqIDEwKTsNCgkJcmV2ZW50cyA9
IGV2ZW50czsNCiNlbmRpZg0KCX0NCglyZXR1cm4gcmV2ZW50czsNCn0NCg0K
aW50IA0KcnRjX3JlYWQoZGV2X3QgZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGlu
dCBmbGFncyBfX3VudXNlZCkNCnsNCglzdHJ1Y3QgcnRjX3NvZnRjICpzYyA9
IChzdHJ1Y3QgcnRjX3NvZnRjICopIGRldi0+c2lfZHJ2MTsNCglpbnQgZXJy
b3I7DQoJDQoJaWYgKCFzYy0+dmFyLmZsYWdzLmVuYWJsZWQpIA0KCQlyZXR1
cm4gMDsNCg0KCWlmIChmbGFncyAmIElPX05ERUxBWSkNCgkJcmV0dXJuIEVB
R0FJTjsNCg0KCURMb2coTGluZm8sICJEZWxheSBmb3IgJWQgdXNlYyIsIGRl
bGF5KTsNCgllcnJvciA9IHRzbGVlcCgmc2MtPnZhci5ydGNfaWRlbnQsIFBD
QVRDSCwgInJ0YyByZCIsIGh6ICogMTApOw0KCXNjLT52YXIud29rZW4gPSAw
Ow0KCXJldHVybiAwOw0KfQ0KDQovKiAtPS09LT0tPS09LT0tPS09LT0gbW9k
dWxlIGxvYWQvdW5sb2FkIHN0dWZmIC09LT0tPS09LT0tPS09LT0tPSAqLw0K
c3RhdGljIGRldl90IHJ0Y19kZXYgPSBOVUxMOw0KDQpzdGF0aWMgaW50DQpp
bml0X21vZHVsZSh2b2lkKQ0Kew0KCWludCBlcnJvciA9IDA7DQoNCiNpZiBf
X0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDEwNA0KICAgCWVycm9yID0gY2RldnN3
X2FkZCgmcnRjX2NkZXZzdyk7DQoJaWYgKGVycm9yKSANCgkJcmV0dXJuIGVy
cm9yOw0KI2VuZGlmDQoNCglydGNfZGV2ID0gbWFrZV9kZXYoJnJ0Y19jZGV2
c3csIDAsIFVJRF9ST09ULCBHSURfV0hFRUwsIDA2NDQsIERFVklDRV9OQU1F
KTsNCglpZiAocnRjX2Rldj09TlVMTCkNCgkJZXJyb3IgPSBFTk9NRU07DQoN
CglyZXR1cm4gZXJyb3I7DQp9DQoNCg0KDQpzdGF0aWMgaW50DQpjbGVhbnVw
X21vZHVsZSh2b2lkKQ0Kew0KCWludCBlcnJvciA9IDA7DQoNCglkZXN0cm95
X2RldihydGNfZGV2KTsNCiNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDEw
NA0KCWVycm9yID0gY2RldnN3X3JlbW92ZSgmcnRjX2NkZXZzdyk7DQojZW5k
aWYNCglETG9nKExpbmZvLCAicmV0dXJuICVkIiwgZXJyb3IpOw0KCXJldHVy
biBlcnJvcjsNCn0NCg0Kc3RhdGljIGludA0KcnRjX21vZGVldmVudChtb2R1
bGVfdCBtb2QsIGludCBjbWQsIHZvaWQgKmFyZykNCnsNCiAgICBpbnQgIGVy
cm9yID0gMDsNCg0KICAgIHN3aXRjaCAoY21kKSB7DQogICAgY2FzZSBNT0Rf
TE9BRDoNCgllcnJvciA9IGluaXRfbW9kdWxlKCk7DQoJYnJlYWs7CQ0KDQog
ICAgY2FzZSBNT0RfVU5MT0FEOg0KICAgICAgICAvKiBmYWxsIHRocm91Z2gg
Ki8NCiAgICBjYXNlIE1PRF9TSFVURE9XTjoNCiAJZXJyb3IgPSBjbGVhbnVw
X21vZHVsZSgpOw0KCWJyZWFrOw0KDQogICAgZGVmYXVsdDoJLyogd2Ugb25s
eSB1bmRlcnN0YW5kIGxvYWQvdW5sb2FkICovDQoJZXJyb3IgPSBFSU5WQUw7
DQoJYnJlYWs7DQogICAgfQ0KDQogICAgcmV0dXJuIChlcnJvcik7DQp9DQoN
CnZvaWQNCnJ0Y19jYWxsYmFjayh2b2lkICp4dHApDQp7DQoJaW50IHNsZWVw
Ow0KCXN0cnVjdCBydGNfc29mdGMgKnNjID0gKHN0cnVjdCBydGNfc29mdGMg
Kil4dHA7DQoJc3RydWN0IHRpbWVzcGVjIGN1cnRpbWUsIG5leHR0aW1lLCBp
bmNyZW1lbnQ7DQoNCglpZiAoY2FsbG91dF9wZW5kaW5nKCZzYy0+dmFyLnJ0
Y19oYW5kbGUpIHx8ICFjYWxsb3V0X2FjdGl2ZSgmc2MtPnZhci5ydGNfaGFu
ZGxlKSkNCgkJcmV0dXJuOw0KCS8qIFdha2V1cCBzbGVlcGVycyAqLw0KCXNj
LT52YXIud29rZW4gPSAxOw0KCXNlbHdha2V1cCgmc2MtPnZhci5zaXApOw0K
CXdha2V1cCgmc2MtPnZhci5ydGNfaWRlbnQpOw0KDQoJLyogU2V0dXAgZm9y
IG91ciBuZXh0IG5hcC4gKi8NCgluYW5vdXB0aW1lKCZjdXJ0aW1lKTsNCnJl
c3RhcnQ6DQoJaW5jcmVtZW50LnR2X3NlYyA9IDA7DQoJaW5jcmVtZW50LnR2
X25zZWMgPSAxMDAwMDAwMDAwIC8gc2MtPnZhci5mcmVxOw0KCXRpbWVzcGVj
YWRkKCZzYy0+dmFyLmxhc3R0aW1lLCAmaW5jcmVtZW50KTsNCgluZXh0dGlt
ZS50dl9zZWMgPSBzYy0+dmFyLmxhc3R0aW1lLnR2X3NlYzsNCgluZXh0dGlt
ZS50dl9uc2VjID0gc2MtPnZhci5sYXN0dGltZS50dl9uc2VjOw0KCXRpbWVz
cGVjYWRkKCZuZXh0dGltZSwgJmluY3JlbWVudCk7DQoJaWYgKHRpbWVzcGVj
Y21wKCZuZXh0dGltZSwgJmN1cnRpbWUsIDwpKSB7DQoJCS8qIENhdGNoIHVw
IGlmIHdlIGxhZyBjdXJ0aW1lICovDQoJCXNjLT52YXIubGFzdHRpbWUudHZf
c2VjID0gY3VydGltZS50dl9zZWM7DQoJCXNjLT52YXIubGFzdHRpbWUudHZf
bnNlYyA9IGN1cnRpbWUudHZfbnNlYzsNCgkJdGltZXNwZWNzdWIoJnNjLT52
YXIubGFzdHRpbWUsICZpbmNyZW1lbnQpOw0KCQl0aW1lc3BlY3N1YigmbmV4
dHRpbWUsICZjdXJ0aW1lKTsNCiNpZiAwDQoJCXByaW50ZigibGFnZ2luZyBj
dXJ0aW1lIGJ5ICVkLiVsZFxuIiwgbmV4dHRpbWUudHZfc2VjLCBuZXh0dGlt
ZS50dl9uc2VjKTsNCiNlbmRpZg0KCQlnb3RvIHJlc3RhcnQ7DQoJfSBlbHNl
IHsNCgkJdGltZXNwZWNzdWIoJm5leHR0aW1lLCAmY3VydGltZSk7DQoJCXNs
ZWVwID0gbmV4dHRpbWUudHZfbnNlYyAvIDEwMDAwMDA7DQoJfQ0KCWNhbGxv
dXRfcmVzZXQoJnNjLT52YXIucnRjX2hhbmRsZSwgc2xlZXAsICZydGNfY2Fs
bGJhY2ssIHh0cCk7DQp9DQo=

--0-1432871052-1074979007=:29927--



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