BABELTRACE2-SOURCE() | BABELTRACE2-SOURCE() |
babeltrace2-source.text.dmesg - Babeltrace 2's Linux kernel ring buffer source component class
A Babeltrace 2 source.text.dmesg message iterator reads the lines of a Linux kernel ring buffer, as printed by the dmesg(1) tool, and emits corresponding event messages.
Linux kernel ring buffer lines (file or standard input)
|
| +----------------+
| | src.text.dmesg |
'-->| |
| out @--> Messages (single stream)
+----------------+
See babeltrace2-intro(7) to learn more about the Babeltrace 2 project and its core concepts.
A 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 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 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 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 no-extract-timestamp parameter.
It is possible that the output of dmesg(1) contains unsorted lines, that is, their timestamps go back in time. You can see this with the --show-delta option of dmesg(1): some time differences can be negative.
This is due to a 2019 change (see <https://lwn.net/Articles/780556/>) to the kernel’s ring buffer API.
As of this version, a source.text.dmesg message iterator requires that the input kernel ring buffer lines be sorted by timestamp (when they have timestamps), failing otherwise.
no-extract-timestamp=yes [optional boolean]
path=PATH [optional string]
+----------------+ | src.text.dmesg | | | | out @ +----------------+
out
If you encounter any issue or usability problem, please report it on the Babeltrace bug tracker (see <https://bugs.lttng.org/projects/babeltrace>).
The Babeltrace project shares some communication channels with the LTTng project (see <https://lttng.org/>).
The Babeltrace 2 project is the result of hard work by many regular developers and occasional contributors.
The current project maintainer is Jérémie Galarneau <mailto:jeremie.galarneau@efficios.com>.
This component class is part of the Babeltrace 2 project.
Babeltrace is distributed under the MIT license (see <https://opensource.org/licenses/MIT>).