From: Baptiste Malguy <baptiste@malguy.net>
To: Willy Tarreau <willy@w.ods.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] VT driver/char/console.c, kernel 2.4.22
Date: Sat, 29 Nov 2003 14:17:13 +0100 [thread overview]
Message-ID: <3FC89C59.8020304@malguy.net> (raw)
In-Reply-To: <20031129072447.GA17722@alpha.home.local>
[-- Attachment #1: Type: text/plain, Size: 2184 bytes --]
Willy Tarreau a écrit :
>On Sat, Nov 29, 2003 at 12:49:50AM +0100, Baptiste Malguy wrote:
>
>
>
>>In relation to this patch, I want to say that many many websites, FAQs,
>>... say that you must
>>have something like console="/dev/ttyX CONSOLE=/dev/ttyN" to redirect
>>the kernel and init
>>messages.
>>
>>About 'CONSOLE=', that's true because this is a environment variable
>>that /sbin/init obtains.
>>About 'console=', it's completly wrong ! 'console=' expects a driver
>>name (example: "tty",
>>"tty1", "ttyS0"), not device file name. Only the Linux source code
>>reading and a few websites
>>says the right usage of 'console='.
>>
>>
>
>If there really are FAQ reporting this, it might be simpler to make the
>kernel accept /dev/XXX than to try to fix all FAQs, and it would be more
>intuitive to people who type on lilo command line.
>
>
I guess you are right. However, all I've done (and again, essentially,
using someone else
code) is to fix of bug. Changing the way the 'console=' argument works
is more a
design stuff.
If all the console drivers' names are based on the device file name
(that is "tty" for "/dev/tty1",
ort "/dev/tty2", ...) it can be easily done by dropping "/dev/" from the
'console=' argument value, in
one C file. However, a device file name can be anything you want. So the
"/dev/" wouldn't work.
I don't know if that's the good way to do it. Maybe a more complete
work, like looking at the device file,
its major and minor and the corresponding driver, would be a better idea.
>You'd better send an "unified diff" (diff -u) which includes one level of
>kernel directory. You diff then starts like this :
>--- linux-2.4.22/drivers/char/console
>+++ linux-2.4.22-bm1/drivers/char/console
>
>
Yes, sure, I read that before and did not even do that .... I'd better
sleep more at night :)
Here it comes now.
I have tested with 'vga=normal' and 'vga=792'. That's fine for me.
However, I may have not taken in
consideration some locks required. I let interested people test for a
few days before sending to Marcello.
Thank you for your comments.
--
Baptiste Malguy - http://baptiste.malguy.net
Ingénieur en informatique libre
[-- Attachment #2: console-kmsg2.diff --]
[-- Type: text/plain, Size: 2427 bytes --]
--- linux-2.4.22/drivers/char/console.c 2002-11-29 00:53:12.000000000 +0100
+++ work/linux-2.4.22-bm1/drivers/char/console.c 2003-11-28 17:12:47.000000000 +0100
@@ -144,6 +144,7 @@
static int con_open(struct tty_struct *, struct file *);
static void vc_init(unsigned int console, unsigned int rows,
unsigned int cols, int do_clear);
+static void con_setup_vt(unsigned int currcons);
static void blank_screen(unsigned long dummy);
static void gotoxy(int currcons, int new_x, int new_y);
static void save_cur(int currcons);
@@ -2178,10 +2179,25 @@
return MKDEV(TTY_MAJOR, c->index ? c->index : fg_console + 1);
}
+int vt_console_setup(struct console *co, char *options)
+{
+ if (co == NULL)
+ return -1;
+
+ if (co->index > 0 &&
+ co->index < MAX_NR_CONSOLES) {
+ con_setup_vt(co->index - 1);
+ kmsg_redirect = co->index;
+ }
+
+ return 0;
+}
+
struct console vt_console_driver = {
name: "tty",
write: vt_console_print,
device: vt_console_device,
+ setup: vt_console_setup,
unblank: unblank_screen,
flags: CON_PRINTBUFFER,
index: -1,
@@ -2432,6 +2448,24 @@
}
/*
+ * Setup a new VT
+ */
+static void __init con_setup_vt(unsigned int currcons)
+{
+ if (vc_cons[currcons].d) return;
+
+ vc_cons[currcons].d = (struct vc_data *)
+ alloc_bootmem(sizeof(struct vc_data));
+ vt_cons[currcons] = (struct vt_struct *)
+ alloc_bootmem(sizeof(struct vt_struct));
+ visual_init(currcons, 1);
+ screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size);
+ kmalloced = 0;
+ vc_init(currcons, video_num_lines, video_num_columns,
+ currcons || !sw->con_save_screen);
+}
+
+/*
* This routine initializes console interrupts, and does nothing
* else. If you want the screen to clear, call tty_write with
* the appropriate escape-sequence.
@@ -2498,15 +2532,7 @@
* kmalloc is not running yet - we use the bootmem allocator.
*/
for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) {
- vc_cons[currcons].d = (struct vc_data *)
- alloc_bootmem(sizeof(struct vc_data));
- vt_cons[currcons] = (struct vt_struct *)
- alloc_bootmem(sizeof(struct vt_struct));
- visual_init(currcons, 1);
- screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size);
- kmalloced = 0;
- vc_init(currcons, video_num_lines, video_num_columns,
- currcons || !sw->con_save_screen);
+ con_setup_vt(currcons);
}
currcons = fg_console = 0;
master_display_fg = vc_cons[currcons].d;
prev parent reply other threads:[~2003-11-29 13:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-28 23:49 [PATCH] VT driver/char/console.c, kernel 2.4.22 Baptiste Malguy
2003-11-29 7:24 ` Willy Tarreau
2003-11-29 13:17 ` Baptiste Malguy [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3FC89C59.8020304@malguy.net \
--to=baptiste@malguy.net \
--cc=linux-kernel@vger.kernel.org \
--cc=willy@w.ods.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.