After further research, this commit[1][2] may explain what is going on.
> Remove SIGIO support. Base tools do not implement it and ports relying
> on libusbhid, generally via SDL, shouldn't do it either since it's not
> portable.
If I understand correctly, I should take up this issue with the
developers of the affected ports to not rely on this non-portable
code. Many emulators rely on SDL. I incorrectly viewed this as a
regression with uhid(4). Instead, it is a design decision by OpenBSD to
break backward compatibility, in favor of more portable code.
$ cd /usr/src
$ cvs diff -rOPENBSD_6_1 -rHEAD sys/dev/usb/uhid.c
Index: sys/dev/usb/uhid.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uhid.c,v
retrieving revision 1.66.6.1
retrieving revision 1.68
diff -u -p -r1.66.6.1 -r1.68
--- sys/dev/usb/uhid.c 1 Aug 2017 21:55:02 -0000 1.66.6.1
+++ sys/dev/usb/uhid.c 20 Jul 2017 16:54:45 -0000 1.68
@@ -1,4 +1,4 @@
-/* $OpenBSD: uhid.c,v 1.66.6.1 2017/08/01 21:55:02 bluhm Exp $ */
+/* $OpenBSD: uhid.c,v 1.68 2017/07/20 16:54:45 mpi Exp $ */
/* $NetBSD: uhid.c,v 1.57 2003/03/11 16:44:00 augustss Exp $ */
/*
@@ -237,7 +237,7 @@ uhidclose(dev_t dev, int flag, int mode,
DPRINTF(("uhidclose: sc=%p\n", sc));
clfree(&sc->sc_q);
- free(sc->sc_obuf, M_USBDEV, 0);
+ free(sc->sc_obuf, M_USBDEV, sc->sc_hdev.sc_osize);
uhidev_close(&sc->sc_hdev);
return (0);
Footnotes:
[1]
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/usb/uhid.c?rev=1.68&content-type=text/x-cvsweb-markup
[2]
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/usb/uhid.c.diff?r1=1.67&r2=1.68&f=h
--
Nam | PGP: 0x11B50169