aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/printk/Makefile
diff options
context:
space:
mode:
authorJohn Ogness <john.ogness@linutronix.de>2020-07-09 15:29:42 +0206
committerPetr Mladek <pmladek@suse.com>2020-07-10 08:48:19 +0200
commitb6cf8b3f3312e2ffe38f23c7c692eb9389277a9a (patch)
tree642deaaf81f7f747bfe5bd3b7d643bc946415f66 /kernel/printk/Makefile
parentcrash: add VMCOREINFO macro to define offset in a struct declared by typedef (diff)
downloadlinux-dev-b6cf8b3f3312e2ffe38f23c7c692eb9389277a9a.tar.xz
linux-dev-b6cf8b3f3312e2ffe38f23c7c692eb9389277a9a.zip
printk: add lockless ringbuffer
Introduce a multi-reader multi-writer lockless ringbuffer for storing the kernel log messages. Readers and writers may use their API from any context (including scheduler and NMI). This ringbuffer will make it possible to decouple printk() callers from any context, locking, or console constraints. It also makes it possible for readers to have full access to the ringbuffer contents at any time and context (for example from any panic situation). The printk_ringbuffer is made up of 3 internal ringbuffers: desc_ring: A ring of descriptors. A descriptor contains all record meta data (sequence number, timestamp, loglevel, etc.) as well as internal state information about the record and logical positions specifying where in the other ringbuffers the text and dictionary strings are located. text_data_ring: A ring of data blocks. A data block consists of an unsigned long integer (ID) that maps to a desc_ring index followed by the text string of the record. dict_data_ring: A ring of data blocks. A data block consists of an unsigned long integer (ID) that maps to a desc_ring index followed by the dictionary string of the record. The internal state information of a descriptor is the key element to allow readers and writers to locklessly synchronize access to the data. Co-developed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: John Ogness <john.ogness@linutronix.de> Reviewed-by: Petr Mladek <pmladek@suse.com> Reviewed-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Petr Mladek <pmladek@suse.com> Link: https://lore.kernel.org/r/20200709132344.760-3-john.ogness@linutronix.de
Diffstat (limited to 'kernel/printk/Makefile')
-rw-r--r--kernel/printk/Makefile1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/printk/Makefile b/kernel/printk/Makefile
index 4d052fc6bcde..eee3dc9b60a9 100644
--- a/kernel/printk/Makefile
+++ b/kernel/printk/Makefile
@@ -2,3 +2,4 @@
obj-y = printk.o
obj-$(CONFIG_PRINTK) += printk_safe.o
obj-$(CONFIG_A11Y_BRAILLE_CONSOLE) += braille.o
+obj-$(CONFIG_PRINTK) += printk_ringbuffer.o