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>