summaryrefslogtreecommitdiffstats
path: root/sys/dev/kbd/kbd.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-09-27 08:29:58 +0000
committerphk <phk@FreeBSD.org>2003-09-27 08:29:58 +0000
commitb3521d2ccfdfa3630464b32dec477d8a85435939 (patch)
tree76eb3cf02c70389d5291bb03e122713debfec3bb /sys/dev/kbd/kbd.c
parent1953894b8537f749775dc9130aacfeafda11a687 (diff)
downloadFreeBSD-src-b3521d2ccfdfa3630464b32dec477d8a85435939.zip
FreeBSD-src-b3521d2ccfdfa3630464b32dec477d8a85435939.tar.gz
Fix dev_t handling to avoid needless makedev() call.
Diffstat (limited to 'sys/dev/kbd/kbd.c')
-rw-r--r--sys/dev/kbd/kbd.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c
index 9ab4c5b..1e8785d 100644
--- a/sys/dev/kbd/kbd.c
+++ b/sys/dev/kbd/kbd.c
@@ -447,20 +447,16 @@ static struct cdevsw kbd_cdevsw = {
int
kbd_attach(keyboard_t *kbd)
{
- dev_t dev;
if (kbd->kb_index >= keyboards)
return EINVAL;
if (keyboard[kbd->kb_index] != kbd)
return EINVAL;
- dev = make_dev(&kbd_cdevsw, kbd->kb_index, UID_ROOT, GID_WHEEL, 0600,
+ kbd->kb_dev = make_dev(&kbd_cdevsw, kbd->kb_index, UID_ROOT, GID_WHEEL, 0600,
"kbd%r", kbd->kb_index);
- if (dev->si_drv1 == NULL)
- dev->si_drv1 = malloc(sizeof(genkbd_softc_t), M_DEVBUF,
- M_WAITOK);
- bzero(dev->si_drv1, sizeof(genkbd_softc_t));
-
+ kbd->kb_dev->si_drv1 = malloc(sizeof(genkbd_softc_t), M_DEVBUF,
+ M_WAITOK | M_ZERO);
printf("kbd%d at %s%d\n", kbd->kb_index, kbd->kb_name, kbd->kb_unit);
return 0;
}
@@ -468,17 +464,14 @@ kbd_attach(keyboard_t *kbd)
int
kbd_detach(keyboard_t *kbd)
{
- dev_t dev;
if (kbd->kb_index >= keyboards)
return EINVAL;
if (keyboard[kbd->kb_index] != kbd)
return EINVAL;
- dev = makedev(kbd_cdevsw.d_maj, kbd->kb_index);
- if (dev->si_drv1)
- free(dev->si_drv1, M_DEVBUF);
- destroy_dev(dev);
+ free(kbd->kb_dev->si_drv1, M_DEVBUF);
+ destroy_dev(kbd->kb_dev);
return 0;
}
OpenPOWER on IntegriCloud