= babeltrace2-source.text.dmesg(7)
:manpagetype: component class
:revdate: 1 September 2023


== NAME

babeltrace2-source.text.dmesg - Babeltrace 2's Linux kernel ring buffer
source component class


== DESCRIPTION

A Babeltrace~2 compcls:source.text.dmesg message iterator reads the
lines of a Linux kernel ring buffer, as printed by the man:dmesg(1)
tool, and emits corresponding event messages.

----
Linux kernel ring buffer
lines (file or standard input)
  |
  |   +----------------+
  |   | src.text.dmesg |
  '-->|                |
      |            out @--> Messages (single stream)
      +----------------+
----

include::common-see-babeltrace2-intro.txt[]

A compcls:source.text.dmesg message iterator names the events it creates
`string`. Each event contain a single payload string field named `str`
which contains the corresponding ring buffer line.

By default, a compcls:source.text.dmesg message iterator reads the lines
of the standard input stream. You can make the message iterator read the
lines of a text file instead with the param:path parameter.

By default, the message iterator tries to extract the timestamps of the
kernel ring buffer lines and use them as the created events's
timestamps. A typical man:dmesg(1) line looks like this:

----
[87166.510937] PM: Finishing wakeup.
----

The `[87166.510937]` part is the timestamp to extract. When this
information is available, the component creates a clock class which does
:not: have the Unix epoch as its origin.

You can make the message iterator not extract timestamps from lines with
the param:no-extract-timestamp parameter.

[NOTE]
====
It is possible that the output of man:dmesg(1) contains unsorted lines,
that is, their timestamps go back in time. You can see this with the
nlopt:--show-delta option of man:dmesg(1): some time differences can be
negative.

This is due to a https://lwn.net/Articles/780556/[2019 change] to the
kernel's ring buffer API.

As of this version, a compcls:source.text.dmesg message iterator
requires that the input kernel ring buffer lines be sorted by timestamp
(when they have timestamps), failing otherwise.
====


== INITIALIZATION PARAMETERS

param:no-extract-timestamp='VAL' vtype:[optional boolean]::
    If 'VAL' is true, then do :not: extract timestamps from the kernel
    ring buffer lines: set the created event's payload's `str` field to
    the whole line, including any timestamp prefix.
+
Default: false.

param:path='PATH' vtype:[optional string]::
    Read the kernel ring buffer lines from the file 'PATH' instead of
    the standard input stream.


== PORTS

----
+----------------+
| src.text.dmesg |
|                |
|            out @
+----------------+
----


=== Output

`out`::
    Single output port.


include::common-footer.txt[]


== SEE ALSO

man:babeltrace2-plugin-text(7),
man:babeltrace2-intro(7)
