Deleted Added
full compact
kbd.c (80040) kbd.c (83366)
1/*-
2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/dev/kbd/kbd.c 80040 2001-07-20 13:05:57Z yokota $
26 * $FreeBSD: head/sys/dev/kbd/kbd.c 83366 2001-09-12 08:38:13Z julian $
27 */
28
29#include "opt_kbd.h"
30
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/kernel.h>
34#include <sys/malloc.h>

--- 451 unchanged lines hidden (view full) ---

486 */
487
488#define KB_QSIZE 512
489#define KB_BUFSIZE 64
490
491static kbd_callback_func_t genkbd_event;
492
493static int
27 */
28
29#include "opt_kbd.h"
30
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/kernel.h>
34#include <sys/malloc.h>

--- 451 unchanged lines hidden (view full) ---

486 */
487
488#define KB_QSIZE 512
489#define KB_BUFSIZE 64
490
491static kbd_callback_func_t genkbd_event;
492
493static int
494genkbdopen(dev_t dev, int mode, int flag, struct proc *p)
494genkbdopen(dev_t dev, int mode, int flag, struct thread *td)
495{
496 keyboard_t *kbd;
497 genkbd_softc_t *sc;
498 int s;
499 int i;
500
501 s = spltty();
502 sc = dev->si_drv1;

--- 23 unchanged lines hidden (view full) ---

526 sc->gkb_rsel.si_flags = 0;
527 sc->gkb_rsel.si_pid = 0;
528 splx(s);
529
530 return 0;
531}
532
533static int
495{
496 keyboard_t *kbd;
497 genkbd_softc_t *sc;
498 int s;
499 int i;
500
501 s = spltty();
502 sc = dev->si_drv1;

--- 23 unchanged lines hidden (view full) ---

526 sc->gkb_rsel.si_flags = 0;
527 sc->gkb_rsel.si_pid = 0;
528 splx(s);
529
530 return 0;
531}
532
533static int
534genkbdclose(dev_t dev, int mode, int flag, struct proc *p)
534genkbdclose(dev_t dev, int mode, int flag, struct thread *td)
535{
536 keyboard_t *kbd;
537 genkbd_softc_t *sc;
538 int s;
539
540 /*
541 * NOTE: the device may have already become invalid.
542 * kbd == NULL || !KBD_IS_VALID(kbd)

--- 73 unchanged lines hidden (view full) ---

616
617 kbd = kbd_get_keyboard(KBD_INDEX(dev));
618 if ((kbd == NULL) || !KBD_IS_VALID(kbd))
619 return ENXIO;
620 return ENODEV;
621}
622
623static int
535{
536 keyboard_t *kbd;
537 genkbd_softc_t *sc;
538 int s;
539
540 /*
541 * NOTE: the device may have already become invalid.
542 * kbd == NULL || !KBD_IS_VALID(kbd)

--- 73 unchanged lines hidden (view full) ---

616
617 kbd = kbd_get_keyboard(KBD_INDEX(dev));
618 if ((kbd == NULL) || !KBD_IS_VALID(kbd))
619 return ENXIO;
620 return ENODEV;
621}
622
623static int
624genkbdioctl(dev_t dev, u_long cmd, caddr_t arg, int flag, struct proc *p)
624genkbdioctl(dev_t dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
625{
626 keyboard_t *kbd;
627 int error;
628
629 kbd = kbd_get_keyboard(KBD_INDEX(dev));
630 if ((kbd == NULL) || !KBD_IS_VALID(kbd))
631 return ENXIO;
632 error = (*kbdsw[kbd->kb_index]->ioctl)(kbd, cmd, arg);
633 if (error == ENOIOCTL)
634 error = ENODEV;
635 return error;
636}
637
638static int
625{
626 keyboard_t *kbd;
627 int error;
628
629 kbd = kbd_get_keyboard(KBD_INDEX(dev));
630 if ((kbd == NULL) || !KBD_IS_VALID(kbd))
631 return ENXIO;
632 error = (*kbdsw[kbd->kb_index]->ioctl)(kbd, cmd, arg);
633 if (error == ENOIOCTL)
634 error = ENODEV;
635 return error;
636}
637
638static int
639genkbdpoll(dev_t dev, int events, struct proc *p)
639genkbdpoll(dev_t dev, int events, struct thread *td)
640{
641 keyboard_t *kbd;
642 genkbd_softc_t *sc;
643 int revents;
644 int s;
645
646 revents = 0;
647 s = spltty();
648 sc = dev->si_drv1;
649 kbd = kbd_get_keyboard(KBD_INDEX(dev));
650 if ((sc == NULL) || (kbd == NULL) || !KBD_IS_VALID(kbd)) {
651 revents = POLLHUP; /* the keyboard has gone */
652 } else if (events & (POLLIN | POLLRDNORM)) {
653 if (sc->gkb_q.c_cc > 0)
654 revents = events & (POLLIN | POLLRDNORM);
655 else
640{
641 keyboard_t *kbd;
642 genkbd_softc_t *sc;
643 int revents;
644 int s;
645
646 revents = 0;
647 s = spltty();
648 sc = dev->si_drv1;
649 kbd = kbd_get_keyboard(KBD_INDEX(dev));
650 if ((sc == NULL) || (kbd == NULL) || !KBD_IS_VALID(kbd)) {
651 revents = POLLHUP; /* the keyboard has gone */
652 } else if (events & (POLLIN | POLLRDNORM)) {
653 if (sc->gkb_q.c_cc > 0)
654 revents = events & (POLLIN | POLLRDNORM);
655 else
656 selrecord(p, &sc->gkb_rsel);
656 selrecord(td, &sc->gkb_rsel);
657 }
658 splx(s);
659 return revents;
660}
661
662static int
663genkbd_event(keyboard_t *kbd, int event, void *arg)
664{

--- 591 unchanged lines hidden ---
657 }
658 splx(s);
659 return revents;
660}
661
662static int
663genkbd_event(keyboard_t *kbd, int event, void *arg)
664{

--- 591 unchanged lines hidden ---