strategy returns void, ioctl cmd is u_long
[unix-history] / usr / src / sys / hp / dev / ite.c
index a719035..e0dfc68 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1988 University of Utah.
 /*
  * Copyright (c) 1988 University of Utah.
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1990, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * the Systems Programming Group of the University of Utah Computer
  *
  * This code is derived from software contributed to Berkeley by
  * the Systems Programming Group of the University of Utah Computer
@@ -11,7 +11,7 @@
  *
  * from: Utah $Hdr: ite.c 1.28 92/12/20$
  *
  *
  * from: Utah $Hdr: ite.c 1.28 92/12/20$
  *
- *     @(#)ite.c       7.15 (Berkeley) %G%
+ *     @(#)ite.c       8.3 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -91,6 +91,7 @@ u_char  console_attributes[0x2200];
  */
 iteon(dev, flag)
        dev_t dev;
  */
 iteon(dev, flag)
        dev_t dev;
+       int flag;
 {
        int unit = UNIT(dev);
        struct tty *tp = &ite_tty[unit];
 {
        int unit = UNIT(dev);
        struct tty *tp = &ite_tty[unit];
@@ -156,18 +157,19 @@ iteinit(dev)
  */
 iteoff(dev, flag)
        dev_t dev;
  */
 iteoff(dev, flag)
        dev_t dev;
+       int flag;
 {
        register struct ite_softc *ip = &ite_softc[UNIT(dev)];
 
 {
        register struct ite_softc *ip = &ite_softc[UNIT(dev)];
 
-       if (flag & 2)
+       if (flag & 2) {
                ip->flags |= ITE_INGRF;
                ip->flags |= ITE_INGRF;
+               ip->flags &= ~ITE_CURSORON;
+       }
        if ((ip->flags & ITE_ACTIVE) == 0)
                return;
        if ((flag & 1) ||
        if ((ip->flags & ITE_ACTIVE) == 0)
                return;
        if ((flag & 1) ||
-           (ip->flags & (ITE_INGRF|ITE_ISCONS|ITE_INITED)) == ITE_INITED) {
+           (ip->flags & (ITE_INGRF|ITE_ISCONS|ITE_INITED)) == ITE_INITED)
                (*ip->isw->ite_deinit)(ip);
                (*ip->isw->ite_deinit)(ip);
-               ip->flags &= ~ITE_CURSORON;
-       }
        if ((flag & 2) == 0)
                ip->flags &= ~ITE_ACTIVE;
 }
        if ((flag & 2) == 0)
                ip->flags &= ~ITE_ACTIVE;
 }
@@ -236,6 +238,7 @@ iteclose(dev, flag, mode, p)
 iteread(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
 iteread(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
+       int flag;
 {
        register struct tty *tp = &ite_tty[UNIT(dev)];
 
 {
        register struct tty *tp = &ite_tty[UNIT(dev)];
 
@@ -245,6 +248,7 @@ iteread(dev, uio, flag)
 itewrite(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
 itewrite(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
+       int flag;
 {
        int unit = UNIT(dev);
        register struct tty *tp = &ite_tty[unit];
 {
        int unit = UNIT(dev);
        register struct tty *tp = &ite_tty[unit];
@@ -257,7 +261,7 @@ itewrite(dev, uio, flag)
 
 iteioctl(dev, cmd, addr, flag, p)
        dev_t dev;
 
 iteioctl(dev, cmd, addr, flag, p)
        dev_t dev;
-       int cmd;
+       u_long cmd;
        caddr_t addr;
        int flag;
        struct proc *p;
        caddr_t addr;
        int flag;
        struct proc *p;
@@ -290,7 +294,7 @@ itestart(tp)
        register struct tty *tp;
 {
        register int cc, s;
        register struct tty *tp;
 {
        register int cc, s;
-       int hiwat = 0;
+       int hiwat = 0, hadcursor = 0;
        struct ite_softc *ip;
 
        /*
        struct ite_softc *ip;
 
        /*
@@ -331,12 +335,17 @@ itestart(tp)
                 * Saves a lot of expensive window move operations.
                 */
                ip = &ite_softc[UNIT(tp->t_dev)];
                 * Saves a lot of expensive window move operations.
                 */
                ip = &ite_softc[UNIT(tp->t_dev)];
-               ite_erasecursor(ip, ip->isw);
-               ip->flags &= ~ITE_CURSORON;
+               if (ip->flags & ITE_CURSORON) {
+                       ite_erasecursor(ip, ip->isw);
+                       ip->flags &= ~ITE_CURSORON;
+                       hadcursor = 1;
+               }
                while (--cc >= 0)
                        iteputchar(getc(&tp->t_outq), tp->t_dev);
                while (--cc >= 0)
                        iteputchar(getc(&tp->t_outq), tp->t_dev);
-               ip->flags |= ITE_CURSORON;
-               ite_drawcursor(ip, ip->isw);
+               if (hadcursor) {
+                       ip->flags |= ITE_CURSORON;
+                       ite_drawcursor(ip, ip->isw);
+               }
                if (hiwat) {
                        tp->t_state |= TS_TIMEOUT;
                        timeout(iterestart, tp, 1);
                if (hiwat) {
                        tp->t_state |= TS_TIMEOUT;
                        timeout(iterestart, tp, 1);
@@ -347,7 +356,7 @@ itestart(tp)
 }
 
 itefilter(stat, c)
 }
 
 itefilter(stat, c)
-     register char stat, c;
+       register char stat, c;
 {
        static int capsmode = 0;
        static int metamode = 0;
 {
        static int capsmode = 0;
        static int metamode = 0;
@@ -380,7 +389,7 @@ itefilter(stat, c)
                        code = kbd_keymap[c];
                        break;
                }
                        code = kbd_keymap[c];
                        break;
                }
-               /* fall into... */
+               /* FALLTHROUGH */
 
        case KBD_SHIFT:
                code = kbd_shiftmap[c];
 
        case KBD_SHIFT:
                code = kbd_shiftmap[c];