131 lines
3.8 KiB
Plaintext
131 lines
3.8 KiB
Plaintext
|
libtraceevent(3)
|
||
|
================
|
||
|
|
||
|
NAME
|
||
|
----
|
||
|
tep_print_event - Writes event information into a trace sequence.
|
||
|
|
||
|
SYNOPSIS
|
||
|
--------
|
||
|
[verse]
|
||
|
--
|
||
|
*#include <event-parse.h>*
|
||
|
*#include <trace-seq.h>*
|
||
|
|
||
|
void *tep_print_event*(struct tep_handle pass:[*]_tep_, struct trace_seqpass:[*]_s_, struct tep_record pass:[*]_record_, const char pass:[*]_fmt_, _..._)
|
||
|
--
|
||
|
|
||
|
DESCRIPTION
|
||
|
-----------
|
||
|
|
||
|
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:
|
||
|
[verse]
|
||
|
--
|
||
|
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
|
||
|
-------
|
||
|
[source,c]
|
||
|
--
|
||
|
#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
|
||
|
-----
|
||
|
[verse]
|
||
|
--
|
||
|
*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
|
||
|
------
|
||
|
[verse]
|
||
|
--
|
||
|
*Steven Rostedt* <rostedt@goodmis.org>, author of *libtraceevent*.
|
||
|
*Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>, author of this man page.
|
||
|
--
|
||
|
REPORTING BUGS
|
||
|
--------------
|
||
|
Report bugs to <linux-trace-devel@vger.kernel.org>
|
||
|
|
||
|
LICENSE
|
||
|
-------
|
||
|
libtraceevent is Free Software licensed under the GNU LGPL 2.1
|
||
|
|
||
|
RESOURCES
|
||
|
---------
|
||
|
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|