lp and LP_CONSOLE

Tim Waugh
2001-08-09T23:46:18Z

Here is a patch to prevent lp from being pinned in memory when
CONFIG_LP_CONSOLE is enabled.

Tim.
*/

2001-08-09 Tim Waugh <twaugh@redhat.com>

* drivers/char/lp.c: Don't pin module down in memory if console
code is enabled; use unregister_console instead.

--- linux/drivers/char/lp.c.con Fri Aug 10 00:23:17 2001
+++ linux/drivers/char/lp.c Fri Aug 10 00:43:56 2001
@@ -147,6 +147,10 @@

static unsigned int lp_count = 0;

+#ifdef CONFIG_LP_CONSOLE
+static struct parport *console_registered; // initially NULL
+#endif /* CONFIG_LP_CONSOLE */
+
#undef LP_DEBUG

/* --- low-level port access ----------------------------------- */
@@ -674,8 +678,8 @@
#ifdef CONFIG_LP_CONSOLE
if (!nr) {
if (port->modes & PARPORT_MODE_SAFEININT) {
- MOD_INC_USE_COUNT;
register_console (&lpcons);
+ console_registered = port;
printk (KERN_INFO "lp%d: console ready\n", CONSOLE_LP);
} else
printk (KERN_ERR "lp%d: cannot run console on %s\n",
@@ -720,6 +724,12 @@
static void lp_detach (struct parport *port)
{
/* Write this some day. */
+#ifdef CONFIG_LP_CONSOLE
+ if (console_registered == port) {
+ unregister_console (&lpcons);
+ console_registered = NULL;
+ }
+#endif /* CONFIG_LP_CONSOLE */
}

static struct parport_driver lp_driver = {