minor fixes relating to u.u_error handling
[unix-history] / usr / src / sys / vax / uba / dh.c
index 9e1821a..f4ae51a 100644 (file)
@@ -1,4 +1,4 @@
-/*     dh.c    4.46    82/07/15        */
+/*     dh.c    4.52    82/10/10        */
 
 #include "dh.h"
 #if NDH > 0
 
 #include "dh.h"
 #if NDH > 0
 #include "../h/pte.h"
 #include "../h/buf.h"
 #include "../h/vm.h"
 #include "../h/pte.h"
 #include "../h/buf.h"
 #include "../h/vm.h"
-#include "../h/ubareg.h"
-#include "../h/ubavar.h"
+
+#include "../vaxuba/ubareg.h"
+#include "../vaxuba/ubavar.h"
+
 #include "../h/bk.h"
 #include "../h/clist.h"
 #include "../h/file.h"
 #include "../h/bk.h"
 #include "../h/clist.h"
 #include "../h/file.h"
+#include "../h/uio.h"
 
 /*
  * Definition of the driver for the auto-configuration program.
 
 /*
  * Definition of the driver for the auto-configuration program.
@@ -308,22 +311,22 @@ dhclose(dev, flag)
        ttyclose(tp);
 }
 
        ttyclose(tp);
 }
 
-dhread(dev)
+dhread(dev, uio)
        dev_t dev;
        dev_t dev;
+       struct uio *uio;
 {
 {
-       register struct tty *tp;
+       register struct tty *tp = &dh11[minor(dev)];
 
 
-       tp = &dh11[minor(dev)];
-       (*linesw[tp->t_line].l_read)(tp);
+       return ((*linesw[tp->t_line].l_read)(tp, uio));
 }
 
 }
 
-dhwrite(dev)
+dhwrite(dev, uio)
        dev_t dev;
        dev_t dev;
+       struct uio *uio;
 {
 {
-       register struct tty *tp;
+       register struct tty *tp = &dh11[minor(dev)];
 
 
-       tp = &dh11[minor(dev)];
-       (*linesw[tp->t_line].l_write)(tp);
+       return ((*linesw[tp->t_line].l_write)(tp, uio));
 }
 
 /*
 }
 
 /*
@@ -390,32 +393,37 @@ dhrint(dh)
  * Ioctl for DH11.
  */
 /*ARGSUSED*/
  * Ioctl for DH11.
  */
 /*ARGSUSED*/
-dhioctl(dev, cmd, addr, flag)
-       caddr_t addr;
+dhioctl(dev, cmd, data, flag)
+       caddr_t data;
 {
        register struct tty *tp;
        register unit = minor(dev);
 
        tp = &dh11[unit];
 {
        register struct tty *tp;
        register unit = minor(dev);
 
        tp = &dh11[unit];
-       cmd = (*linesw[tp->t_line].l_ioctl)(tp, cmd, addr);
+       cmd = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag);
        if (cmd == 0)
                return;
        if (cmd == 0)
                return;
-       if (ttioctl(tp, cmd, addr, flag)) {
-               if (cmd==TIOCSETP || cmd==TIOCSETN)
+       if (ttioctl(tp, cmd, data, flag)) {
+               if (cmd == TIOCSETP || cmd == TIOCSETN)
                        dhparam(unit);
        } else switch(cmd) {
                        dhparam(unit);
        } else switch(cmd) {
+
        case TIOCSBRK:
                ((struct dhdevice *)(tp->t_addr))->dhbreak |= 1<<(unit&017);
                break;
        case TIOCSBRK:
                ((struct dhdevice *)(tp->t_addr))->dhbreak |= 1<<(unit&017);
                break;
+
        case TIOCCBRK:
                ((struct dhdevice *)(tp->t_addr))->dhbreak &= ~(1<<(unit&017));
                break;
        case TIOCCBRK:
                ((struct dhdevice *)(tp->t_addr))->dhbreak &= ~(1<<(unit&017));
                break;
+
        case TIOCSDTR:
                dmctl(unit, DML_DTR|DML_RTS, DMBIS);
                break;
        case TIOCSDTR:
                dmctl(unit, DML_DTR|DML_RTS, DMBIS);
                break;
+
        case TIOCCDTR:
                dmctl(unit, DML_DTR|DML_RTS, DMBIC);
                break;
        case TIOCCDTR:
                dmctl(unit, DML_DTR|DML_RTS, DMBIC);
                break;
+
        default:
                u.u_error = ENOTTY;
        }
        default:
                u.u_error = ENOTTY;
        }
@@ -675,9 +683,11 @@ dhreset(uban)
 dhtimer()
 {
        register int dh;
 dhtimer()
 {
        register int dh;
+       register int s = spl5();
 
        for (dh = 0; dh < NDH; dh++)
                dhrint(dh);
 
        for (dh = 0; dh < NDH; dh++)
                dhrint(dh);
+       splx(s);
 }
 
 /*
 }
 
 /*