1/*-
2 * Copyright (c) 1982, 1986, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
--- 17 unchanged lines hidden (view full) ---
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)tty_tty.c 8.2 (Berkeley) 9/23/93
34 * $Id: tty_tty.c,v 1.16 1997/03/24 11:24:38 bde Exp $
35 */
36
37/*
38 * Indirect driver for controlling tty.
39 */
40#include <sys/param.h>
41#include <sys/conf.h>
42#include <sys/proc.h>
43#include <sys/tty.h>
44#include <sys/vnode.h>
45#include <sys/fcntl.h>
46#include <sys/kernel.h>
47#ifdef DEVFS
48#include <sys/devfsext.h>
49#endif /*DEVFS*/
50
51static d_open_t cttyopen;
52static d_read_t cttyread;
53static d_write_t cttywrite;
54static d_ioctl_t cttyioctl;
55static d_select_t cttyselect;
56
57#define CDEV_MAJOR 1
58/* Don't make static, fdesc_vnops uses this. */
59struct cdevsw ctty_cdevsw =
60 { cttyopen, nullclose, cttyread, cttywrite, /*1*/
61 cttyioctl, nullstop, nullreset, nodevtotty,/* tty */
62 cttyselect, nommap, NULL, "ctty", NULL, -1 };
63
64
65#define cttyvp(p) ((p)->p_flag & P_CONTROLT ? (p)->p_session->s_ttyvp : NULL)
66
67/*ARGSUSED*/
68static int
69cttyopen(dev, flag, mode, p)
70 dev_t dev;
--- 84 unchanged lines hidden (view full) ---
155 } else
156 return (EINVAL);
157 }
158 return (VOP_IOCTL(ttyvp, cmd, addr, flag, NOCRED, p));
159}
160
161/*ARGSUSED*/
162static int
163cttyselect(dev, flag, p)
164 dev_t dev;
165 int flag;
166 struct proc *p;
167{
168 struct vnode *ttyvp = cttyvp(p);
169
170 if (ttyvp == NULL)
171 return (1); /* try operation to get EOF/failure */
172 return (VOP_SELECT(ttyvp, flag, FREAD|FWRITE, NOCRED, p));
173}
174
175static ctty_devsw_installed = 0;
176#ifdef DEVFS
177static void *ctty_devfs_token;
178#endif
179
180static void
--- 17 unchanged lines hidden ---
2 * Copyright (c) 1982, 1986, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
--- 17 unchanged lines hidden (view full) ---
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)tty_tty.c 8.2 (Berkeley) 9/23/93
34 * $Id: tty_tty.c,v 1.16 1997/03/24 11:24:38 bde Exp $
35 */
36
37/*
38 * Indirect driver for controlling tty.
39 */
40#include <sys/param.h>
41#include <sys/conf.h>
42#include <sys/proc.h>
43#include <sys/tty.h>
44#include <sys/vnode.h>
45#include <sys/fcntl.h>
46#include <sys/kernel.h>
47#ifdef DEVFS
48#include <sys/devfsext.h>
49#endif /*DEVFS*/
50
51static d_open_t cttyopen;
52static d_read_t cttyread;
53static d_write_t cttywrite;
54static d_ioctl_t cttyioctl;
55static d_select_t cttyselect;
56
57#define CDEV_MAJOR 1
58/* Don't make static, fdesc_vnops uses this. */
59struct cdevsw ctty_cdevsw =
60 { cttyopen, nullclose, cttyread, cttywrite, /*1*/
61 cttyioctl, nullstop, nullreset, nodevtotty,/* tty */
62 cttyselect, nommap, NULL, "ctty", NULL, -1 };
63
64
65#define cttyvp(p) ((p)->p_flag & P_CONTROLT ? (p)->p_session->s_ttyvp : NULL)
66
67/*ARGSUSED*/
68static int
69cttyopen(dev, flag, mode, p)
70 dev_t dev;
--- 84 unchanged lines hidden (view full) ---
155 } else
156 return (EINVAL);
157 }
158 return (VOP_IOCTL(ttyvp, cmd, addr, flag, NOCRED, p));
159}
160
161/*ARGSUSED*/
162static int
163cttyselect(dev, flag, p)
164 dev_t dev;
165 int flag;
166 struct proc *p;
167{
168 struct vnode *ttyvp = cttyvp(p);
169
170 if (ttyvp == NULL)
171 return (1); /* try operation to get EOF/failure */
172 return (VOP_SELECT(ttyvp, flag, FREAD|FWRITE, NOCRED, p));
173}
174
175static ctty_devsw_installed = 0;
176#ifdef DEVFS
177static void *ctty_devfs_token;
178#endif
179
180static void
--- 17 unchanged lines hidden ---