Fri Jul 17 02:16:57 2020 UTC ()
Tweak a bit and add some comments.

Same object code is generated.


(uwe)
diff -r1.12 -r1.13 src/sys/dev/cninit.c

cvs diff -r1.12 -r1.13 src/sys/dev/cninit.c (expand / switch to unified diff)

--- src/sys/dev/cninit.c 2020/07/17 02:05:44 1.12
+++ src/sys/dev/cninit.c 2020/07/17 02:16:57 1.13
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: cninit.c,v 1.12 2020/07/17 02:05:44 uwe Exp $ */ 1/* $NetBSD: cninit.c,v 1.13 2020/07/17 02:16:57 uwe Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1988 University of Utah. 4 * Copyright (c) 1988 University of Utah.
5 * Copyright (c) 1990, 1993 5 * Copyright (c) 1990, 1993
6 * The Regents of the University of California. All rights reserved. 6 * The Regents of the University of California. All rights reserved.
7 * 7 *
8 * This code is derived from software contributed to Berkeley by 8 * This code is derived from software contributed to Berkeley by
9 * the Systems Programming Group of the University of Utah Computer 9 * the Systems Programming Group of the University of Utah Computer
10 * Science Department. 10 * Science Department.
11 * 11 *
12 * Redistribution and use in source and binary forms, with or without 12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions 13 * modification, are permitted provided that the following conditions
14 * are met: 14 * are met:
@@ -29,69 +29,74 @@ @@ -29,69 +29,74 @@
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE. 34 * SUCH DAMAGE.
35 * 35 *
36 * from: Utah $Hdr: cons.c 1.7 92/01/21$ 36 * from: Utah $Hdr: cons.c 1.7 92/01/21$
37 * 37 *
38 * @(#)cons.c 8.2 (Berkeley) 1/12/94 38 * @(#)cons.c 8.2 (Berkeley) 1/12/94
39 */ 39 */
40 40
41#include <sys/cdefs.h> 41#include <sys/cdefs.h>
42__KERNEL_RCSID(0, "$NetBSD: cninit.c,v 1.12 2020/07/17 02:05:44 uwe Exp $"); 42__KERNEL_RCSID(0, "$NetBSD: cninit.c,v 1.13 2020/07/17 02:16:57 uwe Exp $");
43 43
44#include <sys/param.h> 44#include <sys/param.h>
45#include <sys/proc.h> 45#include <sys/proc.h>
46#include <sys/systm.h> 46#include <sys/systm.h>
47#include <sys/buf.h> 47#include <sys/buf.h>
48#include <sys/ioctl.h> 48#include <sys/ioctl.h>
49#include <sys/tty.h> 49#include <sys/tty.h>
50#include <sys/file.h> 50#include <sys/file.h>
51#include <sys/conf.h> 51#include <sys/conf.h>
52#include <sys/vnode.h> 52#include <sys/vnode.h>
53 53
54#include <dev/cons.h> 54#include <dev/cons.h>
55 55
56void 56void
57cninit(void) 57cninit(void)
58{ 58{
59 struct consdev *cp; 
60 struct consdev *bestMatch; 59 struct consdev *bestMatch;
 60 struct consdev *cp;
 61
 62 cn_tab = NULL;
61 63
62 bestMatch = cn_tab = NULL; 
63 /* 64 /*
64 * Collect information about all possible consoles 65 * Collect information about all possible consoles
65 * and find the one with highest priority 66 * and find the one with highest priority
66 */ 67 */
 68 bestMatch = NULL;
67 for (cp = constab; cp->cn_probe; cp++) { 69 for (cp = constab; cp->cn_probe; cp++) {
68 (*cp->cn_probe)(cp); 70 (*cp->cn_probe)(cp);
69 if (cp->cn_pri > CN_DEAD && 71 if (cp->cn_pri > CN_DEAD &&
70 (bestMatch == NULL || cp->cn_pri > bestMatch->cn_pri)) { 72 (bestMatch == NULL || cp->cn_pri > bestMatch->cn_pri)) {
71 bestMatch = cp; 73 bestMatch = cp;
72 } 74 }
73 } 75 }
74 76
75 /* 77 /*
76 * No console, we can handle it 78 * No console, we can handle it
77 */ 79 */
78 if (bestMatch == NULL) 80 if (bestMatch == NULL)
79 return; 81 return;
80 82
81 /* 83 /*
82 * Turn on console 84 * Turn on console
83 */ 85 */
84 { 86 {
 87 /* XXX: can this ever be non-NULL? */
85 struct consdev *old_cn_tab = cn_tab; 88 struct consdev *old_cn_tab = cn_tab;
86 89
 90 /* cn_init may set cn_tab to self */
87 (*bestMatch->cn_init)(bestMatch); 91 (*bestMatch->cn_init)(bestMatch);
 92
88 /* 93 /*
89 * Now let everyone know we have an active console they can 94 * Now let everyone know we have an active console they can
90 * use for diagnostics. If we use cn_tab in the search loop 95 * use for diagnostics. If we use cn_tab in the search loop
91 * then interrupts from the ethernet at boot may cause system 96 * then interrupts from the ethernet at boot may cause system
92 * hang. 97 * hang.
93 */ 98 */
94 if (cn_tab == old_cn_tab) 99 if (cn_tab == old_cn_tab) /* if cn_init didn't, set it */
95 cn_tab = bestMatch; 100 cn_tab = bestMatch;
96 } 101 }
97} 102}