Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a336c93 authored by Manuel Schölling's avatar Manuel Schölling Committed by Greg Kroah-Hartman
Browse files

console: Make persistent scrollback a boot parameter



The impact of the persistent scrollback feature on the code size is
rather small, so the config option is removed. The feature stays
disabled by default and can be enabled by using the boot command line
parameter 'vgacon.scrollback_persistent=1' or by setting
VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT=y.

Signed-off-by: default avatarManuel Schölling <manuel.schoelling@gmx.de>
Suggested-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent aabd31c4
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -47,14 +47,16 @@ config VGACON_SOFT_SCROLLBACK_SIZE
	  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)
+12 −13
Original line number Diff line number Diff line
@@ -174,11 +174,11 @@ struct vgacon_scrollback_info {
};

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)
{
@@ -213,20 +213,19 @@ static void vgacon_scrollback_init(int vc_num)

static void vgacon_scrollback_switch(int vc_num)
{
#ifndef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
	if (!scrollback_persistent)
		vc_num = 0;
#endif

	if (!vgacon_scrollbacks[vc_num].data) {
		vgacon_scrollback_init(vc_num);
	} else {
#ifdef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
		if (scrollback_persistent) {
			vgacon_scrollback_cur = &vgacon_scrollbacks[vc_num];
#else
		} else {
			size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024;

			vgacon_scrollback_reset(vc_num, size);
#endif
		}
	}
}