1 /* tty_tty.c 4.10 82/08/22 */ 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 #include "../h/uio.h" 16 17 /*ARGSUSED*/ 18 syopen(dev, flag) 19 { 20 21 if (u.u_ttyp == NULL) { 22 u.u_error = ENXIO; 23 return; 24 } 25 (*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag); 26 } 27 28 /*ARGSUSED*/ 29 syread(dev, uio) 30 dev_t dev; 31 struct uio *uio; 32 { 33 34 if (u.u_ttyp == NULL) { 35 u.u_error = ENXIO; 36 return; 37 } 38 (*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd, uio); 39 } 40 41 /*ARGSUSED*/ 42 sywrite(dev, uio) 43 dev_t dev; 44 struct uio *uio; 45 { 46 47 if (u.u_ttyp == NULL) { 48 u.u_error = ENXIO; 49 return; 50 } 51 (*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd, uio); 52 } 53 54 /*ARGSUSED*/ 55 syioctl(dev, cmd, addr, flag) 56 dev_t dev; 57 int cmd; 58 caddr_t addr; 59 int flag; 60 { 61 62 if (cmd == TIOCNOTTY) { 63 u.u_ttyp = 0; 64 u.u_ttyd = 0; 65 u.u_procp->p_pgrp = 0; 66 return; 67 } 68 if (u.u_ttyp == NULL) { 69 u.u_error = ENXIO; 70 return; 71 } 72 (*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag); 73 } 74 75 syselect(dev, flag) 76 { 77 78 if (u.u_ttyp == NULL) { 79 u.u_error = ENXIO; 80 return (0); 81 } 82 return ((*cdevsw[major(u.u_ttyd)].d_select)(u.u_ttyd, flag)); 83 } 84