summaryrefslogtreecommitdiffstats
path: root/sys/dev/cninit.c
diff options
context:
space:
mode:
authormickey <mickey@openbsd.org>1998-06-17 14:58:34 +0000
committermickey <mickey@openbsd.org>1998-06-17 14:58:34 +0000
commit434a7b0f8eaa2166fca64cdf5838c3760ff20300 (patch)
treec66bf9fbb2701238aecc0a08eb384b2d825c1cc1 /sys/dev/cninit.c
parentthere is no such thing as APM_NOIDLE any more (diff)
downloadwireguard-openbsd-434a7b0f8eaa2166fca64cdf5838c3760ff20300.tar.xz
wireguard-openbsd-434a7b0f8eaa2166fca64cdf5838c3760ff20300.zip
import cnset() from libsa
Diffstat (limited to 'sys/dev/cninit.c')
-rw-r--r--sys/dev/cninit.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/sys/dev/cninit.c b/sys/dev/cninit.c
index a64dfa4cb8b..4a8cd2055cb 100644
--- a/sys/dev/cninit.c
+++ b/sys/dev/cninit.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cninit.c,v 1.3 1996/04/18 04:05:40 mickey Exp $ */
+/* $OpenBSD: cninit.c,v 1.4 1998/06/17 14:58:35 mickey Exp $ */
/* $NetBSD: cninit.c,v 1.2 1995/04/11 22:08:10 pk Exp $ */
/*
@@ -85,3 +85,30 @@ cninit()
*/
(*cp->cn_init)(cp);
}
+
+int
+cnset(dev)
+ dev_t dev;
+{
+ struct consdev *cp;
+
+ /*
+ * Look for the specified console device and use it.
+ */
+ for (cp = constab; cp->cn_probe; cp++) {
+ if (major(cp->cn_dev) == major(dev)) {
+ /* short-circuit noop */
+ if (cp == cn_tab && cp->cn_dev == dev)
+ return (0);
+ if (cp->cn_pri > CN_DEAD) {
+ cn_tab = cp;
+ cp->cn_dev = dev;
+ /* Turn it on. */
+ (cp->cn_init)(cp);
+ return (0);
+ }
+ break;
+ }
+ }
+ return (1);
+}