* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)tty_tty.c 7.5 (Berkeley) %G%
* Indirect driver for controlling tty.
#define cttyvp(p) ((p)->p_flag&SCTTY ? (p)->p_session->s_ttyvp : NULL)
struct vnode
*ttyvp
= cttyvp(u
.u_procp
);
if (error
= VOP_ACCESS(ttyvp
,
(flag
&FREAD
? VREAD
: 0) | (flag
&FWRITE
? VWRITE
: 0), u
.u_cred
))
return (VOP_OPEN(ttyvp
, flag
, NOCRED
));
struct vnode
*ttyvp
= cttyvp(u
.u_procp
);
return (VOP_READ(ttyvp
, uio
, &dummyoff
, flag
, NOCRED
));
struct vnode
*ttyvp
= cttyvp(u
.u_procp
);
return (VOP_WRITE(ttyvp
, uio
, &dummyoff
, flag
, NOCRED
));
syioctl(dev
, cmd
, addr
, flag
)
struct vnode
*ttyvp
= cttyvp(u
.u_procp
);
if (!SESS_LEADER(u
.u_procp
)) {
u
.u_procp
->p_flag
&= ~SCTTY
;
return (VOP_IOCTL(ttyvp
, cmd
, addr
, flag
, NOCRED
));
struct vnode
*ttyvp
= cttyvp(u
.u_procp
);
return (VOP_SELECT(ttyvp
, flag
, NOCRED
));