[PATCH] VT binding: Make VT binding a Kconfig option

To enable this feature, CONFIG_VT_HW_CONSOLE_BINDING must be set to 'y'.  This
feature will default to 'n' to minimize users accidentally corrupting their
virtual terminals.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Antonino A. Daplas 2006-06-26 00:27:12 -07:00 committed by Linus Torvalds
parent 6db4063c5b
commit 13ae664589
2 changed files with 44 additions and 16 deletions

View File

@ -62,6 +62,23 @@ config HW_CONSOLE
depends on VT && !S390 && !UML
default y
config VT_HW_CONSOLE_BINDING
bool "Support for binding and unbinding console drivers"
depends on HW_CONSOLE
default n
---help---
The virtual terminal is the device that interacts with the physical
terminal through console drivers. On these systems, at least one
console driver is loaded. In other configurations, additional console
drivers may be enabled, such as the framebuffer console. If more than
1 console driver is enabled, setting this to 'y' will allow you to
select the console driver that will serve as the backend for the
virtual terminals.
See <file:Documentation/console/console.txt> for more
information. For framebuffer console users, please refer to
<file:Documentation/fb/fbcon.txt>.
config SERIAL_NONSTANDARD
bool "Non-standard serial port support"
---help---

View File

@ -2691,22 +2691,6 @@ int __init vty_init(void)
static struct class *vtconsole_class;
static int con_is_graphics(const struct consw *csw, int first, int last)
{
int i, retval = 0;
for (i = first; i <= last; i++) {
struct vc_data *vc = vc_cons[i].d;
if (vc && vc->vc_mode == KD_GRAPHICS) {
retval = 1;
break;
}
}
return retval;
}
static int bind_con_driver(const struct consw *csw, int first, int last,
int deflt)
{
@ -2808,6 +2792,23 @@ static int bind_con_driver(const struct consw *csw, int first, int last,
return retval;
};
#ifdef CONFIG_VT_HW_CONSOLE_BINDING
static int con_is_graphics(const struct consw *csw, int first, int last)
{
int i, retval = 0;
for (i = first; i <= last; i++) {
struct vc_data *vc = vc_cons[i].d;
if (vc && vc->vc_mode == KD_GRAPHICS) {
retval = 1;
break;
}
}
return retval;
}
static int unbind_con_driver(const struct consw *csw, int first, int last,
int deflt)
{
@ -2984,6 +2985,16 @@ static int vt_unbind(struct con_driver *con)
err:
return 0;
}
#else
static inline int vt_bind(struct con_driver *con)
{
return 0;
}
static inline int vt_unbind(struct con_driver *con)
{
return 0;
}
#endif /* CONFIG_VT_HW_CONSOLE_BINDING */
static ssize_t store_bind(struct class_device *class_device,
const char *buf, size_t count)