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

1.1       root        1: /* ttycntl.c - ttycntl */
                      2: 
                      3: #include <conf.h>
                      4: #include <kernel.h>
                      5: #include <tty.h>
                      6: #include <io.h>
1.1.1.2 ! root        7: 
        !             8: /* set up macros for appropriate SLU as spec. by SLUCHIP:
        !             9:    if SLUCHIP==6850, #include slu6850.h, #define TTYCNTL ttycntl6850, etc.
        !            10:    if SLUCHIP==7201, #include slu7201.h, #define TTYCNTL ttycntl7201, etc.
        !            11:    if SLUCHIP undef.,#include slu.h, #define TTYCNTL ttycntl  (orig. case)
        !            12:    similarly sluaccess.h, other TTY fns */
        !            13: #include <sluinclude.h>
1.1       root       14: 
                     15: /*------------------------------------------------------------------------
                     16:  *  ttycntl  -  control a tty device by setting modes
                     17:  *------------------------------------------------------------------------
                     18:  */
1.1.1.2 ! root       19: TTYCNTL(devptr, func, addr)
        !            20:        struct  devsw   *devptr;
        !            21:        int func;
        !            22:        char *addr;
1.1       root       23: {
                     24:        register struct tty *ttyp;
1.1.1.2 ! root       25:        register struct csr *cptr;
1.1       root       26:        char    ch;
1.1.1.2 ! root       27: 
        !            28: #ifdef DEBUG
        !            29:        dotrace("ttycntl", &devptr, 3);
        !            30: #endif
1.1       root       31: 
                     32:        ttyp = &tty[devptr->dvminor];
1.1.1.2 ! root       33: 
        !            34:        cptr = (struct csr *)devptr->dvcsr;
1.1       root       35:        switch ( func ) {
                     36:        case TCSETBRK:
1.1.1.2 ! root       37:                slusetbrk(cptr);
1.1       root       38:                break;
                     39:        case TCRSTBRK:
1.1.1.2 ! root       40:                slurstbrk(cptr);
1.1       root       41:                break;
                     42:        case TCNEXTC:
1.1.1.2 ! root       43:                disable();
1.1       root       44:                wait(ttyp->isem);
                     45:                ch = ttyp->ibuff[ttyp->itail];
1.1.1.2 ! root       46:                restore();
1.1       root       47:                signal(ttyp->isem);
                     48:                return(ch);
                     49:        case TCMODER:
                     50:                ttyp->imode = IMRAW;
                     51:                break;
                     52:        case TCMODEC:
                     53:                ttyp->imode = IMCOOKED;
                     54:                break;
                     55:        case TCMODEK:
                     56:                ttyp->imode = IMCBREAK;
                     57:                break;
                     58:        case TCECHO:
                     59:                ttyp->iecho = TRUE;
                     60:                break;
                     61:        case TCNOECHO:
                     62:                ttyp->iecho = FALSE;
                     63:                break;
                     64:        case TCICHARS:
                     65:                return(scount(ttyp->isem));
                     66:        default:
                     67:                return(SYSERR);
                     68:        }
                     69:        return(OK);
                     70: }

unix.superglobalmegacorp.com

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