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