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

1.1     ! root        1: /* ttycntl.c - ttycntl */
        !             2: 
        !             3: #include <conf.h>
        !             4: #include <kernel.h>
        !             5: #include <tty.h>
        !             6: #include <io.h>
        !             7: #include <slu.h>
        !             8: 
        !             9: /*------------------------------------------------------------------------
        !            10:  *  ttycntl  -  control a tty device by setting modes
        !            11:  *------------------------------------------------------------------------
        !            12:  */
        !            13: ttycntl(devptr, func)
        !            14: struct devsw   *devptr;
        !            15: int func;
        !            16: {
        !            17:        register struct tty *ttyp;
        !            18:        char    ch;
        !            19:        PStype  ps;
        !            20: 
        !            21:        ttyp = &tty[devptr->dvminor];
        !            22:        switch ( func ) {
        !            23:        case TCSETBRK:
        !            24:                ttyp->ioaddr->ctstat |= SLUTBREAK;
        !            25:                break;
        !            26:        case TCRSTBRK:
        !            27:                ttyp->ioaddr->ctstat &= ~SLUTBREAK;
        !            28:                break;
        !            29:        case TCNEXTC:
        !            30:                disable(ps);
        !            31:                wait(ttyp->isem);
        !            32:                ch = ttyp->ibuff[ttyp->itail];
        !            33:                restore(ps);
        !            34:                signal(ttyp->isem);
        !            35:                return(ch);
        !            36:        case TCMODER:
        !            37:                ttyp->imode = IMRAW;
        !            38:                break;
        !            39:        case TCMODEC:
        !            40:                ttyp->imode = IMCOOKED;
        !            41:                break;
        !            42:        case TCMODEK:
        !            43:                ttyp->imode = IMCBREAK;
        !            44:                break;
        !            45:        case TCECHO:
        !            46:                ttyp->iecho = TRUE;
        !            47:                break;
        !            48:        case TCNOECHO:
        !            49:                ttyp->iecho = FALSE;
        !            50:                break;
        !            51:        case TCICHARS:
        !            52:                return(scount(ttyp->isem));
        !            53:        case TCINT:
        !            54:                ttyp->iintr = TRUE;
        !            55:                ttyp->iintpid = getpid();
        !            56:                break;
        !            57:        case TCNOINT:
        !            58:                ttyp->iintr = FALSE;
        !            59:                break;
        !            60:        default:
        !            61:                return(SYSERR);
        !            62:        }
        !            63:        return(OK);
        !            64: }

unix.superglobalmegacorp.com

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