xref: /csrg-svn/sys/kern/tty_tty.c (revision 7824)
1*7824Sroot /*	tty_tty.c	4.10	82/08/22	*/
235Sbill 
335Sbill /*
43117Swnj  * Indirect driver for controlling tty.
54487Swnj  *
64487Swnj  * THIS IS GARBAGE: MUST SOON BE DONE WITH struct inode * IN PROC TABLE.
735Sbill  */
835Sbill #include "../h/param.h"
935Sbill #include "../h/systm.h"
1035Sbill #include "../h/conf.h"
1135Sbill #include "../h/dir.h"
1235Sbill #include "../h/user.h"
1335Sbill #include "../h/tty.h"
1435Sbill #include "../h/proc.h"
15*7824Sroot #include "../h/uio.h"
1635Sbill 
1735Sbill /*ARGSUSED*/
1835Sbill syopen(dev, flag)
1935Sbill {
2035Sbill 
215576Swnj 	if (u.u_ttyp == NULL) {
2235Sbill 		u.u_error = ENXIO;
2335Sbill 		return;
2435Sbill 	}
2535Sbill 	(*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag);
2635Sbill }
2735Sbill 
2835Sbill /*ARGSUSED*/
29*7824Sroot syread(dev, uio)
30*7824Sroot 	dev_t dev;
31*7824Sroot 	struct uio *uio;
3235Sbill {
3335Sbill 
345576Swnj 	if (u.u_ttyp == NULL) {
352305Swnj 		u.u_error = ENXIO;
362305Swnj 		return;
372305Swnj 	}
38*7824Sroot 	(*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd, uio);
3935Sbill }
4035Sbill 
4135Sbill /*ARGSUSED*/
42*7824Sroot sywrite(dev, uio)
43*7824Sroot 	dev_t dev;
44*7824Sroot 	struct uio *uio;
4535Sbill {
4635Sbill 
475576Swnj 	if (u.u_ttyp == NULL) {
482305Swnj 		u.u_error = ENXIO;
492305Swnj 		return;
502305Swnj 	}
51*7824Sroot 	(*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd, uio);
5235Sbill }
5335Sbill 
5435Sbill /*ARGSUSED*/
5535Sbill syioctl(dev, cmd, addr, flag)
565618Sroot 	dev_t dev;
575618Sroot 	int cmd;
585618Sroot 	caddr_t addr;
595618Sroot 	int flag;
6035Sbill {
6135Sbill 
625390Swnj 	if (cmd == TIOCNOTTY) {
635390Swnj 		u.u_ttyp = 0;
645390Swnj 		u.u_ttyd = 0;
655390Swnj 		u.u_procp->p_pgrp = 0;
665390Swnj 		return;
675390Swnj 	}
685576Swnj 	if (u.u_ttyp == NULL) {
692305Swnj 		u.u_error = ENXIO;
702305Swnj 		return;
712305Swnj 	}
7235Sbill 	(*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag);
7335Sbill }
744487Swnj 
754487Swnj syselect(dev, flag)
764487Swnj {
774487Swnj 
785576Swnj 	if (u.u_ttyp == NULL) {
794487Swnj 		u.u_error = ENXIO;
805390Swnj 		return (0);
814487Swnj 	}
826385Swnj 	return ((*cdevsw[major(u.u_ttyd)].d_select)(u.u_ttyd, flag));
834487Swnj }
84