summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authorarchie <archie@FreeBSD.org>2000-09-20 18:13:36 +0000
committerarchie <archie@FreeBSD.org>2000-09-20 18:13:36 +0000
commit006298df30acb5db4b4b361fadeb567d2381fcb7 (patch)
tree940803d97898d6d9df5add9ddac9bef16dad0532 /sys/boot
parentc719655bd553f2290cf4bc54e966cd87a4ecfedf (diff)
downloadFreeBSD-src-006298df30acb5db4b4b361fadeb567d2381fcb7.zip
FreeBSD-src-006298df30acb5db4b4b361fadeb567d2381fcb7.tar.gz
Add support for the "nullconsole" console type, for systems with
neither a video console nor a serial port. Use it if the RB_MUTE flag is set. Submitted by: Doug Ambrisko <ambrisko@whistle.com> Reviewed by: jhb
Diffstat (limited to 'sys/boot')
-rw-r--r--sys/boot/i386/libi386/Makefile3
-rw-r--r--sys/boot/i386/libi386/bootinfo.c5
-rw-r--r--sys/boot/i386/libi386/bootinfo32.c5
-rw-r--r--sys/boot/i386/libi386/bootinfo64.c5
-rw-r--r--sys/boot/i386/libi386/nullconsole.c88
-rw-r--r--sys/boot/i386/loader/conf.c2
-rw-r--r--sys/boot/i386/loader/main.c2
7 files changed, 109 insertions, 1 deletions
diff --git a/sys/boot/i386/libi386/Makefile b/sys/boot/i386/libi386/Makefile
index b200aed..2c684ed 100644
--- a/sys/boot/i386/libi386/Makefile
+++ b/sys/boot/i386/libi386/Makefile
@@ -8,7 +8,8 @@ INTERNALSTATICLIB= true
SRCS= aout_freebsd.c biosdisk.c biosmem.c biospnp.c biospci.c \
bootinfo.c comconsole.c devicename.c elf_freebsd.c gatea20.c \
- i386_copy.c i386_module.c time.c vidconsole.c pxe.c pxetramp.s
+ i386_copy.c i386_module.c nullconsole.c pxe.c pxetramp.s \
+ time.c vidconsole.c
CFLAGS+= -I${.CURDIR}/../../common -I${.CURDIR}/../btx/lib \
-I${.CURDIR}/../../.. -I.
diff --git a/sys/boot/i386/libi386/bootinfo.c b/sys/boot/i386/libi386/bootinfo.c
index 63be83f..05d28d1 100644
--- a/sys/boot/i386/libi386/bootinfo.c
+++ b/sys/boot/i386/libi386/bootinfo.c
@@ -88,6 +88,9 @@ bi_getboothowto(char *kargs)
case 'd':
howto |= RB_KDB;
break;
+ case 'm':
+ howto |= RB_MUTE;
+ break;
case 'g':
howto |= RB_GDB;
break;
@@ -116,6 +119,8 @@ bi_getboothowto(char *kargs)
howto |= howto_names[i].mask;
if (!strcmp(getenv("console"), "comconsole"))
howto |= RB_SERIAL;
+ if (!strcmp(getenv("console"), "nullconsole"))
+ howto |= RB_MUTE;
return(howto);
}
diff --git a/sys/boot/i386/libi386/bootinfo32.c b/sys/boot/i386/libi386/bootinfo32.c
index 63be83f..05d28d1 100644
--- a/sys/boot/i386/libi386/bootinfo32.c
+++ b/sys/boot/i386/libi386/bootinfo32.c
@@ -88,6 +88,9 @@ bi_getboothowto(char *kargs)
case 'd':
howto |= RB_KDB;
break;
+ case 'm':
+ howto |= RB_MUTE;
+ break;
case 'g':
howto |= RB_GDB;
break;
@@ -116,6 +119,8 @@ bi_getboothowto(char *kargs)
howto |= howto_names[i].mask;
if (!strcmp(getenv("console"), "comconsole"))
howto |= RB_SERIAL;
+ if (!strcmp(getenv("console"), "nullconsole"))
+ howto |= RB_MUTE;
return(howto);
}
diff --git a/sys/boot/i386/libi386/bootinfo64.c b/sys/boot/i386/libi386/bootinfo64.c
index 63be83f..05d28d1 100644
--- a/sys/boot/i386/libi386/bootinfo64.c
+++ b/sys/boot/i386/libi386/bootinfo64.c
@@ -88,6 +88,9 @@ bi_getboothowto(char *kargs)
case 'd':
howto |= RB_KDB;
break;
+ case 'm':
+ howto |= RB_MUTE;
+ break;
case 'g':
howto |= RB_GDB;
break;
@@ -116,6 +119,8 @@ bi_getboothowto(char *kargs)
howto |= howto_names[i].mask;
if (!strcmp(getenv("console"), "comconsole"))
howto |= RB_SERIAL;
+ if (!strcmp(getenv("console"), "nullconsole"))
+ howto |= RB_MUTE;
return(howto);
}
diff --git a/sys/boot/i386/libi386/nullconsole.c b/sys/boot/i386/libi386/nullconsole.c
new file mode 100644
index 0000000..70eb2c5
--- /dev/null
+++ b/sys/boot/i386/libi386/nullconsole.c
@@ -0,0 +1,88 @@
+/*
+ * nullconsole.c
+ *
+ * Copyright (c) 2000 Whistle Communications, Inc.
+ * All rights reserved.
+ *
+ * Subject to the following obligations and disclaimer of warranty, use and
+ * redistribution of this software, in source or object code forms, with or
+ * without modifications are expressly permitted by Whistle Communications;
+ * provided, however, that:
+ * 1. Any and all reproductions of the source or object code must include the
+ * copyright notice above and the following disclaimer of warranties; and
+ * 2. No rights are granted, in any manner or form, to use Whistle
+ * Communications, Inc. trademarks, including the mark "WHISTLE
+ * COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+ * such appears in the above copyright notice or in the software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+ * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+ * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+ * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+ * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+ * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+ * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+ * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+ * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * Author: Doug Ambrisko <ambrisko@whistle.com>
+ *
+ * $FreeBSD$
+ */
+
+#include <stand.h>
+#include <bootstrap.h>
+
+static void nullc_probe(struct console *cp);
+static int nullc_init(int arg);
+static void nullc_putchar(int c);
+static int nullc_getchar(void);
+static int nullc_ischar(void);
+
+struct console nullconsole = {
+ "nullconsole",
+ "null port",
+ 0,
+ nullc_probe,
+ nullc_init,
+ nullc_putchar,
+ nullc_getchar,
+ nullc_ischar
+};
+
+static void
+nullc_probe(struct console *cp)
+{
+ cp->c_flags |= (C_PRESENTIN | C_PRESENTOUT);
+}
+
+static int
+nullc_init(int arg)
+{
+ return(0);
+}
+
+static void
+nullc_putchar(int c)
+{
+}
+
+static int
+nullc_getchar(void)
+{
+ return(-1);
+}
+
+static int
+nullc_ischar(void)
+{
+ return(0);
+}
diff --git a/sys/boot/i386/loader/conf.c b/sys/boot/i386/loader/conf.c
index b9398a7..bef1ed9 100644
--- a/sys/boot/i386/loader/conf.c
+++ b/sys/boot/i386/loader/conf.c
@@ -90,10 +90,12 @@ struct file_format *file_formats[] = {
*/
extern struct console vidconsole;
extern struct console comconsole;
+extern struct console nullconsole;
struct console *consoles[] = {
&vidconsole,
&comconsole,
+ &nullconsole,
NULL
};
diff --git a/sys/boot/i386/loader/main.c b/sys/boot/i386/loader/main.c
index f675475..b943edb 100644
--- a/sys/boot/i386/loader/main.c
+++ b/sys/boot/i386/loader/main.c
@@ -99,6 +99,8 @@ main(void)
*/
if (initial_howto & RB_SERIAL)
setenv("console", "comconsole", 1);
+ if (initial_howto & RB_MUTE)
+ setenv("console", "nullconsole", 1);
cons_probe();
/*
OpenPOWER on IntegriCloud