Annotation of xinu/sys/.ttyoin.c, revision 1.1

1.1     ! root        1: /* ttyoin.c - ttyoin */
        !             2: 
        !             3: #include <conf.h>
        !             4: #include <kernel.h>
        !             5: #include <tty.h>
        !             6: #include <io.h>
        !             7: 
        !             8: #ifdef lsi11
        !             9: #      include <slu.h>
        !            10: #else
        !            11: #      include <necuart.h>
        !            12: #endif
        !            13: 
        !            14: /*------------------------------------------------------------------------
        !            15:  *  ttyoin  --  lower-half tty device driver for output interrupts
        !            16:  *------------------------------------------------------------------------
        !            17:  */
        !            18: INTPROC        ttyoin(ttyp, cptr)
        !            19:        struct  tty     *ttyp;
        !            20:        struct  csr     *cptr;
        !            21: {
        !            22:        int     ct;
        !            23: 
        !            24: #ifdef DEBUG
        !            25:        dotrace("ttyoin", &ttyp, 2);
        !            26: #endif
        !            27:        if (ttyp->ehead != ttyp->etail) {
        !            28:                sluputch(cptr, ttyp->ebuff[ttyp->etail++]);
        !            29:                if (ttyp->etail >= EBUFLEN)
        !            30:                        ttyp->etail = 0;
        !            31:                return;
        !            32:        }
        !            33:        if (ttyp->oheld) {                      /* honor flow control   */
        !            34:                slutdisable(cptr, ttyp);
        !            35:                return;
        !            36:        }
        !            37:        if ((ct=scount(ttyp->osem)) < OBUFLEN) {
        !            38:                sluputch(cptr, ttyp->obuff[ttyp->otail++]);
        !            39:                if (ttyp->otail >= OBUFLEN)
        !            40:                        ttyp->otail = 0;
        !            41:                if (ct > OBMINSP)
        !            42:                        signal(ttyp->osem);
        !            43:                else if ( ++(ttyp->odsend) == OBMINSP) {
        !            44:                        ttyp->odsend = 0;
        !            45:                        signaln(ttyp->osem, OBMINSP);
        !            46:                }
        !            47:        } else
        !            48:                slutdisable(cptr, ttyp);
        !            49: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.