]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
printk: nbcon: Relocate nbcon_atomic_emit_one()
authorJohn Ogness <john.ogness@linutronix.de>
Wed, 4 Sep 2024 12:05:26 +0000 (14:11 +0206)
committerPetr Mladek <pmladek@suse.com>
Wed, 4 Sep 2024 13:56:32 +0000 (15:56 +0200)
Move nbcon_atomic_emit_one() so that it can be used by
nbcon_kthread_func() in a follow-up commit.

Signed-off-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20240904120536.115780-8-john.ogness@linutronix.de
Signed-off-by: Petr Mladek <pmladek@suse.com>
kernel/printk/nbcon.c

index 388322c743497060a6392377cdf4bd02f83dc31f..57a0e9b542fed2bc92c93a898149f0147ad1b9b9 100644 (file)
@@ -1042,6 +1042,45 @@ update_con:
        return nbcon_context_exit_unsafe(ctxt);
 }
 
+/*
+ * nbcon_atomic_emit_one - Print one record for an nbcon console using the
+ *                             write_atomic() callback
+ * @wctxt:     An initialized write context struct to use for this context
+ *
+ * Return:     True, when a record has been printed and there are still
+ *             pending records. The caller might want to continue flushing.
+ *
+ *             False, when there is no pending record, or when the console
+ *             context cannot be acquired, or the ownership has been lost.
+ *             The caller should give up. Either the job is done, cannot be
+ *             done, or will be handled by the owning context.
+ *
+ * This is an internal helper to handle the locking of the console before
+ * calling nbcon_emit_next_record().
+ */
+static bool nbcon_atomic_emit_one(struct nbcon_write_context *wctxt)
+{
+       struct nbcon_context *ctxt = &ACCESS_PRIVATE(wctxt, ctxt);
+
+       if (!nbcon_context_try_acquire(ctxt))
+               return false;
+
+       /*
+        * nbcon_emit_next_record() returns false when the console was
+        * handed over or taken over. In both cases the context is no
+        * longer valid.
+        *
+        * The higher priority printing context takes over responsibility
+        * to print the pending records.
+        */
+       if (!nbcon_emit_next_record(wctxt, true))
+               return false;
+
+       nbcon_context_release(ctxt);
+
+       return ctxt->backlog;
+}
+
 /**
  * nbcon_kthread_should_wakeup - Check whether a printer thread should wakeup
  * @con:       Console to operate on
@@ -1319,45 +1358,6 @@ enum nbcon_prio nbcon_get_default_prio(void)
        return NBCON_PRIO_NORMAL;
 }
 
-/*
- * nbcon_atomic_emit_one - Print one record for an nbcon console using the
- *                             write_atomic() callback
- * @wctxt:     An initialized write context struct to use for this context
- *
- * Return:     True, when a record has been printed and there are still
- *             pending records. The caller might want to continue flushing.
- *
- *             False, when there is no pending record, or when the console
- *             context cannot be acquired, or the ownership has been lost.
- *             The caller should give up. Either the job is done, cannot be
- *             done, or will be handled by the owning context.
- *
- * This is an internal helper to handle the locking of the console before
- * calling nbcon_emit_next_record().
- */
-static bool nbcon_atomic_emit_one(struct nbcon_write_context *wctxt)
-{
-       struct nbcon_context *ctxt = &ACCESS_PRIVATE(wctxt, ctxt);
-
-       if (!nbcon_context_try_acquire(ctxt))
-               return false;
-
-       /*
-        * nbcon_emit_next_record() returns false when the console was
-        * handed over or taken over. In both cases the context is no
-        * longer valid.
-        *
-        * The higher priority printing context takes over responsibility
-        * to print the pending records.
-        */
-       if (!nbcon_emit_next_record(wctxt, true))
-               return false;
-
-       nbcon_context_release(ctxt);
-
-       return ctxt->backlog;
-}
-
 /**
  * nbcon_legacy_emit_next_record - Print one record for an nbcon console
  *                                     in legacy contexts