X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/75a44ba568e363957a91e949e89a03b421cab728..4a404244ad5a6e8679d302ed44ecc61cac172725:/usr/src/sys/kern/tty_subr.c diff --git a/usr/src/sys/kern/tty_subr.c b/usr/src/sys/kern/tty_subr.c index 865072079a..78ce16f4b2 100644 --- a/usr/src/sys/kern/tty_subr.c +++ b/usr/src/sys/kern/tty_subr.c @@ -1,21 +1,12 @@ -/* tty_subr.c 4.5 %G% */ +/* tty_subr.c 4.15 82/03/14 */ #include "../h/param.h" #include "../h/systm.h" #include "../h/conf.h" #include "../h/buf.h" #include "../h/tty.h" -#include "tr.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; /* @@ -27,7 +18,7 @@ register struct clist *p; register struct cblock *bp; register int c, s; - s = spl6(); + s = spl5(); if (p->c_cc <= 0) { c = -1; p->c_cc = 0; @@ -63,31 +54,7 @@ register struct clist *p; 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 notdef /* * copy clist to buffer. * return number of bytes moved. @@ -102,7 +69,7 @@ register char *cp; 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; @@ -143,43 +110,8 @@ register char *cp; 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 - /* * Return count of contiguous characters * in clist starting at q->c_cf. @@ -191,7 +123,7 @@ register struct clist *q; register cc; int s; - s = spl6(); + s = spl5(); if (q->c_cc <= 0) { cc = -q->c_cc; goto out; @@ -234,7 +166,7 @@ char *end; int rem; register s; - s = spl6(); + s = spl5(); if (q->c_cc < 0) { printf("neg q flush\n"); goto out; @@ -292,7 +224,7 @@ register struct clist *p; 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); @@ -341,7 +273,7 @@ register int cc; acc = cc; - s = spl6(); + s = spl5(); if ((cq = q->c_cl) == NULL || q->c_cc < 0) { if ((bp = cfreelist) == NULL) goto out; @@ -372,63 +304,6 @@ out: 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 @@ -461,7 +336,7 @@ register struct clist *p; register int c, s; struct cblock *obp; - s = spl6(); + s = spl5(); if (p->c_cc <= 0) c = -1; else { @@ -507,30 +382,8 @@ struct clist *from, *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; -} - - +#include "dmc.h" +#if NDMC > 0 /* * integer (2-byte) get/put * using clists @@ -546,25 +399,12 @@ register struct clist *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 - putw(c, p) register struct clist *p; { register s; - s = spl6(); + s = spl5(); if (cfreelist==NULL) { splx(s); return(-1); @@ -574,3 +414,4 @@ register struct clist *p; splx(s); return(0); } +#endif