This patch add sysfs support for vc char devices. Note, Andrew Morton has reported some very strange oopses with this patch, that I can not reproduce at all. If anyone else also has problems with this patch, please let me know. --- drivers/char/vc_screen.c | 10 ++++++++++ drivers/char/vt.c | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff -puN drivers/char/vc_screen.c~sysfs-class-10-vc drivers/char/vc_screen.c --- 25/drivers/char/vc_screen.c~sysfs-class-10-vc 2004-01-19 22:27:32.000000000 -0800 +++ 25-akpm/drivers/char/vc_screen.c 2004-01-19 22:27:32.000000000 -0800 @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -469,6 +470,8 @@ static struct file_operations vcs_fops = .open = vcs_open, }; +static struct class_simple *vc_class; + void vcs_make_devfs(struct tty_struct *tty) { devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 1), @@ -477,19 +480,26 @@ void vcs_make_devfs(struct tty_struct *t devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 129), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/a%u", tty->index + 1); + class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, tty->index + 1), NULL, "vcs%u", tty->index + 1); + class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, tty->index + 129), NULL, "vcsa%u", tty->index + 1); } void vcs_remove_devfs(struct tty_struct *tty) { devfs_remove("vcc/%u", tty->index + 1); devfs_remove("vcc/a%u", tty->index + 1); + class_simple_device_remove(MKDEV(VCS_MAJOR, tty->index + 1)); + class_simple_device_remove(MKDEV(VCS_MAJOR, tty->index + 129)); } int __init vcs_init(void) { if (register_chrdev(VCS_MAJOR, "vcs", &vcs_fops)) panic("unable to get major %d for vcs device", VCS_MAJOR); + vc_class = class_simple_create(THIS_MODULE, "vc"); devfs_mk_cdev(MKDEV(VCS_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/0"); devfs_mk_cdev(MKDEV(VCS_MAJOR, 128), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/a0"); + class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, 0), NULL, "vcs"); + class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, 128), NULL, "vcsa"); return 0; } diff -puN drivers/char/vt.c~sysfs-class-10-vc drivers/char/vt.c --- 25/drivers/char/vt.c~sysfs-class-10-vc 2004-01-19 22:27:32.000000000 -0800 +++ 25-akpm/drivers/char/vt.c 2004-01-19 22:27:32.000000000 -0800 @@ -2544,6 +2544,8 @@ static struct tty_operations con_ops = { int __init vty_init(void) { + vcs_init(); + console_driver = alloc_tty_driver(MAX_NR_CONSOLES); if (!console_driver) panic("Couldn't allocate console driver\n"); @@ -2571,7 +2573,6 @@ int __init vty_init(void) #ifdef CONFIG_FRAMEBUFFER_CONSOLE fb_console_init(); #endif - vcs_init(); return 0; } _