aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/kbd
diff options
context:
space:
mode:
authorMaksim Yevmenkin <emax@FreeBSD.org>2005-07-13 23:58:57 +0000
committerMaksim Yevmenkin <emax@FreeBSD.org>2005-07-13 23:58:57 +0000
commit04551c6ce5981d985b31476094aa79186a874554 (patch)
tree6d2a37162c3c680337538d594955c3a7c0e843d4 /sys/dev/kbd
parent2eb9396fb79114c453c19da79469d32ce57b5b47 (diff)
Notes
Diffstat (limited to 'sys/dev/kbd')
-rw-r--r--sys/dev/kbd/kbd.c20
-rw-r--r--sys/dev/kbd/kbdreg.h1
2 files changed, 18 insertions, 3 deletions
diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c
index da6ee390fcc5..978644139277 100644
--- a/sys/dev/kbd/kbd.c
+++ b/sys/dev/kbd/kbd.c
@@ -282,13 +282,19 @@ keyboard_switch_t
* exclusive use.
*/
-/* find the keyboard specified by a driver name and a unit number */
+/*
+ * find the keyboard specified by a driver name and a unit number
+ * starting at given index
+ */
int
-kbd_find_keyboard(char *driver, int unit)
+kbd_find_keyboard2(char *driver, int unit, int index)
{
int i;
- for (i = 0; i < keyboards; ++i) {
+ if ((index < 0) || (index >= keyboards))
+ return (-1);
+
+ for (i = index; i < keyboards; ++i) {
if (keyboard[i] == NULL)
continue;
if (!KBD_IS_VALID(keyboard[i]))
@@ -299,9 +305,17 @@ kbd_find_keyboard(char *driver, int unit)
continue;
return (i);
}
+
return (-1);
}
+/* find the keyboard specified by a driver name and a unit number */
+int
+kbd_find_keyboard(char *driver, int unit)
+{
+ return (kbd_find_keyboard2(driver, unit, 0));
+}
+
/* allocate a keyboard */
int
kbd_allocate(char *driver, int unit, void *id, kbd_callback_func_t *func,
diff --git a/sys/dev/kbd/kbdreg.h b/sys/dev/kbd/kbdreg.h
index 78a5af420881..184c607a015a 100644
--- a/sys/dev/kbd/kbdreg.h
+++ b/sys/dev/kbd/kbdreg.h
@@ -196,6 +196,7 @@ int kbd_release(keyboard_t *kbd, void *id);
int kbd_change_callback(keyboard_t *kbd, void *id,
kbd_callback_func_t *func, void *arg);
int kbd_find_keyboard(char *driver, int unit);
+int kbd_find_keyboard2(char *driver, int unit, int index);
keyboard_t *kbd_get_keyboard(int index);
/* a back door for the console driver to tickle the keyboard driver XXX */