Messages in this thread Patch in this message | | | From | Andy Shevchenko <> | Subject | [PATCH v5 7/7] console: Introduce ->exit() callback | Date | Mon, 3 Feb 2020 15:31:30 +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> --- v5: Return error code from ->exit() (Sergey)
include/linux/console.h | 1 + kernel/printk/printk.c | 3 +++ 2 files changed, 4 insertions(+)
diff --git a/include/linux/console.h b/include/linux/console.h index f33016b3a401..7a140f4e5d0c 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 *); + int (*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 abd9b92ae0e3..43b5cb88c607 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2860,6 +2860,9 @@ int unregister_console(struct console *console) console_unlock(); console_sysfs_notify(); + if (console->exit) + res = console->exit(console); + return res; out_disable_unlock: -- 2.24.1
| |