printk: nbcon: Add detailed doc for write_atomic()
BugLink: https://bugs.launchpad.net/bugs/2060704 The write_atomic() callback has special requirements and is allowed to use special helper functions. Provide detailed documentation of the callback so that a developer has a chance of implementing it correctly. Signed-off-by: John Ogness <john.ogness@linutronix.de> Reviewed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Kevin Becker <kevin.becker@canonical.com>
This commit is contained in:
committed by
Kevin Becker
parent
5da0d44e43
commit
d4aaab3e41
+27
-4
@@ -285,7 +285,7 @@ struct nbcon_write_context {
|
||||
/**
|
||||
* struct console - The console descriptor structure
|
||||
* @name: The name of the console driver
|
||||
* @write: Write callback to output messages (Optional)
|
||||
* @write: Legacy write callback to output messages (Optional)
|
||||
* @read: Read callback for console input (Optional)
|
||||
* @device: The underlying TTY device driver (Optional)
|
||||
* @unblank: Callback to unblank the console (Optional)
|
||||
@@ -302,7 +302,6 @@ struct nbcon_write_context {
|
||||
* @data: Driver private data
|
||||
* @node: hlist node for the console list
|
||||
*
|
||||
* @write_atomic: Write callback for atomic context
|
||||
* @nbcon_state: State for nbcon consoles
|
||||
* @nbcon_seq: Sequence number of the next record for nbcon to print
|
||||
* @pbufs: Pointer to nbcon private buffer
|
||||
@@ -327,8 +326,32 @@ struct console {
|
||||
struct hlist_node node;
|
||||
|
||||
/* nbcon console specific members */
|
||||
void (*write_atomic)(struct console *con,
|
||||
struct nbcon_write_context *wctxt);
|
||||
|
||||
/**
|
||||
* @write_atomic:
|
||||
*
|
||||
* NBCON callback to write out text in any context.
|
||||
*
|
||||
* This callback is called with the console already acquired. The
|
||||
* callback can use nbcon_can_proceed() at any time to verify that
|
||||
* it is still the owner of the console. In the case that it has
|
||||
* lost ownership, it is no longer allowed to go forward. In this
|
||||
* case it must back out immediately and carefully. The buffer
|
||||
* content is also no longer trusted since it no longer belongs to
|
||||
* the context.
|
||||
*
|
||||
* If the callback needs to perform actions where ownership is not
|
||||
* allowed to be taken over, nbcon_enter_unsafe() and
|
||||
* nbcon_exit_unsafe() can be used to mark such sections. These
|
||||
* functions are also points of possible ownership transfer. If
|
||||
* either function returns false, ownership has been lost.
|
||||
*
|
||||
* This callback can be called from any context (including NMI).
|
||||
* Therefore it must avoid usage of any locking and instead rely
|
||||
* on the console ownership for synchronization.
|
||||
*/
|
||||
void (*write_atomic)(struct console *con, struct nbcon_write_context *wctxt);
|
||||
|
||||
atomic_t __private nbcon_state;
|
||||
atomic_long_t __private nbcon_seq;
|
||||
struct printk_buffers *pbufs;
|
||||
|
||||
Reference in New Issue
Block a user