tep_print_event(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | FILES | SEE ALSO | AUTHOR | REPORTING BUGS | LICENSE | RESOURCES | NOTES | COLOPHON

LIBTRACEEVENT(3)          libtraceevent Manual          LIBTRACEEVENT(3)

NAME         top

       tep_print_event - Writes event information into a trace sequence.

SYNOPSIS         top

       #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, ...)

DESCRIPTION         top

       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 printf-like format
       string, 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.
                                   Field 1 is the interrupt enabled state:
                                           d : Interrupts are disabled
                                           . : Interrupts are enabled
                                           X : 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 context
                                           s : Soft interrupt context
                                           h : Hard interrupt context
                                           H : Hard interrupt context which triggered
                                               during soft interrupt context.
                                           z : NMI context
                                           Z : 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).
                   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"
                   TEP_PRINT_INFO, "%s" - event information.
                   TEP_PRINT_INFO_RAW, "%s" - event information, in raw format.

EXAMPLE         top

           #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);
           }
           ...

FILES         top

           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         top

       libtraceevent(3), trace-cmd(1)

AUTHOR         top

           Steven Rostedt <rostedt@goodmis.org[1]>, author of libtraceevent.
           Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>, author of this man page.

REPORTING BUGS         top

       Report bugs to <linux-trace-devel@vger.kernel.org[3]>

LICENSE         top

       libtraceevent is Free Software licensed under the GNU LGPL 2.1

RESOURCES         top

       https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ 

NOTES         top

        1. rostedt@goodmis.org
           mailto:rostedt@goodmis.org

        2. tz.stoyanov@gmail.com
           mailto:tz.stoyanov@gmail.com

        3. linux-trace-devel@vger.kernel.org
           mailto:linux-trace-devel@vger.kernel.org

COLOPHON         top

       This page is part of the libtraceevent (Linux kernel trace event
       library) project.  Information about the project can be found at
       ⟨https://www.trace-cmd.org/⟩.  If you have a bug report for this
       manual page, see ⟨https://www.trace-cmd.org/⟩.  This page was
       obtained from the project's upstream Git repository
       ⟨https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git⟩
       on 2023-12-22.  (At that time, the date of the most recent commit
       that was found in the repository was 2023-06-07.)  If you
       discover any rendering problems in this HTML version of the page,
       or you believe there is a better or more up-to-date source for
       the page, or you have corrections or improvements to the
       information in this COLOPHON (which is not part of the original
       manual page), send a mail to man-pages@man7.org

libtraceevent 1.7.3            09/24/2023               LIBTRACEEVENT(3)