/*
* indirect driver for controlling tty.
*/
#include "sys/param.h"
#include "sys/dir.h"
#include "sys/user.h"
#include "sys/conf.h"
#include "sys/tty.h"
#include "sys/proc.h"
syopen(dev, flag)
{
if (sycheck())
(*cdevsw[major(u.u_ttyd)].d_open)(minor(u.u_ttyd), flag);
}
syread(dev)
{
if (sycheck())
(*cdevsw[major(u.u_ttyd)].d_read)(minor(u.u_ttyd));
}
sywrite(dev)
{
if (sycheck())
(*cdevsw[major(u.u_ttyd)].d_write)(minor(u.u_ttyd));
}
syioctl(dev, cmd, arg, mode)
{
if (sycheck())
(*cdevsw[major(u.u_ttyd)].d_ioctl)(minor(u.u_ttyd), cmd, arg, mode);
}
sycheck()
{
if (u.u_ttyp == NULL) {
u.u_error = ENXIO;
return(0);
}
if (u.u_ttyp->t_pgrp != u.u_procp->p_pgrp) {
u.u_error = EIO;
return(0);
}
return(1);
}