buffers of VGA consoles. Each 64KB will give you approximately
16 80x25 screenfuls of scrollback buffer.
-config VGACON_SOFT_SCROLLBACK_PERSISTENT
- bool "Persistent Scrollback History for each console"
+config VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT
+ bool "Persistent Scrollback History for each console by default"
depends on VGACON_SOFT_SCROLLBACK
default n
help
- Say Y here if the scrollback history should persist when switching
- between consoles. Otherwise, the scrollback history will be flushed
- each time the console is switched.
+ Say Y here if the scrollback history should persist by default when
+ switching between consoles. Otherwise, the scrollback history will be
+ flushed each time the console is switched. This feature can also be
+ enabled using the boot command line parameter
+ 'vgacon.scrollback_persistent=1'.
This feature might break your tool of choice to flush the scrollback
buffer, e.g. clear(1) will work fine but Debian's clear_console(1)
};
static struct vgacon_scrollback_info *vgacon_scrollback_cur;
-#ifdef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
static struct vgacon_scrollback_info vgacon_scrollbacks[MAX_NR_CONSOLES];
-#else
-static struct vgacon_scrollback_info vgacon_scrollbacks[1];
-#endif
+static bool scrollback_persistent = \
+ IS_ENABLED(CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT);
+module_param_named(scrollback_persistent, scrollback_persistent, bool, 0000);
+MODULE_PARM_DESC(scrollback_persistent, "Enable persistent scrollback for all vga consoles");
static void vgacon_scrollback_reset(int vc_num, size_t reset_size)
{
static void vgacon_scrollback_switch(int vc_num)
{
-#ifndef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
- vc_num = 0;
-#endif
+ if (!scrollback_persistent)
+ vc_num = 0;
if (!vgacon_scrollbacks[vc_num].data) {
vgacon_scrollback_init(vc_num);
} else {
-#ifdef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
- vgacon_scrollback_cur = &vgacon_scrollbacks[vc_num];
-#else
- size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024;
+ if (scrollback_persistent) {
+ vgacon_scrollback_cur = &vgacon_scrollbacks[vc_num];
+ } else {
+ size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024;
- vgacon_scrollback_reset(vc_num, size);
-#endif
+ vgacon_scrollback_reset(vc_num, size);
+ }
}
}