1*5618Sroot /* tty_tty.c 4.7 82/01/24 */ 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 205576Swnj if (u.u_ttyp == NULL) { 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 315576Swnj if (u.u_ttyp == NULL) { 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 425576Swnj if (u.u_ttyp == NULL) { 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) 51*5618Sroot dev_t dev; 52*5618Sroot int cmd; 53*5618Sroot caddr_t addr; 54*5618Sroot int flag; 5535Sbill { 5635Sbill 575390Swnj if (cmd == TIOCNOTTY) { 585390Swnj u.u_ttyp = 0; 595390Swnj u.u_ttyd = 0; 605390Swnj u.u_procp->p_pgrp = 0; 61*5618Sroot u.u_procp->p_flags &= ~SDETACH; 625390Swnj return; 635390Swnj } 645576Swnj if (u.u_ttyp == NULL) { 652305Swnj u.u_error = ENXIO; 662305Swnj return; 672305Swnj } 6835Sbill (*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag); 6935Sbill } 704487Swnj 714487Swnj syselect(dev, flag) 724487Swnj { 734487Swnj 745576Swnj if (u.u_ttyp == NULL) { 754487Swnj u.u_error = ENXIO; 765390Swnj return (0); 774487Swnj } 785390Swnj return ((*cdevsw[major(u.u_ttyd)].d_select)(dev, flag)); 794487Swnj } 80