|
|
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.