xref: /csrg-svn/sys/kern/tty_tty.c (revision 5390)
1*5390Swnj /*	tty_tty.c	4.5	82/01/13	*/
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"
1535Sbill 
1635Sbill /*ARGSUSED*/
1735Sbill syopen(dev, flag)
1835Sbill {
1935Sbill 
202305Swnj 	if(u.u_ttyp == NULL || (u.u_procp->p_flag&SDETACH)) {
2135Sbill 		u.u_error = ENXIO;
2235Sbill 		return;
2335Sbill 	}
2435Sbill 	(*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag);
2535Sbill }
2635Sbill 
2735Sbill /*ARGSUSED*/
2835Sbill syread(dev)
2935Sbill {
3035Sbill 
31*5390Swnj 	if (u.u_ttyp == NULL || (u.u_procp->p_flag&SDETACH)) {
322305Swnj 		u.u_error = ENXIO;
332305Swnj 		return;
342305Swnj 	}
3535Sbill 	(*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd);
3635Sbill }
3735Sbill 
3835Sbill /*ARGSUSED*/
3935Sbill sywrite(dev)
4035Sbill {
4135Sbill 
42*5390Swnj 	if (u.u_ttyp == NULL || (u.u_procp->p_flag&SDETACH)) {
432305Swnj 		u.u_error = ENXIO;
442305Swnj 		return;
452305Swnj 	}
4635Sbill 	(*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd);
4735Sbill }
4835Sbill 
4935Sbill /*ARGSUSED*/
5035Sbill syioctl(dev, cmd, addr, flag)
5135Sbill caddr_t addr;
5235Sbill {
5335Sbill 
54*5390Swnj 	if (cmd == TIOCNOTTY) {
55*5390Swnj 		u.u_ttyp = 0;
56*5390Swnj 		u.u_ttyd = 0;
57*5390Swnj 		u.u_procp->p_pgrp = 0;
58*5390Swnj 		return;
59*5390Swnj 	}
60*5390Swnj 	if (u.u_ttyp == NULL || (u.u_procp->p_flag&SDETACH)) {
612305Swnj 		u.u_error = ENXIO;
622305Swnj 		return;
632305Swnj 	}
6435Sbill 	(*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag);
6535Sbill }
664487Swnj 
674487Swnj syselect(dev, flag)
684487Swnj {
694487Swnj 
70*5390Swnj 	if (u.u_ttyp == NULL || (u.u_procp->p_flag&SDETACH)) {
714487Swnj 		u.u_error = ENXIO;
72*5390Swnj 		return (0);
734487Swnj 	}
74*5390Swnj 	return ((*cdevsw[major(u.u_ttyd)].d_select)(dev, flag));
754487Swnj }
76