no more SDETACH crap
[unix-history] / usr / src / sys / kern / tty_tty.c
/* tty_tty.c 4.6 82/01/19 */
/*
* 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/tty.h"
#include "../h/proc.h"
/*ARGSUSED*/
syopen(dev, flag)
{
if (u.u_ttyp == NULL) {
u.u_error = ENXIO;
return;
}
(*cdevsw[major(u.u_ttyd)].d_open)(u.u_ttyd, flag);
}
/*ARGSUSED*/
syread(dev)
{
if (u.u_ttyp == NULL) {
u.u_error = ENXIO;
return;
}
(*cdevsw[major(u.u_ttyd)].d_read)(u.u_ttyd);
}
/*ARGSUSED*/
sywrite(dev)
{
if (u.u_ttyp == NULL) {
u.u_error = ENXIO;
return;
}
(*cdevsw[major(u.u_ttyd)].d_write)(u.u_ttyd);
}
/*ARGSUSED*/
syioctl(dev, cmd, addr, flag)
caddr_t addr;
{
if (cmd == TIOCNOTTY) {
u.u_ttyp = 0;
u.u_ttyd = 0;
u.u_procp->p_pgrp = 0;
return;
}
if (u.u_ttyp == NULL) {
u.u_error = ENXIO;
return;
}
(*cdevsw[major(u.u_ttyd)].d_ioctl)(u.u_ttyd, cmd, addr, flag);
}
syselect(dev, flag)
{
if (u.u_ttyp == NULL) {
u.u_error = ENXIO;
return (0);
}
return ((*cdevsw[major(u.u_ttyd)].d_select)(dev, flag));
}