123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include <linux/kernel.h>
- #include <linux/init.h>
- #include <linux/console.h>
- #include "chan_user.h"
- /* ----------------------------------------------------------------------------- */
- /* trivial console driver -- simply dump everything to stderr */
- /*
- * Don't register by default -- as this registers very early in the
- * boot process it becomes the default console.
- *
- * Initialized at init time.
- */
- static int use_stderr_console = 0;
- static void stderr_console_write(struct console *console, const char *string,
- unsigned len)
- {
- generic_write(2 /* stderr */, string, len, NULL);
- }
- static struct console stderr_console = {
- .name = "stderr",
- .write = stderr_console_write,
- .flags = CON_PRINTBUFFER,
- };
- static int __init stderr_console_init(void)
- {
- if (use_stderr_console)
- register_console(&stderr_console);
- return 0;
- }
- console_initcall(stderr_console_init);
- static int stderr_setup(char *str)
- {
- if (!str)
- return 0;
- use_stderr_console = simple_strtoul(str,&str,0);
- return 1;
- }
- __setup("stderr=", stderr_setup);
- /* The previous behavior of not unregistering led to /dev/console being
- * impossible to open. My FC5 filesystem started having init die, and the
- * system panicing because of this. Unregistering causes the real
- * console to become the default console, and /dev/console can then be
- * opened. Making this an initcall makes this happen late enough that
- * there is no added value in dumping everything to stderr, and the
- * normal console is good enough to show you all available output.
- */
- static int __init unregister_stderr(void)
- {
- unregister_console(&stderr_console);
- return 0;
- }
- __initcall(unregister_stderr);
|