-/* 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));
}