Annotation of sys/dev/cninit.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: cninit.c,v 1.6 2003/06/02 23:28:01 millert Exp $ */
2: /* $NetBSD: cninit.c,v 1.2 1995/04/11 22:08:10 pk Exp $ */
3:
4: /*
5: * Copyright (c) 1988 University of Utah.
6: * Copyright (c) 1990, 1993
7: * The Regents of the University of California. All rights reserved.
8: *
9: * This code is derived from software contributed to Berkeley by
10: * the Systems Programming Group of the University of Utah Computer
11: * Science Department.
12: *
13: * Redistribution and use in source and binary forms, with or without
14: * modification, are permitted provided that the following conditions
15: * are met:
16: * 1. Redistributions of source code must retain the above copyright
17: * notice, this list of conditions and the following disclaimer.
18: * 2. Redistributions in binary form must reproduce the above copyright
19: * notice, this list of conditions and the following disclaimer in the
20: * documentation and/or other materials provided with the distribution.
21: * 3. Neither the name of the University nor the names of its contributors
22: * may be used to endorse or promote products derived from this software
23: * without specific prior written permission.
24: *
25: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35: * SUCH DAMAGE.
36: *
37: * from: Utah $Hdr: cons.c 1.7 92/01/21$
38: *
39: * @(#)cons.c 8.2 (Berkeley) 1/12/94
40: */
41:
42: #include <sys/param.h>
43: #include <sys/systm.h>
44: #include <sys/proc.h>
45: #include <sys/user.h>
46: #include <sys/buf.h>
47: #include <sys/ioctl.h>
48: #include <sys/tty.h>
49: #include <sys/file.h>
50: #include <sys/conf.h>
51: #include <sys/vnode.h>
52:
53: #include <dev/cons.h>
54:
55: void
56: cninit()
57: {
58: struct consdev *cp;
59:
60: /*
61: * Collect information about all possible consoles
62: * and find the one with highest priority
63: */
64: for (cp = constab; cp->cn_probe; cp++) {
65: (*cp->cn_probe)(cp);
66: if (cp->cn_pri > CN_DEAD &&
67: (cn_tab == NULL || cp->cn_pri > cn_tab->cn_pri))
68: cn_tab = cp;
69: }
70: /*
71: * No console, we can handle it
72: */
73: if ((cp = cn_tab) == NULL)
74: return;
75: /*
76: * Turn on console
77: */
78: (*cp->cn_init)(cp);
79: }
80:
81: int
82: cnset(dev)
83: dev_t dev;
84: {
85: struct consdev *cp;
86:
87: /*
88: * Look for the specified console device and use it.
89: */
90: for (cp = constab; cp->cn_probe; cp++) {
91: if (major(cp->cn_dev) == major(dev)) {
92: /* short-circuit noop */
93: if (cp == cn_tab && cp->cn_dev == dev)
94: return (0);
95: if (cp->cn_pri > CN_DEAD) {
96: cn_tab = cp;
97: cp->cn_dev = dev;
98: /* Turn it on. */
99: (cp->cn_init)(cp);
100: return (0);
101: }
102: break;
103: }
104: }
105: return (1);
106: }
CVSweb