From: Aivils S. <ai...@us...> - 2003-09-12 08:33:25
|
Update of /cvsroot/linuxconsole/ruby/ruby-2.6/drivers/video/console In directory sc8-pr-cvs1:/tmp/cvs-serv26271/ruby-2.6/drivers/video/console Modified Files: dummycon.c vgacon.c Log Message: multiple current tty, variable count of VC per VT, fix screenbuf kmalloced, dummy console configurable, fix dead code. Index: dummycon.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/ruby-2.6/drivers/video/console/dummycon.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- dummycon.c 11 Aug 2003 16:26:46 -0000 1.1 +++ dummycon.c 12 Sep 2003 08:33:21 -0000 1.2 @@ -28,13 +28,18 @@ #define DUMMY_COLUMNS 80 #define DUMMY_ROWS 25 #endif +#define MAX_DUMB_CONSOLES 16 +static unsigned long dumb_num = 0; +static unsigned long dumb_vc_count = 0; static struct vt_struct dummy_vt; static struct vc_data default_mode; static const char *dummycon_startup(struct vt_struct *vt, int init) { - vt->default_mode = &default_mode; + vt->default_mode = &default_mode; + vt->default_mode->vc_cols = DUMMY_COLUMNS; + vt->default_mode->vc_rows = DUMMY_ROWS; return "dummy device"; } @@ -83,13 +88,56 @@ const char *display_desc = NULL; memset(&dummy_vt, 0, sizeof(struct vt_struct)); - dummy_vt.kmalloced = 0; - dummy_vt.vt_sw = &dummy_con; - display_desc = vt_map_display(&dummy_vt, 1); + dummy_vt.vt_kmalloced = 0; + dummy_vt.vt_sw = &dummy_con; + display_desc = vt_map_display(&dummy_vt, 1, MAX_NR_USER_CONSOLES); if (!display_desc) return -ENODEV; - printk("Console: mono %s %dx%d\n", display_desc, + printk("Console: mono %s %dx%d vc:%d-%d\n", display_desc, dummy_vt.default_mode->vc_cols, - dummy_vt.default_mode->vc_rows); + dummy_vt.default_mode->vc_rows, + dummy_vt.first_vc, dummy_vt.first_vc + dummy_vt.vc_count - 1); return 0; } +int dumbcon_add(void) +{ + const char *display_desc = NULL; + struct vt_struct *vt; + + vt = (struct vt_struct *) kmalloc(sizeof(struct vt_struct),GFP_KERNEL); + + if (!vt) return -ENOMEM; + + memset(vt, 0, sizeof(struct vt_struct)); + vt->vt_kmalloced = 1; + vt->vt_sw = &dummy_con; + display_desc = vt_map_display(vt, 1, MAX_NR_USER_CONSOLES); + if (!display_desc) { + kfree(vt); + return -ENODEV; + } + printk("Console: mono %s %dx%d vc:%d-%d\n", display_desc, + vt->default_mode->vc_cols, + vt->default_mode->vc_rows, + vt->first_vc, vt->first_vc + vt->vc_count - 1); + return 0; +} + +int __init dumb_console_init(void) +{ + unsigned long i; + for(i=0; i<dumb_num && i<MAX_DUMB_CONSOLES; i++ ) { + if(dumbcon_add()) return 1; + } + return 0; +} + +int __init dumbcon_setup(char *options) +{ + if (!options || !*options) + return 0; + dumb_num = simple_strtoul(options, 0, 0); + return 0; +} + +__setup("dumbcon=", dumbcon_setup); Index: vgacon.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/ruby-2.6/drivers/video/console/vgacon.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- vgacon.c 11 Aug 2003 16:26:46 -0000 1.1 +++ vgacon.c 12 Sep 2003 08:33:21 -0000 1.2 @@ -830,7 +830,7 @@ int i; /* attribute controller */ - for (i = 0; i < MAX_NR_USER_CONSOLES; i++) { + for (i = 0; i < vga_vt.vc_count; i++) { struct vc_data *vc = vga_vt.vc_cons[i]; if (vc) @@ -898,11 +898,13 @@ outb_p(vde, vga_video_port_val); spin_unlock_irq(&vga_lock); - for (i = 0; i < MAX_NR_USER_CONSOLES; i++) { + for (i = 0; i < vc->display_fg->vc_count; i++) { struct vc_data *tmp = vc->display_fg->vc_cons[i]; - if (tmp) + if (tmp) { + tmp->vc_font.height = fontheight; vc_resize(tmp, 0, rows); /* Adjust console size */ + } } return 0; } @@ -1089,14 +1091,15 @@ const char *display_desc = NULL; memset(&vga_vt, 0, sizeof(struct vt_struct)); - vga_vt.kmalloced = 0; + vga_vt.vt_kmalloced = 0; vga_vt.vt_sw = &vga_con; - display_desc = vt_map_display(&vga_vt, 1); + display_desc = vt_map_display(&vga_vt, 1, MAX_NR_USER_CONSOLES); if (!display_desc) return -ENODEV; - printk("Console: %s %s %dx%d\n", + printk("Console: %s %s %dx%d vc:%d-%d\n", vga_vt.default_mode->vc_can_do_color ? "Colour" : "Mono", display_desc, vga_vt.default_mode->vc_cols, - vga_vt.default_mode->vc_rows); + vga_vt.default_mode->vc_rows, + vga_vt.first_vc, vga_vt.first_vc + vga_vt.vc_count - 1); return 0; } |