linux/kernel/printk
Petr Mladek 394aa576c0 printk_ringbuffer: Create a helper function to decide whether more space is needed
The decision whether some more space is needed is tricky in the printk
ring buffer code:

  1. The given lpos values might overflow. A subtraction must be used
     instead of a simple "lower than" check.

  2. Another CPU might reuse the space in the mean time. It can be
     detected when the subtraction is bigger than DATA_SIZE(data_ring).

  3. There is exactly enough space when the result of the subtraction
     is zero. But more space is needed when the result is exactly
     DATA_SIZE(data_ring).

Add a helper function to make sure that the check is done correctly
in all situations. Also it helps to make the code consistent and
better documented.

Suggested-by: John Ogness <john.ogness@linutronix.de>
Link: https://lore.kernel.org/r/87tsz7iea2.fsf@jogness.linutronix.de
Reviewed-by: John Ogness <john.ogness@linutronix.de>
Link: https://patch.msgid.link/20251107194720.1231457-3-pmladek@suse.com
[pmladek@suse.com: Updated wording as suggested by John]
Signed-off-by: Petr Mladek <pmladek@suse.com>
2025-11-10 13:09:43 +01:00
..
.kunitconfig printk: ringbuffer: Add KUnit test 2025-06-18 16:42:42 +02:00
braille.c printk: Replace strncmp() with str_has_prefix() 2019-08-16 09:54:08 +02:00
braille.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
console_cmdline.h printk: Add match_devname_and_update_preferred_console() 2024-07-04 15:41:44 +02:00
index.c kernel/printk/index.c: fix memory leak with using debugfs_lookup() 2023-02-03 10:42:02 +01:00
internal.h panic/printk: replace other_cpu_in_panic() with panic_on_other_cpu() 2025-09-13 17:32:52 -07:00
Makefile printk: ringbuffer: Add KUnit test 2025-06-18 16:42:42 +02:00
nbcon.c panic: use angle-bracket include for panic.h 2025-09-13 17:32:54 -07:00
printk.c panic: use angle-bracket include for panic.h 2025-09-13 17:32:54 -07:00
printk_ringbuffer.c printk_ringbuffer: Create a helper function to decide whether more space is needed 2025-11-10 13:09:43 +01:00
printk_ringbuffer.h printk: nbcon: Init @nbcon_seq to highest possible 2024-09-04 15:56:32 +02:00
printk_ringbuffer_kunit_test.c printk: kunit: support offstack cpumask 2025-09-10 17:18:37 +02:00
printk_safe.c printk: Defer legacy printing when holding printk_cpu_sync 2024-12-16 13:26:31 +01:00
sysctl.c treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00