mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Keep a reference count on USB keyboard polling to allow recursive
cngrab() during a panic for example, similar to what the AT-keyboard driver is doing. Found by: Bruce Evans <brde@optusnet.com.au> MFC after: 1 week
This commit is contained in:
parent
6fd14eb940
commit
f87a304c8b
1 changed files with 11 additions and 1 deletions
|
|
@ -198,6 +198,7 @@ struct ukbd_softc {
|
|||
int sc_mode; /* input mode (K_XLATE,K_RAW,K_CODE) */
|
||||
int sc_state; /* shift/lock key state */
|
||||
int sc_accents; /* accent key index (> 0) */
|
||||
int sc_polling; /* polling recursion count */
|
||||
int sc_led_size;
|
||||
int sc_kbd_size;
|
||||
|
||||
|
|
@ -1983,7 +1984,16 @@ ukbd_poll(keyboard_t *kbd, int on)
|
|||
struct ukbd_softc *sc = kbd->kb_data;
|
||||
|
||||
UKBD_LOCK();
|
||||
if (on) {
|
||||
/*
|
||||
* Keep a reference count on polling to allow recursive
|
||||
* cngrab() during a panic for example.
|
||||
*/
|
||||
if (on)
|
||||
sc->sc_polling++;
|
||||
else
|
||||
sc->sc_polling--;
|
||||
|
||||
if (sc->sc_polling != 0) {
|
||||
sc->sc_flags |= UKBD_FLAG_POLLING;
|
||||
sc->sc_poll_thread = curthread;
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue