1*6385Swnj /* tty_tty.c 4.9 82/03/31 */ 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) 515618Sroot dev_t dev; 525618Sroot int cmd; 535618Sroot caddr_t addr; 545618Sroot 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; 615390Swnj return; 625390Swnj } 635576Swnj if (u.u_ttyp == NULL) { 642305Swnj u.u_error = ENXIO; 652305Swnj return; 662305Swnj } 6735Sbill (*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag); 6835Sbill } 694487Swnj 704487Swnj syselect(dev, flag) 714487Swnj { 724487Swnj 735576Swnj if (u.u_ttyp == NULL) { 744487Swnj u.u_error = ENXIO; 755390Swnj return (0); 764487Swnj } 77*6385Swnj return ((*cdevsw[major(u.u_ttyd)].d_select)(u.u_ttyd, flag)); 784487Swnj } 79