Deleted Added
full compact
1/*
2 * Copyright (c) 1988 University of Utah.
3 * Copyright (c) 1991 The Regents of the University of California.
4 * All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Systems Programming Group of the University of Utah Computer
8 * Science Department.

--- 22 unchanged lines hidden (view full) ---

31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * from: @(#)cons.c 7.2 (Berkeley) 5/9/91
39 * $Id: cons.c,v 1.5 1993/11/07 17:41:32 wollman Exp $
40 */
41
42
43#include "sys/param.h"
44#include "sys/proc.h"
45#include "sys/user.h"
46#include "sys/systm.h"
47#include "sys/buf.h"

--- 20 unchanged lines hidden (view full) ---

68 { 0 },
69};
70/* end XXX */
71
72struct tty *constty = 0; /* virtual console output device */
73struct consdev *cn_tab; /* physical console device info */
74struct tty *cn_tty; /* XXX: console tty struct for tprintf */
75
76void
77cninit()
78{
79 register struct consdev *cp;
80
81 /*
82 * Collect information about all possible consoles
83 * and find the one with highest priority
84 */

--- 10 unchanged lines hidden (view full) ---

95 return;
96 /*
97 * Turn on console
98 */
99 cn_tty = cp->cn_tp;
100 (*cp->cn_init)(cp);
101}
102
103int
104cnopen(dev, flag, mode, p)
105 dev_t dev;
106 int flag, mode;
107 struct proc *p;
108{
109 if (cn_tab == NULL)
110 return (0);
111 dev = cn_tab->cn_dev;
112 return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
113}
114
115int
116cnclose(dev, flag, mode, p)
117 dev_t dev;
118 int flag, mode;
119 struct proc *p;
120{
121 if (cn_tab == NULL)
122 return (0);
123 dev = cn_tab->cn_dev;
124 return ((*cdevsw[major(dev)].d_close)(dev, flag, mode, p));
125}
126
127int
128cnread(dev, uio, flag)
129 dev_t dev;
130 struct uio *uio;
131 int flag;
132{
133 if (cn_tab == NULL)
134 return (0);
135 dev = cn_tab->cn_dev;
136 return ((*cdevsw[major(dev)].d_read)(dev, uio, flag));
137}
138
139int
140cnwrite(dev, uio, flag)
141 dev_t dev;
142 struct uio *uio;
143 int flag;
144{
145 if (cn_tab == NULL)
146 return (0);
147 if (constty) /* 16 Aug 92*/
148 dev = constty->t_dev;
149 else
150 dev = cn_tab->cn_dev;
151 return ((*cdevsw[major(dev)].d_write)(dev, uio, flag));
152}
153
154int
155cnioctl(dev, cmd, data, flag, p)
156 dev_t dev;
157 int cmd;
158 caddr_t data;
159 int flag;
160 struct proc *p;
161{
162 int error;
163
164 if (cn_tab == NULL)
165 return (0);
166 /*
167 * Superuser can always use this to wrest control of console

--- 6 unchanged lines hidden (view full) ---

174 constty = NULL;
175 return (0);
176 }
177 dev = cn_tab->cn_dev;
178 return ((*cdevsw[major(dev)].d_ioctl)(dev, cmd, data, flag, p));
179}
180
181/*ARGSUSED*/
182int
183cnselect(dev, rw, p)
184 dev_t dev;
185 int rw;
186 struct proc *p;
187{
188 if (cn_tab == NULL)
189 return (1);
190 return (ttselect(cn_tab->cn_dev, rw, p));
191}
192
193int
194cngetc()
195{
196 if (cn_tab == NULL)
197 return (0);
198 return ((*cn_tab->cn_getc)(cn_tab->cn_dev));
199}
200
201void
202cnputc(c)
203 register int c;
204{
205 if (cn_tab == NULL)
206 return;
207 if (c) {
208 (*cn_tab->cn_putc)(cn_tab->cn_dev, c);
209 if (c == '\n')

--- 13 unchanged lines hidden ---