Messages in this thread Patch in this message | | | From | Andy Shevchenko <> | Subject | [PATCH v4 5/6] console: Introduce ->exit() callback | Date | Thu, 30 Jan 2020 17:25:57 +0200 |
| |
Some consoles might require special operations on unregistering. For instance, serial console, when registered in the kernel, keeps power on for entire time, until it gets unregistered. Example of use:
->setup(console): pm_runtime_get(...);
->exit(console): pm_runtime_put(...);
For such cases to have a balance we would provide ->exit() callback.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- v4: Don't rely on CON_ENABLED at all (Sergey, Petr), update commit message (Petr) include/linux/console.h | 1 + kernel/printk/printk.c | 4 ++++ 2 files changed, 5 insertions(+)
diff --git a/include/linux/console.h b/include/linux/console.h index f33016b3a401..54759ad0c36b 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -148,6 +148,7 @@ struct console { struct tty_driver *(*device)(struct console *, int *); void (*unblank)(void); int (*setup)(struct console *, char *); + void (*exit)(struct console *); int (*match)(struct console *, char *name, int idx, char *options); short flags; short index; diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 932345e6cd71..0117d4d92a8e 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2850,6 +2850,10 @@ int unregister_console(struct console *console) console->flags &= ~CON_ENABLED; console_unlock(); console_sysfs_notify(); + + if (!res && console->exit) + console->exit(console); + return res; } EXPORT_SYMBOL(unregister_console); -- 2.24.1
| |