Re: [announce 7/7] fbsplash - documentation

From: Arnd Bergmann
Date: Wed Mar 09 2005 - 10:55:24 EST


On Middeweken 09 MÃrz 2005 03:05, Michal Januszewski wrote:
> On Wed, Mar 09, 2005 at 01:17:11AM +0100, Arnd Bergmann wrote:
> change_console()
> complete_change_console()
> switch_screen() == redraw_screen()
> con_switch() == fbcon_switch()
>
> From inside fbcon_switch(), we need to call the splash helper to get a
> new picture for the theme 'bar' which is used on tty2. The splash helper
> does an ioctl and we're back in the kernel.. with the console semaphore
> already held.

Ok, I now saw that you call call_usermodehelper with wait==1. Why is that
necessary? If you don't wait there, you don't need any hacks around the
console semaphore, because the helper will simply wait for change_console
to finish.

> What are the alternatives to the ioctl? A relatively clean way of
> feeding the data back to the kernel would be using sysfs. However, to
> make it sane we would have to export the various components of struct
> vc_splash in /sys/class/tty/tty<x> (otherwise, we would probabky have
> to pass aggreaget data types through a sysfs entry -- something that is
> IMO much worse than an ioctl). That however could be a little
> problematic -- tty_class is currently defined as a class_simple.
> To add entries other than the standard 'dev' we would have to define a
> completely new class, right? That sounds like a rather intrusive
> change..

Right. I don't think that sysfs is the right interface for this problem.
For a short moment I had the idea that you could write an escape sequence
to the tty device, but that would race against the regular output.
An ioctl on the tty device is probably the best you can do here, but
if that's not possible, creating a misc device in order to do ioctl on it
is a rather ugly hack.

Arnd <><
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/