X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/964bcfb1e326002ce45619586bd48de6a4e5c325..27bcf34c8933e87769861a15c27fc0629b23da4c:/usr/src/sys/kern/tty_tty.c diff --git a/usr/src/sys/kern/tty_tty.c b/usr/src/sys/kern/tty_tty.c index 06a25031cf..4a4b415477 100644 --- a/usr/src/sys/kern/tty_tty.c +++ b/usr/src/sys/kern/tty_tty.c @@ -1,57 +1,81 @@ -/* tty_tty.c 4.3 81/03/09 */ +/* tty_tty.c 4.14 82/12/05 */ /* * Indirect driver for controlling tty. + * + * THIS IS GARBAGE: MUST SOON BE DONE WITH struct inode * IN PROC TABLE. */ #include "../h/param.h" #include "../h/systm.h" #include "../h/conf.h" #include "../h/dir.h" #include "../h/user.h" +#include "../h/ioctl.h" #include "../h/tty.h" #include "../h/proc.h" +#include "../h/uio.h" /*ARGSUSED*/ syopen(dev, flag) + dev_t dev; + int flag; { - if(u.u_ttyp == NULL || (u.u_procp->p_flag&SDETACH)) { - u.u_error = ENXIO; - return; - } - (*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag); + if (u.u_ttyp == NULL) + return (ENXIO); + return ((*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag)); } /*ARGSUSED*/ -syread(dev) +syread(dev, uio) + dev_t dev; + struct uio *uio; { - if (u.u_procp->p_flag&SDETACH) { - u.u_error = ENXIO; - return; - } - (*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd); + if (u.u_ttyp == NULL) + return (ENXIO); + return ((*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd, uio)); } /*ARGSUSED*/ -sywrite(dev) +sywrite(dev, uio) + dev_t dev; + struct uio *uio; { - if (u.u_procp->p_flag&SDETACH) { - u.u_error = ENXIO; - return; - } - (*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd); + if (u.u_ttyp == NULL) + return (ENXIO); + return ((*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd, uio)); } /*ARGSUSED*/ syioctl(dev, cmd, addr, flag) -caddr_t addr; + dev_t dev; + int cmd; + caddr_t addr; + int flag; +{ + + if (cmd == TIOCNOTTY) { + u.u_ttyp = 0; + u.u_ttyd = 0; + u.u_procp->p_pgrp = 0; + return (0); + } + if (u.u_ttyp == NULL) + return (ENXIO); + return ((*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag)); +} + +/*ARGSUSED*/ +syselect(dev, flag) + dev_t dev; + int flag; { - if (u.u_procp->p_flag&SDETACH) { + if (u.u_ttyp == NULL) { u.u_error = ENXIO; - return; + return (0); } - (*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag); + return ((*cdevsw[major(u.u_ttyd)].d_select)(u.u_ttyd, flag)); }