diff options
author | ru <ru@FreeBSD.org> | 2006-09-27 19:57:02 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2006-09-27 19:57:02 +0000 |
commit | 4ef62e4ca582414062d69e20a1ccdade4a110938 (patch) | |
tree | a886251dab8c19f71a5bfd0199ec1d9b327b3513 | |
parent | f6b387ce531fb4ba91958db5aadcb53f89d4ed1b (diff) | |
download | FreeBSD-src-4ef62e4ca582414062d69e20a1ccdade4a110938.zip FreeBSD-src-4ef62e4ca582414062d69e20a1ccdade4a110938.tar.gz |
Fix our ioctl(2) implementation when the argument is "int". New
ioctls passing integer arguments should use the _IOWINT() macro.
This fixes a lot of ioctl's not working on sparc64, most notable
being keyboard/syscons ioctls.
Full ABI compatibility is provided, with the bonus of fixing the
handling of old ioctls on sparc64.
Reviewed by: bde (with contributions)
Tested by: emax, marius
MFC after: 1 week
-rw-r--r-- | sys/dev/atkbdc/atkbd.c | 33 | ||||
-rw-r--r-- | sys/dev/digi/digi.c | 13 | ||||
-rw-r--r-- | sys/dev/kbdmux/kbdmux.c | 29 | ||||
-rw-r--r-- | sys/dev/syscons/scvidctl.c | 30 | ||||
-rw-r--r-- | sys/dev/syscons/syscons.c | 85 | ||||
-rw-r--r-- | sys/dev/uart/uart_kbd_sun.c | 25 | ||||
-rw-r--r-- | sys/dev/usb/ukbd.c | 33 | ||||
-rw-r--r-- | sys/dev/vkbd/vkbd.c | 28 | ||||
-rw-r--r-- | sys/fs/procfs/procfs_ioctl.c | 31 | ||||
-rw-r--r-- | sys/kern/sys_generic.c | 26 | ||||
-rw-r--r-- | sys/kern/tty_pts.c | 11 | ||||
-rw-r--r-- | sys/kern/tty_pty.c | 11 | ||||
-rw-r--r-- | sys/modules/digi/digi/Makefile | 1 | ||||
-rw-r--r-- | sys/modules/if_tap/Makefile | 5 | ||||
-rw-r--r-- | sys/modules/kbdmux/Makefile | 5 | ||||
-rw-r--r-- | sys/modules/procfs/Makefile | 1 | ||||
-rw-r--r-- | sys/modules/ukbd/Makefile | 6 | ||||
-rw-r--r-- | sys/modules/vkbd/Makefile | 5 | ||||
-rw-r--r-- | sys/net/if_tap.c | 14 | ||||
-rw-r--r-- | sys/net/if_tap.h | 2 | ||||
-rw-r--r-- | sys/pc98/cbus/pckbd.c | 26 | ||||
-rw-r--r-- | sys/sys/consio.h | 14 | ||||
-rw-r--r-- | sys/sys/digiio.h | 2 | ||||
-rw-r--r-- | sys/sys/ioccom.h | 12 | ||||
-rw-r--r-- | sys/sys/kbio.h | 16 | ||||
-rw-r--r-- | sys/sys/pioctl.h | 8 | ||||
-rw-r--r-- | sys/sys/ttycom.h | 2 |
27 files changed, 421 insertions, 53 deletions
diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c index 9ec650e..76f2184 100644 --- a/sys/dev/atkbdc/atkbd.c +++ b/sys/dev/atkbdc/atkbd.c @@ -28,6 +28,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_compat.h" #include "opt_kbd.h" #include "opt_atkbd.h" @@ -851,6 +852,10 @@ atkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) int error; int s; int i; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif s = spltty(); switch (cmd) { @@ -858,6 +863,13 @@ atkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGKBMODE: /* get keyboard mode */ *(int *)arg = state->ks_mode; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 7): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBMODE: /* set keyboard mode */ switch (*(int *)arg) { case K_XLATE: @@ -883,6 +895,13 @@ atkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGETLED: /* get keyboard LED */ *(int *)arg = KBD_LED_VAL(kbd); break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 66): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETLED: /* set keyboard LED */ /* NOTE: lock key state in ks_state won't be changed */ if (*(int *)arg & ~LOCK_MASK) { @@ -912,6 +931,13 @@ atkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGKBSTATE: /* get lock key state */ *(int *)arg = state->ks_state & LOCK_MASK; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 20): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBSTATE: /* set lock key state */ if (*(int *)arg & ~LOCK_MASK) { splx(s); @@ -935,6 +961,13 @@ atkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) } return error; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 67): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETRAD: /* set keyboard repeat rate (old interface) */ splx(s); if (!KBD_HAS_DEVICE(kbd)) diff --git a/sys/dev/digi/digi.c b/sys/dev/digi/digi.c index 2eb72b0..7adc72a 100644 --- a/sys/dev/digi/digi.c +++ b/sys/dev/digi/digi.c @@ -913,6 +913,10 @@ digiioctl(struct tty *tp, u_long cmd, void *data, int flag, struct thread *td) { struct digi_softc *sc; struct digi_p *port; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif port = tp->t_sc; sc = port->sc; @@ -942,8 +946,15 @@ digiioctl(struct tty *tp, u_long cmd, void *data, int flag, struct thread *td) } } return (0); +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('e', 'C'): + ival = IOCPARM_IVAL(data); + data = &ival; + /* FALLTHROUGH */ +#endif case DIGIIO_RING: - port->send_ring = *(u_char *)data; + port->send_ring = (u_char)*(int *)data; break; default: return (ENOTTY); diff --git a/sys/dev/kbdmux/kbdmux.c b/sys/dev/kbdmux/kbdmux.c index d058b8a..8e93272c 100644 --- a/sys/dev/kbdmux/kbdmux.c +++ b/sys/dev/kbdmux/kbdmux.c @@ -31,6 +31,7 @@ * $FreeBSD$ */ +#include "opt_compat.h" #include "opt_kbd.h" #include <sys/param.h> @@ -940,6 +941,9 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) kbdmux_kbd_t *k; keyboard_info_t *ki; int error = 0, mode; +#ifdef COMPAT_FREEBSD6 + int ival; +#endif if (state == NULL) return (ENXIO); @@ -1048,6 +1052,12 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) KBDMUX_UNLOCK(state); break; +#ifdef COMPAT_FREEBSD6 + case _IO('K', 7): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBMODE: /* set keyboard mode */ KBDMUX_LOCK(state); @@ -1082,6 +1092,12 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) KBDMUX_UNLOCK(state); break; +#ifdef COMPAT_FREEBSD6 + case _IO('K', 66): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETLED: /* set keyboard LED */ KBDMUX_LOCK(state); @@ -1107,6 +1123,12 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) KBDMUX_UNLOCK(state); break; +#ifdef COMPAT_FREEBSD6 + case _IO('K', 20): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBSTATE: /* set lock key state */ KBDMUX_LOCK(state); @@ -1128,6 +1150,13 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) return (kbdmux_ioctl(kbd, KDSETLED, arg)); /* NOT REACHED */ +#ifdef COMPAT_FREEBSD6 + case _IO('K', 67): + cmd = KDSETRAD; + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETREPEAT: /* set keyboard repeat rate (new interface) */ case KDSETRAD: /* set keyboard repeat rate (old interface) */ KBDMUX_LOCK(state); diff --git a/sys/dev/syscons/scvidctl.c b/sys/dev/syscons/scvidctl.c index f2debe3..65a56c6 100644 --- a/sys/dev/syscons/scvidctl.c +++ b/sys/dev/syscons/scvidctl.c @@ -30,6 +30,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_compat.h" #include "opt_syscons.h" #include <sys/param.h> @@ -482,6 +483,10 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread * video_adapter_info_t adp_info; int error; int s; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif scp = SC_STAT(tp->t_dev); if (scp == NULL) /* tp == SC_MOUSE */ @@ -584,6 +589,13 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread * case FBIO_FINDMODE: return fb_ioctl(adp, FBIO_FINDMODE, data); +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('c', 104): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case CONS_SETWINORG: /* set frame buffer window origin */ case FBIO_SETWINORG: if (scp != scp->sc->cur_scp) @@ -675,8 +687,15 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread * return sc_set_graphics_mode(scp, tp, cmd & 0xff); #endif /* SC_NO_MODE_CHANGE */ +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 10): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETMODE: /* set current mode of this (virtual) console */ - switch (*(intptr_t *)data) { + switch (*(int *)data) { case KD_TEXT: /* switch to TEXT (known) mode */ /* * If scp->mode is of graphics modes, we don't know which @@ -804,8 +823,15 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread * *data = ISGRAPHSC(scp) ? KD_GRAPHICS : KD_TEXT; return 0; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 13): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSBORDER: /* set border color of this (virtual) console */ - scp->border = *(intptr_t *)data; + scp->border = *(int *)data; if (scp == scp->sc->cur_scp) sc_set_border(scp, scp->border); return 0; diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c index 08f8e90..4976896 100644 --- a/sys/dev/syscons/syscons.c +++ b/sys/dev/syscons/syscons.c @@ -32,6 +32,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_compat.h" #include "opt_syscons.h" #include "opt_splash.h" #include "opt_ddb.h" @@ -680,6 +681,10 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) sc_softc_t *sc; scr_stat *scp; int s; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif tp = dev->si_tty; @@ -980,6 +985,13 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) bcopy(&scp->smode, data, sizeof(struct vt_mode)); return 0; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('v', 4): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case VT_RELDISP: /* screen switcher ioctl */ s = spltty(); /* @@ -996,7 +1008,7 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) return EPERM; } error = EINVAL; - switch(*(intptr_t *)data) { + switch(*(int *)data) { case VT_FALSE: /* user refuses to release screen, abort */ if ((error = finish_vt_rel(scp, FALSE, &s)) == 0) DPRINTF(5, ("%s%d: VT_FALSE\n", SC_DRIVER_NAME, sc->unit)); @@ -1025,8 +1037,15 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) } return EINVAL; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('v', 5): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case VT_ACTIVATE: /* switch to screen *data */ - i = (*(intptr_t *)data == 0) ? scp->index : (*(intptr_t *)data - 1); + i = (*(int *)data == 0) ? scp->index : (*(int *)data - 1); s = spltty(); error = sc_clean_up(sc->cur_scp); splx(s); @@ -1034,8 +1053,15 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) return error; return sc_switch_scr(sc, i); +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('v', 6): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case VT_WAITACTIVE: /* wait for switch to occur */ - i = (*(intptr_t *)data == 0) ? scp->index : (*(intptr_t *)data - 1); + i = (*(int *)data == 0) ? scp->index : (*(int *)data - 1); if ((i < sc->first_vty) || (i >= sc->first_vty + sc->vtys)) return EINVAL; s = spltty(); @@ -1087,6 +1113,13 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) #endif return 0; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 20): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBSTATE: /* set keyboard state (locks) */ if (*(int *)data & ~LOCK_MASK) return EINVAL; @@ -1109,14 +1142,28 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) error = ENODEV; return error; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 67): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETRAD: /* set keyboard repeat & delay rates (old) */ if (*(int *)data & ~0x7f) return EINVAL; - error = kbd_ioctl(sc->kbd, cmd, data); + error = kbd_ioctl(sc->kbd, KDSETRAD, data); if (error == ENOIOCTL) error = ENODEV; return error; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 7): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBMODE: /* set keyboard mode */ switch (*(int *)data) { case K_XLATE: /* switch to XLT ascii mode */ @@ -1124,7 +1171,7 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) case K_CODE: /* switch to CODE mode */ scp->kbd_mode = *(int *)data; if (scp == sc->cur_scp) - kbd_ioctl(sc->kbd, cmd, data); + kbd_ioctl(sc->kbd, KDSKBMODE, data); return 0; default: return EINVAL; @@ -1141,6 +1188,13 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) error = ENODEV; return error; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 8): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDMKTONE: /* sound the bell */ if (*(int*)data) sc_bell(scp, (*(int*)data)&0xffff, @@ -1149,6 +1203,13 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) sc_bell(scp, scp->bell_pitch, scp->bell_duration); return 0; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 63): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KIOCSOUND: /* make tone (*data) hz */ if (scp == sc->cur_scp) { if (*(int *)data) @@ -1166,6 +1227,13 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) } return 0; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 66): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETLED: /* set keyboard LED status */ if (*(int *)data & ~LED_MASK) /* FIXME: LOCK_MASK? */ return EINVAL; @@ -1188,6 +1256,13 @@ scioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) error = ENODEV; return error; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('c', 110): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case CONS_SETKBD: /* set the new keyboard */ { keyboard_t *newkbd; diff --git a/sys/dev/uart/uart_kbd_sun.c b/sys/dev/uart/uart_kbd_sun.c index 02db9c6..81dde39 100644 --- a/sys/dev/uart/uart_kbd_sun.c +++ b/sys/dev/uart/uart_kbd_sun.c @@ -27,6 +27,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_compat.h" #include "opt_kbd.h" #include <sys/param.h> @@ -425,6 +426,9 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) { struct sunkbd_softc *sc; int error; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) + int ival; +#endif sc = (struct sunkbd_softc *)kbd; error = 0; @@ -432,6 +436,12 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) case KDGKBMODE: *(int *)data = sc->sc_mode; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) + case _IO('K', 7): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBMODE: switch (*(int *)data) { case K_XLATE: @@ -456,6 +466,12 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) case KDGETLED: *(int *)data = KBD_LED_VAL(kbd); break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) + case _IO('K', 66): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETLED: if (*(int *)data & ~LOCK_MASK) { error = EINVAL; @@ -478,6 +494,12 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) case KDGKBSTATE: *(int *)data = sc->sc_state & LOCK_MASK; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) + case _IO('K', 20): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBSTATE: if (*(int *)data & ~LOCK_MASK) { error = EINVAL; @@ -485,7 +507,8 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) } sc->sc_state &= ~LOCK_MASK; sc->sc_state |= *(int *)data; - break; + /* set LEDs and quit */ + return (sunkbd_ioctl(kbd, KDSETLED, data)); case KDSETREPEAT: case KDSETRAD: break; diff --git a/sys/dev/usb/ukbd.c b/sys/dev/usb/ukbd.c index 848ac81..3919794 100644 --- a/sys/dev/usb/ukbd.c +++ b/sys/dev/usb/ukbd.c @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); * HID spec: http://www.usb.org/developers/devclass_docs/HID1_11.pdf */ +#include "opt_compat.h" #include "opt_kbd.h" #include "opt_ukbd.h" @@ -1159,6 +1160,10 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) ukbd_state_t *state = kbd->kb_data; int s; int i; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif s = splusb(); switch (cmd) { @@ -1166,6 +1171,13 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGKBMODE: /* get keyboard mode */ *(int *)arg = state->ks_mode; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 7): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBMODE: /* set keyboard mode */ switch (*(int *)arg) { case K_XLATE: @@ -1191,6 +1203,13 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGETLED: /* get keyboard LED */ *(int *)arg = KBD_LED_VAL(kbd); break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 66): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETLED: /* set keyboard LED */ /* NOTE: lock key state in ks_state won't be changed */ if (*(int *)arg & ~LOCK_MASK) { @@ -1215,6 +1234,13 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGKBSTATE: /* get lock key state */ *(int *)arg = state->ks_state & LOCK_MASK; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 20): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBSTATE: /* set lock key state */ if (*(int *)arg & ~LOCK_MASK) { splx(s); @@ -1241,6 +1267,13 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) kbd->kb_delay2 = ((int *)arg)[1]; return 0; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 67): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETRAD: /* set keyboard repeat rate (old interface) */ splx(s); return set_typematic(kbd, *(int *)arg); diff --git a/sys/dev/vkbd/vkbd.c b/sys/dev/vkbd/vkbd.c index 7795318..9eca6de 100644 --- a/sys/dev/vkbd/vkbd.c +++ b/sys/dev/vkbd/vkbd.c @@ -31,6 +31,7 @@ * $FreeBSD$ */ +#include "opt_compat.h" #include "opt_kbd.h" #include <sys/param.h> @@ -1092,6 +1093,9 @@ vkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) { vkbd_state_t *state = (vkbd_state_t *) kbd->kb_data; int i; +#ifdef COMPAT_FREEBSD6 + int ival; +#endif VKBD_LOCK(state); @@ -1100,6 +1104,12 @@ vkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) *(int *)arg = state->ks_mode; break; +#ifdef COMPAT_FREEBSD6 + case _IO('K', 7): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBMODE: /* set keyboard mode */ switch (*(int *)arg) { case K_XLATE: @@ -1130,6 +1140,12 @@ vkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) *(int *)arg = KBD_LED_VAL(kbd); break; +#ifdef COMPAT_FREEBSD6 + case _IO('K', 66): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETLED: /* set keyboard LED */ /* NOTE: lock key state in ks_state won't be changed */ if (*(int *)arg & ~LOCK_MASK) { @@ -1155,6 +1171,12 @@ vkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) *(int *)arg = state->ks_state & LOCK_MASK; break; +#ifdef COMPAT_FREEBSD6 + case _IO('K', 20): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBSTATE: /* set lock key state */ if (*(int *)arg & ~LOCK_MASK) { VKBD_UNLOCK(state); @@ -1174,6 +1196,12 @@ vkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) vkbd_status_changed(state); break; +#ifdef COMPAT_FREEBSD6 + case _IO('K', 67): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETRAD: /* set keyboard repeat rate (old interface) */ kbd->kb_delay1 = typematic_delay(*(int *)arg); kbd->kb_delay2 = typematic_rate(*(int *)arg); diff --git a/sys/fs/procfs/procfs_ioctl.c b/sys/fs/procfs/procfs_ioctl.c index 7acf7d2..3808a2b 100644 --- a/sys/fs/procfs/procfs_ioctl.c +++ b/sys/fs/procfs/procfs_ioctl.c @@ -65,6 +65,9 @@ procfs_ioctl(PFS_IOCTL_ARGS) struct procfs_status32 *ps32; #endif int error, flags, sig; +#ifdef COMPAT_FREEBSD6 + int ival; +#endif PROC_LOCK(p); error = 0; @@ -72,20 +75,35 @@ procfs_ioctl(PFS_IOCTL_ARGS) #if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43) case _IOC(IOC_IN, 'p', 1, 0): #endif +#ifdef COMPAT_FREEBSD6 + case _IO('p', 1): + ival = IOCPARM_IVAL(data); + data = &ival; +#endif case PIOCBIS: - p->p_stops |= *(uintptr_t *)data; + p->p_stops |= *(unsigned int *)data; break; #if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43) case _IOC(IOC_IN, 'p', 2, 0): #endif +#ifdef COMPAT_FREEBSD6 + case _IO('p', 2): + ival = IOCPARM_IVAL(data); + data = &ival; +#endif case PIOCBIC: - p->p_stops &= ~*(uintptr_t *)data; + p->p_stops &= ~*(unsigned int *)data; break; #if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43) case _IOC(IOC_IN, 'p', 3, 0): #endif +#ifdef COMPAT_FREEBSD6 + case _IO('p', 3): + ival = IOCPARM_IVAL(data); + data = &ival; +#endif case PIOCSFL: - flags = *(uintptr_t *)data; + flags = *(unsigned int *)data; if (flags & PF_ISUGID && (error = suser(td)) != 0) break; p->p_pfsflags = flags; @@ -132,10 +150,15 @@ procfs_ioctl(PFS_IOCTL_ARGS) #if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43) case _IOC(IOC_IN, 'p', 5, 0): #endif +#ifdef COMPAT_FREEBSD6 + case _IO('p', 5): + ival = IOCPARM_IVAL(data); + data = &ival; +#endif case PIOCCONT: if (p->p_step == 0) break; - sig = *(uintptr_t *)data; + sig = *(unsigned int *)data; if (sig != 0 && !_SIG_VALID(sig)) { error = EINVAL; break; diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 13387ec..cab79b8 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -524,9 +524,9 @@ int ioctl(struct thread *td, struct ioctl_args *uap) { u_long com; - int error; + int arg, error; u_int size; - caddr_t data, memp; + caddr_t data; if (uap->com > 0xffffffff) { printf( @@ -548,20 +548,24 @@ ioctl(struct thread *td, struct ioctl_args *uap) #else ((com & (IOC_IN | IOC_OUT)) && size == 0) || #endif - ((com & IOC_VOID) && size > 0)) + ((com & IOC_VOID) && size > 0 && size != sizeof(int))) return (ENOTTY); if (size > 0) { - memp = malloc((u_long)size, M_IOCTLOPS, M_WAITOK); - data = memp; - } else { - memp = NULL; + if (!(com & IOC_VOID)) + data = malloc((u_long)size, M_IOCTLOPS, M_WAITOK); + else { + /* Integer argument. */ + arg = (intptr_t)uap->data; + data = (void *)&arg; + size = 0; + } + } else data = (void *)&uap->data; - } if (com & IOC_IN) { error = copyin(uap->data, data, (u_int)size); if (error) { - free(memp, M_IOCTLOPS); + free(data, M_IOCTLOPS); return (error); } } else if (com & IOC_OUT) { @@ -577,8 +581,8 @@ ioctl(struct thread *td, struct ioctl_args *uap) if (error == 0 && (com & IOC_OUT)) error = copyout(data, uap->data, (u_int)size); - if (memp != NULL) - free(memp, M_IOCTLOPS); + if (size > 0) + free(data, M_IOCTLOPS); return (error); } diff --git a/sys/kern/tty_pts.c b/sys/kern/tty_pts.c index 942b77f..9b1466f 100644 --- a/sys/kern/tty_pts.c +++ b/sys/kern/tty_pts.c @@ -641,6 +641,10 @@ ptcioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td { struct tty *tp = dev->si_tty; struct pt_desc *pt = dev->si_drv1; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif switch (cmd) { @@ -710,6 +714,13 @@ ptcioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td ndflush(&tp->t_outq, tp->t_outq.c_cc); break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('t', 95): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case TIOCSIG: if (*(unsigned int *)data >= NSIG || *(unsigned int *)data == 0) diff --git a/sys/kern/tty_pty.c b/sys/kern/tty_pty.c index c861d40..af005ab 100644 --- a/sys/kern/tty_pty.c +++ b/sys/kern/tty_pty.c @@ -573,6 +573,10 @@ ptcioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td { struct tty *tp = dev->si_tty; struct ptsc *pt = dev->si_drv1; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif switch (cmd) { @@ -627,6 +631,13 @@ ptcioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td ndflush(&tp->t_outq, tp->t_outq.c_cc); break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('t', 95): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case TIOCSIG: if (*(unsigned int *)data >= NSIG || *(unsigned int *)data == 0) diff --git a/sys/modules/digi/digi/Makefile b/sys/modules/digi/digi/Makefile index 6ba9c6e..a9bd010 100644 --- a/sys/modules/digi/digi/Makefile +++ b/sys/modules/digi/digi/Makefile @@ -10,6 +10,7 @@ SRCS+= opt_compat.h .if !defined(KERNBUILDDIR) opt_compat.h: echo "#define COMPAT_43 1" > opt_compat.h + echo "#define COMPAT_FREEBSD6 1" >> opt_compat.h .endif .include <bsd.kmod.mk> diff --git a/sys/modules/if_tap/Makefile b/sys/modules/if_tap/Makefile index 3b75586..c138e71 100644 --- a/sys/modules/if_tap/Makefile +++ b/sys/modules/if_tap/Makefile @@ -5,9 +5,12 @@ .PATH: ${.CURDIR}/../../net KMOD= if_tap -SRCS= if_tap.c opt_inet.h vnode_if.h +SRCS= if_tap.c opt_compat.h opt_inet.h vnode_if.h .if !defined(KERNBUILDDIR) +opt_compat.h: + echo "#define COMPAT_FREEBSD6 1" > ${.TARGET} + opt_inet.h: echo "#define INET 1" > opt_inet.h .endif diff --git a/sys/modules/kbdmux/Makefile b/sys/modules/kbdmux/Makefile index 2d64ddf..70b39a0 100644 --- a/sys/modules/kbdmux/Makefile +++ b/sys/modules/kbdmux/Makefile @@ -4,9 +4,12 @@ .PATH: ${.CURDIR}/../../dev/kbdmux KMOD= kbdmux -SRCS= kbdmux.c opt_kbd.h bus_if.h device_if.h +SRCS= kbdmux.c opt_compat.h opt_kbd.h bus_if.h device_if.h .if !defined(KERNBUILDDIR) +opt_compat.h: + echo "#define COMPAT_FREEBSD6 1" > ${.TARGET} + opt_kbd.h: echo "#define KBD_INSTALL_CDEV 1" > ${.TARGET} .endif diff --git a/sys/modules/procfs/Makefile b/sys/modules/procfs/Makefile index 48a3e02..6c840ed 100644 --- a/sys/modules/procfs/Makefile +++ b/sys/modules/procfs/Makefile @@ -32,6 +32,7 @@ opt_compat.h: echo "#define COMPAT_43 1" > ${.TARGET} echo "#define COMPAT_FREEBSD4 1" >> ${.TARGET} echo "#define COMPAT_FREEBSD5 1" >> ${.TARGET} + echo "#define COMPAT_FREEBSD6 1" >> ${.TARGET} .if ${MACHINE_ARCH} == "amd64" echo "#define COMPAT_IA32 1" >> ${.TARGET} echo "#define COMPAT_LINUX32 1" >> ${.TARGET} diff --git a/sys/modules/ukbd/Makefile b/sys/modules/ukbd/Makefile index 80d2905..331e729 100644 --- a/sys/modules/ukbd/Makefile +++ b/sys/modules/ukbd/Makefile @@ -3,9 +3,13 @@ .PATH: ${.CURDIR}/../../dev/usb KMOD= ukbd -SRCS= bus_if.h device_if.h opt_usb.h opt_kbd.h opt_ukbd.h usbdevs.h ukbd.c +SRCS= bus_if.h device_if.h opt_compat.h opt_usb.h opt_kbd.h opt_ukbd.h \ + usbdevs.h ukbd.c .if !defined(KERNBUILDDIR) +opt_compat.h: + echo "#define COMPAT_FREEBSD6 1" > ${.TARGET} + opt_kbd.h: echo "#define KBD_INSTALL_CDEV 1" > ${.TARGET} .endif diff --git a/sys/modules/vkbd/Makefile b/sys/modules/vkbd/Makefile index 29591dc..500274c 100644 --- a/sys/modules/vkbd/Makefile +++ b/sys/modules/vkbd/Makefile @@ -4,9 +4,12 @@ .PATH: ${.CURDIR}/../../dev/vkbd KMOD= vkbd -SRCS= vkbd.c opt_kbd.h +SRCS= vkbd.c opt_compat.h opt_kbd.h .if !defined(KERNBUILDDIR) +opt_compat.h: + echo "#define COMPAT_FREEBSD6 1" > ${.TARGET} + opt_kbd.h: echo "#define KBD_INSTALL_CDEV 1" > ${.TARGET} .endif diff --git a/sys/net/if_tap.c b/sys/net/if_tap.c index dd40cde..1f0ed89 100644 --- a/sys/net/if_tap.c +++ b/sys/net/if_tap.c @@ -35,6 +35,7 @@ * $Id: if_tap.c,v 0.21 2000/07/23 21:46:02 max Exp $ */ +#include "opt_compat.h" #include "opt_inet.h" #include <sys/param.h> @@ -612,6 +613,10 @@ tapioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td struct tapinfo *tapp = NULL; int s; int f; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) + int ival; +#endif switch (cmd) { case TAPSIFINFO: @@ -686,8 +691,15 @@ tapioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td bcopy(&ifp->if_flags, data, sizeof(ifp->if_flags)); break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) + case _IO('V', 0): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case VMIO_SIOCSIFFLAGS: /* VMware/VMnet SIOCSIFFLAGS */ - f = *(intptr_t *)data; + f = *(int *)data; f &= 0x0fff; f &= ~IFF_CANTCHANGE; f |= IFF_UP; diff --git a/sys/net/if_tap.h b/sys/net/if_tap.h index daaddf7..0086285 100644 --- a/sys/net/if_tap.h +++ b/sys/net/if_tap.h @@ -57,7 +57,7 @@ struct tapinfo { #define TAPGIFINFO _IOR('t', 92, struct tapinfo) /* VMware ioctl's */ -#define VMIO_SIOCSIFFLAGS _IO('V', 0) +#define VMIO_SIOCSIFFLAGS _IOWINT('V', 0) #define VMIO_SIOCSKEEP _IO('V', 1) #define VMIO_SIOCSIFBR _IO('V', 2) #define VMIO_SIOCSLADRF _IO('V', 3) diff --git a/sys/pc98/cbus/pckbd.c b/sys/pc98/cbus/pckbd.c index a93aa52..b22ced3 100644 --- a/sys/pc98/cbus/pckbd.c +++ b/sys/pc98/cbus/pckbd.c @@ -28,6 +28,7 @@ * $FreeBSD$ */ +#include "opt_compat.h" #include "opt_kbd.h" #include <sys/param.h> @@ -704,6 +705,10 @@ pckbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) pckbd_state_t *state = kbd->kb_data; int s; int i; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + int ival; +#endif s = spltty(); switch (cmd) { @@ -711,6 +716,13 @@ pckbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGKBMODE: /* get keyboard mode */ *(int *)arg = state->ks_mode; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 7): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBMODE: /* set keyboard mode */ switch (*(int *)arg) { case K_XLATE: @@ -736,6 +748,13 @@ pckbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGETLED: /* get keyboard LED */ *(int *)arg = KBD_LED_VAL(kbd); break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 66): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSETLED: /* set keyboard LED */ /* NOTE: lock key state in ks_state won't be changed */ if (*(int *)arg & ~LOCK_MASK) { @@ -756,6 +775,13 @@ pckbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) case KDGKBSTATE: /* get lock key state */ *(int *)arg = state->ks_state & LOCK_MASK; break; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) + case _IO('K', 20): + ival = IOCPARM_IVAL(arg); + arg = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif case KDSKBSTATE: /* set lock key state */ if (*(int *)arg & ~LOCK_MASK) { splx(s); diff --git a/sys/sys/consio.h b/sys/sys/consio.h index 505ef06..7b18ade 100644 --- a/sys/sys/consio.h +++ b/sys/sys/consio.h @@ -51,10 +51,10 @@ #define KD_TEXT1 2 /* set text mode !restore fonts */ #define KD_PIXEL 3 /* set pixel mode */ #define KDGETMODE _IOR('K', 9, int) -#define KDSETMODE _IO('K', 10 /*, int */) +#define KDSETMODE _IOWINT('K', 10) /* set border color */ -#define KDSBORDER _IO('K', 13 /*, int */) +#define KDSBORDER _IOWINT('K', 13) /* set up raster(pixel) text mode */ struct _scr_size { @@ -255,10 +255,10 @@ typedef struct vid_info vid_info_t; #define CONS_FINDMODE _IOWR('c', 103, video_info_t) /* set the frame buffer window origin (equivalent to FBIO_SETWINORG) */ -#define CONS_SETWINORG _IO('c', 104 /*, u_int */) +#define CONS_SETWINORG _IOWINT('c', 104) /* use the specified keyboard */ -#define CONS_SETKBD _IO('c', 110 /*, int */) +#define CONS_SETKBD _IOWINT('c', 110) /* release the current keyboard */ #define CONS_RELKBD _IO('c', 111) @@ -320,13 +320,13 @@ typedef struct vt_mode vtmode_t; #define VT_FALSE 0 #define VT_TRUE 1 #define VT_ACKACQ 2 -#define VT_RELDISP _IO('v', 4 /*, int */) +#define VT_RELDISP _IOWINT('v', 4) /* activate the specified vty */ -#define VT_ACTIVATE _IO('v', 5 /*, int */) +#define VT_ACTIVATE _IOWINT('v', 5) /* wait until the specified vty is activate */ -#define VT_WAITACTIVE _IO('v', 6 /*, int */) +#define VT_WAITACTIVE _IOWINT('v', 6) /* get the currently active vty */ #define VT_GETACTIVE _IOR('v', 7, int) diff --git a/sys/sys/digiio.h b/sys/sys/digiio.h index 7382c0a..57824dc 100644 --- a/sys/sys/digiio.h +++ b/sys/sys/digiio.h @@ -59,7 +59,7 @@ enum { #define DIGIIO_REINIT _IO('e', 'A') #define DIGIIO_DEBUG _IOW('e', 'B', int) -#define DIGIIO_RING _IO('e', 'C') +#define DIGIIO_RING _IOWINT('e', 'C') #define DIGIIO_MODEL _IOR('e', 'D', enum digi_model) #define DIGIIO_IDENT _IOW('e', 'E', char *) #define DIGIIO_SETALTPIN _IOW('e', 'F', int) diff --git a/sys/sys/ioccom.h b/sys/sys/ioccom.h index 7d25b39..acbd0eb 100644 --- a/sys/sys/ioccom.h +++ b/sys/sys/ioccom.h @@ -48,17 +48,25 @@ #define IOC_OUT 0x40000000 /* copy out parameters */ #define IOC_IN 0x80000000 /* copy in parameters */ #define IOC_INOUT (IOC_IN|IOC_OUT) -#define IOC_DIRMASK 0xe0000000 /* mask for IN/OUT/VOID */ +#define IOC_DIRMASK (IOC_VOID|IOC_OUT|IOC_IN) #define _IOC(inout,group,num,len) \ ((unsigned long)(inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))) #define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0) +#define _IOWINT(g,n) _IOC(IOC_VOID, (g), (n), sizeof(int)) #define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t)) #define _IOW(g,n,t) _IOC(IOC_IN, (g), (n), sizeof(t)) /* this should be _IORW, but stdio got there first */ #define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t)) -#ifndef _KERNEL +#ifdef _KERNEL + +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) || defined(COMPAT_43) +#define IOCPARM_IVAL(x) ((int)(intptr_t)(void *)*(caddr_t *)(void *)(x)) +#endif + +#else #include <sys/cdefs.h> diff --git a/sys/sys/kbio.h b/sys/sys/kbio.h index 97522197..00bcacf 100644 --- a/sys/sys/kbio.h +++ b/sys/sys/kbio.h @@ -15,16 +15,16 @@ #define K_XLATE 1 /* keyboard returns ascii */ #define K_CODE 2 /* keyboard returns keycodes */ #define KDGKBMODE _IOR('K', 6, int) -#define KDSKBMODE _IO('K', 7 /*, int */) +#define KDSKBMODE _IOWINT('K', 7) /* make tone */ -#define KDMKTONE _IO('K', 8 /*, int */) +#define KDMKTONE _IOWINT('K', 8) /* see console.h for the definitions of the following ioctls */ #ifdef notdef #define KDGETMODE _IOR('K', 9, int) -#define KDSETMODE _IO('K', 10 /*, int */) -#define KDSBORDER _IO('K', 13 /*, int */) +#define KDSETMODE _IOWINT('K', 10) +#define KDSBORDER _IOWINT('K', 13) #endif /* get/set keyboard lock state */ @@ -34,14 +34,14 @@ #define ALKED 8 /* AltGr locked */ #define LOCK_MASK (CLKED | NLKED | SLKED | ALKED) #define KDGKBSTATE _IOR('K', 19, int) -#define KDSKBSTATE _IO('K', 20 /*, int */) +#define KDSKBSTATE _IOWINT('K', 20) /* enable/disable I/O access */ #define KDENABIO _IO('K', 60) #define KDDISABIO _IO('K', 61) /* make sound */ -#define KIOCSOUND _IO('K', 63 /*, int */) +#define KIOCSOUND _IOWINT('K', 63) /* get keyboard model */ #define KB_OTHER 0 /* keyboard not known */ @@ -55,10 +55,10 @@ #define LED_SCR 4 /* Scroll lock LED */ #define LED_MASK (LED_CAP | LED_NUM | LED_SCR) #define KDGETLED _IOR('K', 65, int) -#define KDSETLED _IO('K', 66 /*, int */) +#define KDSETLED _IOWINT('K', 66) /* set keyboard repeat rate (obsolete, use KDSETREPEAT below) */ -#define KDSETRAD _IO('K', 67 /*, int */) +#define KDSETRAD _IOWINT('K', 67) struct keyboard_info { int kb_index; /* kbdio index# */ diff --git a/sys/sys/pioctl.h b/sys/sys/pioctl.h index 9e3233f..91a3229 100644 --- a/sys/sys/pioctl.h +++ b/sys/sys/pioctl.h @@ -49,12 +49,12 @@ struct procfs_status { unsigned long val; /* Any extra data */ }; -# define PIOCBIS _IO('p', 1) /* Set event flag */ -# define PIOCBIC _IO('p', 2) /* Clear event flag */ -# define PIOCSFL _IO('p', 3) /* Set flags */ +# define PIOCBIS _IOWINT('p', 1) /* Set event flag */ +# define PIOCBIC _IOWINT('p', 2) /* Clear event flag */ +# define PIOCSFL _IOWINT('p', 3) /* Set flags */ /* wait for proc to stop */ # define PIOCWAIT _IOR('p', 4, struct procfs_status) -# define PIOCCONT _IO('p', 5) /* Continue a process */ +# define PIOCCONT _IOWINT('p', 5) /* Continue a process */ /* Get proc status */ # define PIOCSTATUS _IOR('p', 6, struct procfs_status) # define PIOCGFL _IOR('p', 7, unsigned int) /* Get flags */ diff --git a/sys/sys/ttycom.h b/sys/sys/ttycom.h index 4545d84..6e59577 100644 --- a/sys/sys/ttycom.h +++ b/sys/sys/ttycom.h @@ -123,7 +123,7 @@ struct winsize { #define TIOCSCTTY _IO('t', 97) /* become controlling tty */ /* 97-90 tun; some conflicts */ #define TIOCEXT _IOW('t', 96, int) /* pty: external processing */ -#define TIOCSIG _IO('t', 95) /* pty: generate signal */ +#define TIOCSIG _IOWINT('t', 95) /* pty: generate signal */ #define TIOCDRAIN _IO('t', 94) /* wait till output drained */ /* 92-90 tap; some conflicts */ #define TIOCMSDTRWAIT _IOW('t', 91, int) /* modem: set wait on close */ |