|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.