Skip to contentSkip to conversation

lp and LP_CONSOLE

PATCH Tim Waugh 1 participant 1 message Aug 9, 2001 Char and misc drivers

lore
Share & tools
lore

Tim Waugh

author
#0 lore raw

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

Tim.
*/

2001-08-09 Tim Waugh <[email protected]>

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

drivers/char/lp.c renamed from drivers/char/lp.c.con +11 -1
@@ -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 = {