LIBTRACEEVENT(3)
π LIBTRACEEVENT(3) β the tep_print_event page π
okay bestie, this one lives in the libtraceevent Manual, and it's genuinely iconic. sit down, grab a strawberry π, and let's get into it.
β¨ NAME β¨
tep_print_event β writes event information into a trace sequence π
πΈ SYNOPSIS πΈ
#include <event-parse.h>
#include <trace-seq.h>
void tep_print_event(struct tep_handle *tep, struct trace_seq*s, struct tep_record *record, const char *fmt, ...)
(yes, it's a void, it doesn't hand anything back, it just does the thing π«Ά)
π DESCRIPTION π
so the tep_print_event() function parses the event information of the given record and writes it into the trace sequence s, according to the format string fmt. the desired information is specified after the format string. the fmt is a printf-like format string, and these following arguments are supported:
TEP_PRINT_PID,"%d"β PID of the event πTEP_PRINT_CPU,"%d"β Event CPU π§TEP_PRINT_COMM,"%s"β Event command string π¬TEP_PRINT_NAME,"%s"β Event name π·οΈTEP_PRINT_LATENCY,"%s"β Latency of the event. it prints 4 or more fields β interrupt state, scheduling state, current context, and preemption count. no cap, that's a lot of lore, so let's break it down:- Field 1 is the interrupt enabled state:
d: Interrupts are disabled.: Interrupts are enabledX: The architecture does not support this information
- Field 2 is the
"need resched"state.N: The task is set to call the scheduler when possible, as another higher priority task may need to be scheduled in..: The task is not set to call the scheduler.
- Field 3 is the context state.
.: Normal contexts: Soft interrupt contexth: Hard interrupt contextH: Hard interrupt context which triggered during soft interrupt context.z: NMI contextZ: NMI context which triggered during hard interrupt context
- Field 4 is the preemption count.
.: The preempt count is zero.
- on preemptible kernels (where the task can be scheduled out in arbitrary locations while in kernel context), the preempt count, when non zero, will prevent the kernel from scheduling out the current task. the preempt count number is displayed when it is not zero.
- depending on the kernel, it may show other fields (lock depth, or migration disabled, which are unique to specialized kernels).
- Field 1 is the interrupt enabled state:
TEP_PRINT_TIME,%dβ event time stamp β°. a divisor and precision can be specified as part of this format string:"%precision.divisord". example:"%3.1000d"β divide the time by 1000 and print the first 3 digits before the dot. thus, the time stamp"123456000"will be printed as"123.456". it's giving math but make it cute πTEP_PRINT_INFO,"%s"β event information πTEP_PRINT_INFO_RAW,"%s"β event information, in raw format π§Ύ
π EXAMPLE π
#include <event-parse.h>
#include <trace-seq.h>
...
struct trace_seq seq;
trace_seq_init(&seq);
struct tep_handle *tep = tep_alloc();
...
void print_my_event(struct tep_record *record)
{
trace_seq_reset(&seq);
tep_print_event(tep, s, record, "%16s-%-5d [%03d] %s %6.1000d %s %s",
TEP_PRINT_COMM, TEP_PRINT_PID, TEP_PRINT_CPU,
TEP_PRINT_LATENCY, TEP_PRINT_TIME, TEP_PRINT_NAME,
TEP_PRINT_INFO);
}
...
like... look at that format string. it ATE. β¨
π FILES π
event-parse.hβ Header file to include in order to have access to the library APIs.trace-seq.hβ Header file to include in order to have access to trace sequences related APIs. Trace sequences are used to allow a function to call several other functions to create a string of data to use.-ltraceeventβ Linker switch to add when building a program that uses the library.
π¦ SEE ALSO π¦
libtraceevent(3), trace-cmd(1)
π AUTHOR π
- Steven Rostedt <rostedt@goodmis.org[1]>, author of libtraceevent.
- Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>, author of this man page.
π REPORTING BUGS π
Report bugs to <linux-trace-devel@vger.kernel.org[3]>
(be nice, they're doing their best fr fr π)
β LICENSE β
libtraceevent is Free Software licensed under the GNU LGPL 2.1
π§ RESOURCES π§
https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/
π₯ NOTES π₯
- rostedt@goodmis.org mailto:rostedt@goodmis.org
- tz.stoyanov@gmail.com mailto:tz.stoyanov@gmail.com
- linux-trace-devel@vger.kernel.org mailto:linux-trace-devel@vger.kernel.org
and that's the whole page, bestie π«Ά this was libtraceevent 1.9.0, dated 06/15/2026 β go forth and print those events, main character. periodt. π π
π¦ where this page comes from
- ubuntu stonking: libtraceevent-doc 1:1.9.0-2 Β· LGPL-2.1-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms