spl5 not splimp
[unix-history] / usr / src / sys / kern / tty_subr.c
index c8683fa..b78ec73 100644 (file)
@@ -1,20 +1,12 @@
-/*     tty_subr.c      4.6     %G%     */
+/*     tty_subr.c      4.13    81/11/20        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 #include "../h/conf.h"
 #include "../h/buf.h"
 #include "../h/tty.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
 #include "../h/conf.h"
 #include "../h/buf.h"
 #include "../h/tty.h"
+#include "../h/clist.h"
 
 
-struct cblock {
-       struct  cblock *c_next;
-       char    c_info[CBSIZE];
-};
-
-struct cblock cfree[NCLIST];
-struct cblock *cfreelist;
-
-int    cfreecount;
 char   cwaiting;
 
 /*
 char   cwaiting;
 
 /*
@@ -26,7 +18,7 @@ register struct clist *p;
        register struct cblock *bp;
        register int c, s;
 
        register struct cblock *bp;
        register int c, s;
 
-       s = spl6();
+       s = spl5();
        if (p->c_cc <= 0) {
                c = -1;
                p->c_cc = 0;
        if (p->c_cc <= 0) {
                c = -1;
                p->c_cc = 0;
@@ -62,31 +54,7 @@ register struct clist *p;
        return(c);
 }
 
        return(c);
 }
 
-#if HAVTR > 0
-trgetc(p)
-register struct clist *p;
-{
-       register struct cblock *bp;
-       register int c, s;
-
-       if (p->c_cc <= 0) {
-               c = -1;
-               p->c_cc = 0;
-               p->c_cf = NULL;
-       } else {
-               c = *p->c_cf++ & 0377;
-               if (--p->c_cc<=0) {
-                       p->c_cf = NULL;
-               } else if (((int)p->c_cf & CROUND) == 0) {
-                       bp = (struct cblock *)(p->c_cf);
-                       bp--;
-                       p->c_cf = bp->c_next->c_info;
-               }
-       }
-       return(c);
-}
-#endif
-
+#if 0
 /*
  * copy clist to buffer.
  * return number of bytes moved.
 /*
  * copy clist to buffer.
  * return number of bytes moved.
@@ -101,7 +69,7 @@ register char *cp;
 
        if (cc <= 0)
                return(0);
 
        if (cc <= 0)
                return(0);
-       s = spl6();
+       s = spl5();
        if (q->c_cc <= 0) {
                q->c_cc = 0;
                q->c_cf = q->c_cl = NULL;
        if (q->c_cc <= 0) {
                q->c_cc = 0;
                q->c_cf = q->c_cl = NULL;
@@ -142,43 +110,8 @@ register char *cp;
        splx(s);
        return(cp-acp);
 }
        splx(s);
        return(cp-acp);
 }
-
-#if HAVTR > 0
-/*
- * Traverse a clist copying its contents to a buffer.
- * q->cc and q->cf are updated with the current position
- * in the list, but bytes are not released to the freelist.
- */
-trq_to_b(q, cp, cc)
-register struct clist *q;
-register char *cp;
-register cc;
-{
-       register struct cblock *bp;
-       char *acp;
-
-       if (cc <= 0)
-               return(0);
-       if (q->c_cc <= 0)
-               return(0);
-
-       acp = cp;
-       cc++;
-       while (--cc) {
-               *cp++ = *q->c_cf++;
-               if (((int)q->c_cf & CROUND) == 0) {
-                       bp = (struct cblock *)(q->c_cf);
-                       bp--;
-                       q->c_cf = bp->c_next->c_info;
-               }
-               if (--q->c_cc <= 0)
-                       break;
-       }
-       return(cp-acp);
-}
 #endif
 
 #endif
 
-
 /*
  * Return count of contiguous characters
  * in clist starting at q->c_cf.
 /*
  * Return count of contiguous characters
  * in clist starting at q->c_cf.
@@ -190,7 +123,7 @@ register struct clist *q;
 register cc;
 int s;
 
 register cc;
 int s;
 
-       s = spl6();
+       s = spl5();
        if (q->c_cc <= 0) {
                cc = -q->c_cc;
                goto out;
        if (q->c_cc <= 0) {
                cc = -q->c_cc;
                goto out;
@@ -233,7 +166,7 @@ char *end;
 int rem;
 register s;
 
 int rem;
 register s;
 
-       s = spl6();
+       s = spl5();
        if (q->c_cc < 0) {
                printf("neg q flush\n");
                goto out;
        if (q->c_cc < 0) {
                printf("neg q flush\n");
                goto out;
@@ -291,7 +224,7 @@ register struct clist *p;
        register char *cp;
        register s;
 
        register char *cp;
        register s;
 
-       s = spl6();
+       s = spl5();
        if ((cp = p->c_cl) == NULL || p->c_cc < 0 ) {
                if ((bp = cfreelist) == NULL) {
                        splx(s);
        if ((cp = p->c_cl) == NULL || p->c_cc < 0 ) {
                if ((bp = cfreelist) == NULL) {
                        splx(s);
@@ -340,7 +273,7 @@ register int cc;
        acc = cc;
 
 
        acc = cc;
 
 
-       s = spl6();
+       s = spl5();
        if ((cq = q->c_cl) == NULL || q->c_cc < 0) {
                if ((bp = cfreelist) == NULL) 
                        goto out;
        if ((cq = q->c_cl) == NULL || q->c_cc < 0) {
                if ((bp = cfreelist) == NULL) 
                        goto out;
@@ -371,63 +304,6 @@ out:
        return(cc);
 }
 
        return(cc);
 }
 
-char *
-wb_to_q(cp, cc, q)
-register char *cp;
-register struct clist *q;
-register cc;
-{
-char *f;
-register s;
-
-       s = spl6();
-       while (cc > cfreecount) {
-               cwaiting = 1;
-               sleep(&cwaiting, TTOPRI);
-       }
-       if (q->c_cc==0) {
-               b_to_q(cp, cc, q);
-               f = q->c_cf;
-       } else {
-               (void) putc(*cp++, q);
-               f = q->c_cl;
-               f--;
-               b_to_q(cp, --cc, q);
-       }
-       splx(s);
-       return(f);
-}
-
-#ifdef UCBIPC
-char *
-nb_to_q(cp, cc, q)
-register char *cp;
-register struct clist *q;
-register cc;
-{
-char *f;
-register s;
-
-       s = spl6();
-       if (cc > cfreecount) {
-               f = NULL;
-               goto out;
-       }
-       if (q->c_cc==0) {
-               b_to_q(cp, cc, q);
-               f = q->c_cf;
-       } else {
-               (void) putc(*cp++, q);
-               f = q->c_cl;
-               f--;
-               b_to_q(cp, --cc, q);
-       }
-out:
-       splx(s);
-       return(f);
-}
-#endif
-
 /*
  * Given a non-NULL pointter into the list (like c_cf which
  * always points to a real character if non-NULL) return the pointer
 /*
  * Given a non-NULL pointter into the list (like c_cf which
  * always points to a real character if non-NULL) return the pointer
@@ -460,7 +336,7 @@ register struct clist *p;
        register int c, s;
        struct cblock *obp;
 
        register int c, s;
        struct cblock *obp;
 
-       s = spl6();
+       s = spl5();
        if (p->c_cc <= 0)
                c = -1;
        else {
        if (p->c_cc <= 0)
                c = -1;
        else {
@@ -506,34 +382,11 @@ struct clist *from, *to;
                (void) putc(c, to);
 }
 
                (void) putc(c, to);
 }
 
-/*
- * Initialize clist by freeing all character blocks, then count
- * number of character devices. (Once-only routine)
- */
-cinit()
-{
-       register int ccp;
-       register struct cblock *cp;
-       register struct cdevsw *cdp;
-
-       ccp = (int)cfree;
-       ccp = (ccp+CROUND) & ~CROUND;
-       for(cp=(struct cblock *)ccp; cp < &cfree[NCLIST-1]; cp++) {
-               cp->c_next = cfreelist;
-               cfreelist = cp;
-               cfreecount += CBSIZE;
-       }
-       ccp = 0;
-       for(cdp = cdevsw; cdp->d_open; cdp++)
-               ccp++;
-       nchrdev = ccp;
-}
-
-
 /*
  * integer (2-byte) get/put
  * using clists
  */
 /*
  * integer (2-byte) get/put
  * using clists
  */
+#ifdef unneeded
 getw(p)
 register struct clist *p;
 {
 getw(p)
 register struct clist *p;
 {
@@ -544,26 +397,15 @@ register struct clist *p;
        s = getc(p);
        return(s | (getc(p)<<8));
 }
        s = getc(p);
        return(s | (getc(p)<<8));
 }
-
-#if HAVTR > 0
-trgetw(p)
-register struct clist *p;
-{
-       register int w;
-
-       if (p->c_cc <=1)
-               return(-1);
-       w = trgetc(p);
-       return(w | (trgetc(p)<<8));
-}
 #endif
 
 #endif
 
+#if 0
 putw(c, p)
 register struct clist *p;
 {
        register s;
 
 putw(c, p)
 register struct clist *p;
 {
        register s;
 
-       s = spl6();
+       s = spl5();
        if (cfreelist==NULL) {
                splx(s);
                return(-1);
        if (cfreelist==NULL) {
                splx(s);
                return(-1);
@@ -573,3 +415,4 @@ register struct clist *p;
        splx(s);
        return(0);
 }
        splx(s);
        return(0);
 }
+#endif