* Copyright (c) 1982, 1986, 1991, 1993
* The Regents of the University of California. All rights reserved.
* %sccs.include.redist.c%
* @(#)tty_tty.c 8.2 (Berkeley) %G%
* Indirect driver for controlling tty.
#define cttyvp(p) ((p)->p_flag & P_CONTROLT ? (p)->p_session->s_ttyvp : NULL)
cttyopen(dev
, flag
, mode
, p
)
struct vnode
*ttyvp
= cttyvp(p
);
* Since group is tty and mode is 620 on most terminal lines
* and since sessions protect terminals from processes outside
* your session, this check is probably no longer necessary.
* Since it inhibits setuid root programs that later switch
* to another user from accessing /dev/tty, we have decided
* to delete this test. (mckusick 5/93)
error
= VOP_ACCESS(ttyvp
,
(flag
&FREAD
? VREAD
: 0) | (flag
&FWRITE
? VWRITE
: 0), p
->p_ucred
, p
);
error
= VOP_OPEN(ttyvp
, flag
, NOCRED
, p
);
register struct vnode
*ttyvp
= cttyvp(uio
->uio_procp
);
error
= VOP_READ(ttyvp
, uio
, flag
, NOCRED
);
cttywrite(dev
, uio
, flag
)
register struct vnode
*ttyvp
= cttyvp(uio
->uio_procp
);
error
= VOP_WRITE(ttyvp
, uio
, flag
, NOCRED
);
cttyioctl(dev
, cmd
, addr
, flag
, p
)
struct vnode
*ttyvp
= cttyvp(p
);
p
->p_flag
&= ~P_CONTROLT
;
return (VOP_IOCTL(ttyvp
, cmd
, addr
, flag
, NOCRED
, p
));
struct vnode
*ttyvp
= cttyvp(p
);
return (1); /* try operation to get EOF/failure */
return (VOP_SELECT(ttyvp
, flag
, FREAD
|FWRITE
, NOCRED
, p
));