| 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 |