1 /* tty_tty.c 4.7 82/01/24 */ 2 3 /* 4 * Indirect driver for controlling tty. 5 * 6 * THIS IS GARBAGE: MUST SOON BE DONE WITH struct inode * IN PROC TABLE. 7 */ 8 #include "../h/param.h" 9 #include "../h/systm.h" 10 #include "../h/conf.h" 11 #include "../h/dir.h" 12 #include "../h/user.h" 13 #include "../h/tty.h" 14 #include "../h/proc.h" 15 16 /*ARGSUSED*/ 17 syopen(dev, flag) 18 { 19 20 if (u.u_ttyp == NULL) { 21 u.u_error = ENXIO; 22 return; 23 } 24 (*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag); 25 } 26 27 /*ARGSUSED*/ 28 syread(dev) 29 { 30 31 if (u.u_ttyp == NULL) { 32 u.u_error = ENXIO; 33 return; 34 } 35 (*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd); 36 } 37 38 /*ARGSUSED*/ 39 sywrite(dev) 40 { 41 42 if (u.u_ttyp == NULL) { 43 u.u_error = ENXIO; 44 return; 45 } 46 (*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd); 47 } 48 49 /*ARGSUSED*/ 50 syioctl(dev, cmd, addr, flag) 51 dev_t dev; 52 int cmd; 53 caddr_t addr; 54 int flag; 55 { 56 57 if (cmd == TIOCNOTTY) { 58 u.u_ttyp = 0; 59 u.u_ttyd = 0; 60 u.u_procp->p_pgrp = 0; 61 u.u_procp->p_flags &= ~SDETACH; 62 return; 63 } 64 if (u.u_ttyp == NULL) { 65 u.u_error = ENXIO; 66 return; 67 } 68 (*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag); 69 } 70 71 syselect(dev, flag) 72 { 73 74 if (u.u_ttyp == NULL) { 75 u.u_error = ENXIO; 76 return (0); 77 } 78 return ((*cdevsw[major(u.u_ttyd)].d_select)(dev, flag)); 79 } 80