Subject: Review wsdisplay status device
To: None <tech-kern@netbsd.org>
From: Julio Merino <jmmv@hispabsd.org>
List: tech-kern
Date: 06/23/2002 12:00:25
This is a multi-part message in MIME format.

--Multipart_Sun__23_Jun_2002_12:00:25_+0200_0821cc00
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hello

The following patch creates a new minor device inside wsdisplay space
(c, 47,254) that can be used to retrive events that happen from inside
wsdisplay. I've named it /dev/wsdisplay but this can be changed if
you want... This patch implements this device using the same technique
as wsmouse or wskbd. It uses an wsevent queue where kernel injects
events and the user can read them.

I've also added a ioctl routine for the device to group some more
ioctl's inside this device (i.e. get active console number by hand,
instead of when it happens).

This patch will help the console mouse driver to know when wsdisplay
events happen (user changes screen, enters X... this last one has to
be implemented) and act consequently to avoid console corruption.

I would like you to review the code and tell me if you feel I've done
it bad or if it is "ok". I've also attached a weird test.c program
that shows how the thing works for the moment.

If you think this is ok, I'll continue with the mouse support using
this new device and I hope I'll have the whole thing finished soon.

Thank you.

-- 
HispaBSD admin - http://www.hispabsd.org
Julio Merino <jmmv@hispabsd.org>

--Multipart_Sun__23_Jun_2002_12:00:25_+0200_0821cc00
Content-Type: application/octet-stream;
 name="patch.diff"
Content-Disposition: attachment;
 filename="patch.diff"
Content-Transfer-Encoding: base64

SW5kZXg6IHdzY29uc2lvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3lzc3JjL3N5
cy9kZXYvd3Njb25zL3dzY29uc2lvLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTAKZGlmZiAt
dSAtdSAtcjEuNTAgd3Njb25zaW8uaAotLS0gd3Njb25zaW8uaAkyMDAyLzA0LzA3IDA5OjI1OjQ3
CTEuNTAKKysrIHdzY29uc2lvLmgJMjAwMi8wNi8yMyAwOTo0OTo0NQpAQCAtNzAsNiArNzAsNyBA
QAogI2RlZmluZQlXU0NPTlNfRVZFTlRfTU9VU0VfQUJTT0xVVEVfWQk5CS8qIFkgbG9jYXRpb24g
Ki8KICNkZWZpbmUJV1NDT05TX0VWRU5UX01PVVNFX0RFTFRBX1oJMTAJLyogWiBkZWx0YSBhbW91
bnQgKi8KICNkZWZpbmUJV1NDT05TX0VWRU5UX01PVVNFX0FCU09MVVRFX1oJMTEJLyogWiBsb2Nh
dGlvbiAqLworI2RlZmluZQlXU0NPTlNfRVZFTlRfU0NSRUVOX1NXSVRDSAkxMgkvKiBOZXcgc2Ny
ZWVuIG51bWJlciAqLwogCiAKIC8qCkBAIC0zNzQsNiArMzc1LDcgQEAKIH07CiAjZGVmaW5lCVdT
RElTUExBWUlPX0dFVFBBUkFNCV9JT1dSKCdXJywgODIsIHN0cnVjdCB3c2Rpc3BsYXlfcGFyYW0p
CiAjZGVmaW5lCVdTRElTUExBWUlPX1NFVFBBUkFNCV9JT1dSKCdXJywgODMsIHN0cnVjdCB3c2Rp
c3BsYXlfcGFyYW0pCisjZGVmaW5lCVdTRElTUExBWUlPX0dFVEFDVElWRVNDUkVFTglfSU9SKCdX
JywgODQsIGludCkKIAogLyogWFhYIE5PVCBZRVQgREVGSU5FRCAqLwogLyogTWFwcGluZyBpbmZv
cm1hdGlvbiByZXRyaWV2YWwuICovCkluZGV4OiB3c2Rpc3BsYXkuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3Zzcm9vdC9zeXNzcmMvc3lzL2Rldi93c2NvbnMvd3NkaXNwbGF5LmMsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNjMKZGlmZiAtdSAtdSAtcjEuNjMgd3NkaXNwbGF5LmMKLS0tIHdzZGlz
cGxheS5jCTIwMDIvMDQvMDcgMDk6MjU6NDcJMS42MworKysgd3NkaXNwbGF5LmMJMjAwMi8wNi8y
MyAwOTo0OTo0OApAQCAtMTE5LDYgKzExOSw4IEBACiAJaW50IHNjX2ZvY3VzaWR4OwkvKiBhdmFp
bGFibGUgb25seSBpZiBzY19mb2N1cyBpc24ndCBudWxsICovCiAJc3RydWN0IHdzc2NyZWVuICpz
Y19mb2N1czsKIAorCXN0cnVjdCB3c2V2ZW50dmFyIGV2YXI7CisKIAlpbnQJc2NfaXNjb25zb2xl
OwogCiAJaW50IHNjX2ZsYWdzOwpAQCAtMTY3LDYgKzE2OSw3IEBACiAKICNkZWZpbmUJV1NESVNQ
TEFZVU5JVChkZXYpCShtaW5vcihkZXYpID4+IDgpCiAjZGVmaW5lCVdTRElTUExBWVNDUkVFTihk
ZXYpCShtaW5vcihkZXYpICYgMHhmZikKKyNkZWZpbmUgSVNXU0RJU1BMQVlTVEFUKGRldikJKFdT
RElTUExBWVNDUkVFTihkZXYpID09IDI1NCkKICNkZWZpbmUgSVNXU0RJU1BMQVlDVEwoZGV2KQko
V1NESVNQTEFZU0NSRUVOKGRldikgPT0gMjU1KQogI2RlZmluZSBXU0RJU1BMQVlNSU5PUih1bml0
LCBzY3JlZW4pCSgoKHVuaXQpIDw8IDgpIHwgKHNjcmVlbikpCiAKQEAgLTY3NSw2ICs2NzgsMTIg
QEAKIAlpZiAoc2MgPT0gTlVMTCkJCQkvKiBtYWtlIHN1cmUgaXQgd2FzIGF0dGFjaGVkICovCiAJ
CXJldHVybiAoRU5YSU8pOwogCisJaWYgKElTV1NESVNQTEFZU1RBVChkZXYpKSB7CisJCXdzZXZl
bnRfaW5pdCgmc2MtPmV2YXIpOworCQlzYy0+ZXZhci5pbyA9IHA7CisJCXJldHVybiAoMCk7CisJ
fQorCiAJaWYgKElTV1NESVNQTEFZQ1RMKGRldikpCiAJCXJldHVybiAoMCk7CiAKQEAgLTczMSw2
ICs3NDAsMTEgQEAKIAogCXNjID0gZGV2aWNlX2xvb2t1cCgmd3NkaXNwbGF5X2NkLCBXU0RJU1BM
QVlVTklUKGRldikpOwogCisJaWYgKElTV1NESVNQTEFZU1RBVChkZXYpKSB7CisJCXdzZXZlbnRf
ZmluaSgmc2MtPmV2YXIpOworCQlyZXR1cm4gKDApOworCX0KKwogCWlmIChJU1dTRElTUExBWUNU
TChkZXYpKQogCQlyZXR1cm4gKDApOwogCkBAIC03ODIsOSArNzk2LDE1IEBACiAJc3RydWN0IHdz
ZGlzcGxheV9zb2Z0YyAqc2M7CiAJc3RydWN0IHR0eSAqdHA7CiAJc3RydWN0IHdzc2NyZWVuICpz
Y3I7CisJaW50IGVycm9yOwogCiAJc2MgPSBkZXZpY2VfbG9va3VwKCZ3c2Rpc3BsYXlfY2QsIFdT
RElTUExBWVVOSVQoZGV2KSk7CiAKKwlpZiAoSVNXU0RJU1BMQVlTVEFUKGRldikpIHsKKwkJZXJy
b3IgPSB3c2V2ZW50X3JlYWQoJnNjLT5ldmFyLCB1aW8sIGZsYWcpOworCQlyZXR1cm4gKGVycm9y
KTsKKwl9CisKIAlpZiAoSVNXU0RJU1BMQVlDVEwoZGV2KSkKIAkJcmV0dXJuICgwKTsKIApAQCAt
ODA2LDYgKzgyNiwxMCBAQAogCiAJc2MgPSBkZXZpY2VfbG9va3VwKCZ3c2Rpc3BsYXlfY2QsIFdT
RElTUExBWVVOSVQoZGV2KSk7CiAKKwlpZiAoSVNXU0RJU1BMQVlTVEFUKGRldikpIHsKKwkJcmV0
dXJuICgwKTsKKwl9CisKIAlpZiAoSVNXU0RJU1BMQVlDVEwoZGV2KSkKIAkJcmV0dXJuICgwKTsK
IApAQCAtODI3LDYgKzg1MSw5IEBACiAKIAlzYyA9IGRldmljZV9sb29rdXAoJndzZGlzcGxheV9j
ZCwgV1NESVNQTEFZVU5JVChkZXYpKTsKIAorCWlmIChJU1dTRElTUExBWVNUQVQoZGV2KSkKKwkJ
cmV0dXJuICh3c2V2ZW50X3BvbGwoJnNjLT5ldmFyLCBldmVudHMsIHApKTsKKwogCWlmIChJU1dT
RElTUExBWUNUTChkZXYpKQogCQlyZXR1cm4gKDApOwogCkBAIC04NDcsNiArODc0LDkgQEAKIAog
CXNjID0gZGV2aWNlX2xvb2t1cCgmd3NkaXNwbGF5X2NkLCBXU0RJU1BMQVlVTklUKGRldikpOwog
CisJaWYgKElTV1NESVNQTEFZU1RBVChkZXYpKQorCQlwYW5pYygid3NkaXNwbGF5dHR5KCkgb24g
c3RhdHVzIGRldmljZSIpOworCiAJaWYgKElTV1NESVNQTEFZQ1RMKGRldikpCiAJCXBhbmljKCJ3
c2Rpc3BsYXl0dHkoKSBvbiBjdGwgZGV2aWNlIik7CiAKQEAgLTg3MSw2ICs5MDEsOSBAQAogCQly
ZXR1cm4gKGVycm9yKTsKICNlbmRpZgogCisJaWYgKElTV1NESVNQTEFZU1RBVChkZXYpKQorCQly
ZXR1cm4gKHdzZGlzcGxheV9zdGF0X2lvY3RsKHNjLCBjbWQsIGRhdGEsIGZsYWcsIHApKTsKKwog
CWlmIChJU1dTRElTUExBWUNUTChkZXYpKQogCQlyZXR1cm4gKHdzZGlzcGxheV9jZmdfaW9jdGwo
c2MsIGNtZCwgZGF0YSwgZmxhZywgcCkpOwogCkBAIC05OTIsNiArMTAyNSwxOSBAQAogfQogCiBp
bnQKK3dzZGlzcGxheV9zdGF0X2lvY3RsKHN0cnVjdCB3c2Rpc3BsYXlfc29mdGMgKnNjLCB1X2xv
bmcgY21kLCBjYWRkcl90IGRhdGEsCisJaW50IGZsYWcsIHN0cnVjdCBwcm9jICpwKQoreworCXN3
aXRjaCAoY21kKSB7CisJY2FzZSBXU0RJU1BMQVlJT19HRVRBQ1RJVkVTQ1JFRU46CisJCSooaW50
KilkYXRhID0gd3NkaXNwbGF5X2dldGFjdGl2ZXNjcmVlbihzYyk7CisJCXJldHVybiAoMCk7CisJ
fQorCisJcmV0dXJuIChFUEFTU1RIUk9VR0gpOworfQorCitpbnQKIHdzZGlzcGxheV9jZmdfaW9j
dGwoc3RydWN0IHdzZGlzcGxheV9zb2Z0YyAqc2MsIHVfbG9uZyBjbWQsIGNhZGRyX3QgZGF0YSwK
IAlpbnQgZmxhZywgc3RydWN0IHByb2MgKnApCiB7CkBAIC0xMTA5LDYgKzExNTUsNDAgQEAKIAly
ZXR1cm4gKEVQQVNTVEhST1VHSCk7CiB9CiAKK2ludAord3NkaXNwbGF5X3N0YXRfaW5qZWN0KHN0
cnVjdCBkZXZpY2UgKmRldiwgdV9pbnQgdHlwZSwgaW50IHZhbHVlKQoreworCXN0cnVjdCB3c2Rp
c3BsYXlfc29mdGMgKnNjID0gKHN0cnVjdCB3c2Rpc3BsYXlfc29mdGMgKikgZGV2OworCXN0cnVj
dCB3c2V2ZW50dmFyICpldmFyOworCXN0cnVjdCB3c2NvbnNfZXZlbnQgKmV2OworCXN0cnVjdCB0
aW1ldmFsIHRoaXN0aW1lOworCWludCBwdXQ7CisKKwlldmFyID0gJnNjLT5ldmFyOworCisJaWYg
KGV2YXIgPT0gTlVMTCkKKwkJcmV0dXJuICgwKTsKKworCWlmIChldmFyLT5xID09IE5VTEwpCisJ
CXJldHVybiAoMSk7CisKKwlwdXQgPSBldmFyLT5wdXQ7CisJZXYgPSAmZXZhci0+cVtwdXRdOwor
CXB1dCA9IChwdXQgKyAxKSAlIFdTRVZFTlRfUVNJWkU7CisJaWYgKHB1dCA9PSBldmFyLT5nZXQp
IHsKKwkJbG9nKExPR19XQVJOSU5HLCAid3NkaXNwbGF5OiBldmVudCBxdWV1ZSBvdmVyZmxvd1xu
Iik7CisJCXJldHVybiAoMSk7CisJfQorCWV2LT50eXBlID0gdHlwZTsKKwlldi0+dmFsdWUgPSB2
YWx1ZTsKKwltaWNyb3RpbWUoJnRoaXN0aW1lKTsKKwlUSU1FVkFMX1RPX1RJTUVTUEVDKCZ0aGlz
dGltZSwgJmV2LT50aW1lKTsKKwlldmFyLT5wdXQgPSBwdXQ7CisJV1NFVkVOVF9XQUtFVVAoZXZh
cik7CisKKwlyZXR1cm4gKDApOworfQorCiBwYWRkcl90CiB3c2Rpc3BsYXltbWFwKGRldl90IGRl
diwgb2ZmX3Qgb2Zmc2V0LCBpbnQgcHJvdCkKIHsKQEAgLTExMTYsNiArMTE5Niw5IEBACiAJICAg
IGRldmljZV9sb29rdXAoJndzZGlzcGxheV9jZCwgV1NESVNQTEFZVU5JVChkZXYpKTsKIAlzdHJ1
Y3Qgd3NzY3JlZW4gKnNjcjsKIAorCWlmIChJU1dTRElTUExBWVNUQVQoZGV2KSkKKwkJcmV0dXJu
ICgtMSk7CisKIAlpZiAoSVNXU0RJU1BMQVlDVEwoZGV2KSkKIAkJcmV0dXJuICgtMSk7CiAKQEAg
LTE0ODMsNiArMTU2Niw4IEBACiAJaWYgKG5vICE9IFdTRElTUExBWV9OVUxMU0NSRUVOICYmCiAJ
ICAgIChubyA8IDAgfHwgbm8gPj0gV1NESVNQTEFZX01BWFNDUkVFTiB8fCAhc2MtPnNjX3Njcltu
b10pKQogCQlyZXR1cm4gKEVOWElPKTsKKworCXdzZGlzcGxheV9zdGF0X2luamVjdChkZXYsIFdT
Q09OU19FVkVOVF9TQ1JFRU5fU1dJVENILCBubyk7CiAKIAlzID0gc3BsdHR5KCk7CiAKSW5kZXg6
IHdzZGlzcGxheXZhci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3N5c3NyYy9zeXMv
ZGV2L3dzY29ucy93c2Rpc3BsYXl2YXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMApkaWZm
IC11IC11IC1yMS4yMCB3c2Rpc3BsYXl2YXIuaAotLS0gd3NkaXNwbGF5dmFyLmgJMjAwMS8xMC8x
MyAxNTo1NjoxNQkxLjIwCisrKyB3c2Rpc3BsYXl2YXIuaAkyMDAyLzA2LzIzIDA5OjQ5OjQ5CkBA
IC0xODYsOCArMTg2LDEzIEBACiBpbnQgd3NkaXNwbGF5X3VzbF9pb2N0bDIoc3RydWN0IHdzZGlz
cGxheV9zb2Z0YyAqLCBzdHJ1Y3Qgd3NzY3JlZW4gKiwKIAkJCSB1X2xvbmcsIGNhZGRyX3QsIGlu
dCwgc3RydWN0IHByb2MgKik7CiAKK2ludCB3c2Rpc3BsYXlfc3RhdF9pb2N0bChzdHJ1Y3Qgd3Nk
aXNwbGF5X3NvZnRjICpzYywgdV9sb25nIGNtZCwgY2FkZHJfdCBkYXRhLAorCQkJIGludCBmbGFn
LCBzdHJ1Y3QgcHJvYyAqcCk7CisKIGludCB3c2Rpc3BsYXlfY2ZnX2lvY3RsKHN0cnVjdCB3c2Rp
c3BsYXlfc29mdGMgKnNjLCB1X2xvbmcgY21kLCBjYWRkcl90IGRhdGEsCiAJCQlpbnQgZmxhZywg
c3RydWN0IHByb2MgKnApOworCitpbnQgd3NkaXNwbGF5X3N0YXRfaW5qZWN0KHN0cnVjdCBkZXZp
Y2UgKmRldiwgdV9pbnQgdHlwZSwgaW50IHZhbHVlKTsKIAogLyoKICAqIGZvciBnZW5lcmFsIHVz
ZQo=

--Multipart_Sun__23_Jun_2002_12:00:25_+0200_0821cc00
Content-Type: application/octet-stream;
 name="test.c"
Content-Disposition: attachment;
 filename="test.c"
Content-Transfer-Encoding: base64

I2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHBvbGwu
aD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxkZXYvd3Njb25zL3dzY29uc2lvLmg+Cgpp
bnQKbWFpbigpCnsKCWludCBmZDsKCWludCByZXQ7CglzdHJ1Y3QgcG9sbGZkIHBmZFsxXTsKCXN0
cnVjdCB3c2NvbnNfZXZlbnQgZXZ0OwoKCWZkID0gb3BlbigiL2Rldi93c2Rpc3BsYXkiLCBPX1JE
T05MWSB8IE9fTk9OQkxPQ0ssIDApOwoJaWYgKGZkID09IC0xKQoJCXByaW50ZigiZXJyb3IiKTsK
CglwZmRbMF0uZmQgPSBmZDsKCXBmZFswXS5ldmVudHMgPSBQT0xMSU47CgoJZm9yICg7OykgewoJ
CWlmIChwb2xsKHBmZCwgMSwgSU5GVElNKSA8PSAwKQoJCQl3YXJuKCJmYWlsZWQiKTsKCQlyZWFk
KGZkLCAmZXZ0LCBzaXplb2YoZXZ0KSk7CgkJaWYgKGV2dC50eXBlID09IFdTQ09OU19FVkVOVF9E
SVNQTEFZX1NXSVRDSCkKCQkJcHJpbnRmKCJOZXcgZGlzcGxheTogJWRcbiIsIGV2dC52YWx1ZSk7
Cgl9CgkJCgljbG9zZShmZCk7Cn0K

--Multipart_Sun__23_Jun_2002_12:00:25_+0200_0821cc00--