diff options
author | Kay Sievers <kay@vrfy.org> | 2012-05-02 20:29:41 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-05-07 20:03:27 -0400 |
commit | e11fea92e13fb91c50bacca799a6131c81929986 (patch) | |
tree | 3b9204f4eccc6b488b843d6d00e65dc982c50160 /include | |
parent | 7ff9554bb578ba02166071d2d487b7fc7d860d62 (diff) |
kmsg: export printk records to the /dev/kmsg interface
Support for multiple concurrent readers of /dev/kmsg, with read(),
seek(), poll() support. Output of message sequence numbers, to allow
userspace log consumers to reliably reconnect and reconstruct their
state at any given time. After open("/dev/kmsg"), read() always
returns *all* buffered records. If only future messages should be
read, SEEK_END can be used. In case records get overwritten while
/dev/kmsg is held open, or records get faster overwritten than they
are read, the next read() will return -EPIPE and the current reading
position gets updated to the next available record. The passed
sequence numbers allow the log consumer to calculate the amount of
lost messages.
[root@mop ~]# cat /dev/kmsg
5,0,0;Linux version 3.4.0-rc1+ (kay@mop) (gcc version 4.7.0 20120315 ...
6,159,423091;ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
7,160,424069;pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored)
SUBSYSTEM=acpi
DEVICE=+acpi:PNP0A03:00
6,339,5140900;NET: Registered protocol family 10
30,340,5690716;udevd[80]: starting version 181
6,341,6081421;FDC 0 is a S82078B
6,345,6154686;microcode: CPU0 sig=0x623, pf=0x0, revision=0x0
7,346,6156968;sr 1:0:0:0: Attached scsi CD-ROM sr0
SUBSYSTEM=scsi
DEVICE=+scsi:1:0:0:0
6,347,6289375;microcode: CPU1 sig=0x623, pf=0x0, revision=0x0
Cc: Karel Zak <kzak@redhat.com>
Tested-by: William Douglas <william.douglas@intel.com>
Signed-off-by: Kay Sievers <kay@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/printk.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/printk.h b/include/linux/printk.h index aa3c66da105c..1bec2f7a2d42 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h | |||
@@ -300,6 +300,8 @@ extern void dump_stack(void) __cold; | |||
300 | no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) | 300 | no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) |
301 | #endif | 301 | #endif |
302 | 302 | ||
303 | extern const struct file_operations kmsg_fops; | ||
304 | |||
303 | enum { | 305 | enum { |
304 | DUMP_PREFIX_NONE, | 306 | DUMP_PREFIX_NONE, |
305 | DUMP_PREFIX_ADDRESS, | 307 | DUMP_PREFIX_ADDRESS, |