public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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;

      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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox