From: Tzvetomir Stoyanov <tstoyanov@vmware.com>
To: rostedt@goodmis.org
Cc: linux-trace-devel@vger.kernel.org
Subject: [PATCH v5 28/30] tools/lib/traceevent: Man pages for "latency format" APIs
Date: Fri, 12 Apr 2019 16:38:09 +0300 [thread overview]
Message-ID: <20190412133811.15878-29-tstoyanov@vmware.com> (raw)
In-Reply-To: <20190412133811.15878-1-tstoyanov@vmware.com>
Create man pages for libtraceevent APIs:
tep_set_latency_format(),
tep_is_latency_format(),
tep_data_latency_format()
Signed-off-by: Tzvetomir Stoyanov <tstoyanov@vmware.com>
---
.../libtraceevent-latency_format.txt | 154 ++++++++++++++++++
1 file changed, 154 insertions(+)
create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt
diff --git a/tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt b/tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt
new file mode 100644
index 000000000000..3a3c9e9866ec
--- /dev/null
+++ b/tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt
@@ -0,0 +1,154 @@
+libtraceevent(3)
+================
+
+NAME
+----
+tep_set_latency_format, tep_is_latency_format, tep_data_latency_format -
+"latency output" format APIs.
+
+SYNOPSIS
+--------
+[verse]
+--
+*#include <event-parse.h>*
+
+void *tep_set_latency_format*(struct tep_handle pass:[*]_tep_, int _lat_);
+bool *tep_is_latency_format*(struct tep_handle pass:[*]_tep_);
+void *tep_data_latency_format*(struct tep_handle pass:[*]_tep_, struct trace_seq pass:[*]_s_, struct tep_record pass:[*]_record_);
+
+--
+
+DESCRIPTION
+-----------
+"Latency output" format prints information about interrupts being disabled,
+soft irq being disabled, the "need_resched" flag being set and preempt count.
+This information is recorded with every event, but by default is not printed.
+
+The _tep_set_latency_format()_ function enables the "latency output" printing.
+The _tep_ argument is trace event parser context. The _lat_ argument can be
+zero, for "latency output" disabled, or non zero for "latency output" enabled.
+Information is displayed with 6 characters. When a field is zero, or N/A,
+a pass:['.'] is printed. Example:
+[verse]
+--
+ <idle>-0 0d.h1 106467.859747: function: ktime_get <-- tick_check_idle
+--
+The 0d.h1. denotes this information. The first character is never a pass:['.']
+and represents what CPU the trace was recorded on (CPU 0). The pass:['d']
+denotes that interrupts were disabled. The pass:['.'] is "need_resched" flag.
+If it is set, the character ['N'] would be displayed. The pass:['h'] means that
+this was called inside an interrupt handler. The pass:['1'] is the preemption
+disabled (preempt_count) was set to one. See 'LATENCY FORMAT' section.
+
+The _tep_is_latency_format()_ function gets if "latency output" is enabled.
+
+The _tep_data_latency_format()_ function parses out the latency format from
+_record_ and writes it into _s_. The _tep_ argument is the trace event parser
+context.
+
+This "Latency output" setting affects output of _tep_print_event_task()_
+and _tep_print_event_time()_ APIs.
+
+LATENCY FORMAT
+--------------
+The latency format displays 5 or more fields:
+[verse]
+--
+CPU #, interrupt state, scheduling state, current context, and preemption count.
+
+Field 1 is the CPU number (starting with zero).
+
+Field 2 is the interrupt enabled state:
+ d : Interrupts are disabled
+ . : Interrupts are enabled
+ X : The architecture does not support this information
+
+Field 3 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 4 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 5 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).
+
+RETURN VALUE
+------------
+
+The _tep_is_latency_format()_ function returns true if "latency output"
+is enabled, or false if it is disabled.
+
+EXAMPLE
+-------
+[source,c]
+--
+#include <event-parse.h>
+...
+struct tep_handle *tep = tep_alloc();
+struct trace_seq seq;
+trace_seq_init(&seq);
+...
+ tep_set_latency_format(tep, 1);
+...
+ if (tep_is_latency_format(tep)) {
+ /* latency output format is enabled */
+ } else {
+ /* latency output format is disabled */
+ }
+...
+void process_record(struct tep_record *record)
+{
+ /* Write latency information in seq */
+ tep_data_latency_format(tep, &seq, record);
+}
+--
+
+FILES
+-----
+[verse]
+--
+*event-parse.h*
+ Header file to include in order to have access to the library APIs.
+*-ltraceevent*
+ Linker switch to add when building a program that uses the library.
+--
+
+SEE ALSO
+--------
+_libtraceevent(3)_, _trace-cmd(1)_, tep_print_event_task(3),
+tep_print_event_time(3)
+
+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
--
2.20.1
next prev parent reply other threads:[~2019-04-12 13:38 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-12 13:37 [PATCH v5 00/30] Libtraceevent MAN pages Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 01/30] tools/lib/traceevent: Implement libtraceevent man pages Tzvetomir Stoyanov
2019-04-24 20:27 ` Steven Rostedt
2019-04-25 14:47 ` [PATCH v6] " Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 02/30] tools/lib/traceevent: Add support for man pages with multiple names Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 03/30] tools/lib/traceevent: libtraceevent man pages for tep_handler related APIs Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 04/30] tools/lib/traceevent: Man page for header_page APIs Tzvetomir Stoyanov
2019-04-26 1:53 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 05/30] tools/lib/traceevent: Man page for get/set cpus APIs Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 06/30] tools/lib/traceevent: Man page for file endian APIs Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 07/30] tools/lib/traceevent: Man page for host " Tzvetomir Stoyanov
2019-04-26 2:01 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 08/30] tools/lib/traceevent: Man page for page size APIs Tzvetomir Stoyanov
2019-04-26 2:38 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 09/30] tools/lib/traceevent: Man page for tep_strerror() Tzvetomir Stoyanov
2019-04-26 2:41 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 10/30] tools/lib/traceevent: Man page for tep_register_trace_clock() Tzvetomir Stoyanov
2019-04-26 2:47 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 11/30] tools/lib/traceevent: Man pages for event handler APIs Tzvetomir Stoyanov
2019-04-26 2:49 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 12/30] tools/lib/traceevent: Man pages for function related libtraceevent APIs Tzvetomir Stoyanov
2019-04-30 22:02 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 13/30] tools/lib/traceevent: Man pages for registering print function Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 14/30] tools/lib/traceevent: Man page for tep_read_number() Tzvetomir Stoyanov
2019-04-12 13:37 ` [PATCH v5 15/30] tools/lib/traceevent: Man pages for event find APIs Tzvetomir Stoyanov
2019-04-30 22:08 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 16/30] tools/lib/traceevent: Man page for list events APIs Tzvetomir Stoyanov
2019-04-30 22:11 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 17/30] tools/lib/traceevent: Man pages for libtraceevent event print related APIs Tzvetomir Stoyanov
2019-04-30 22:36 ` Steven Rostedt
2019-04-12 13:37 ` [PATCH v5 18/30] tools/lib/traceevent: Man pages for libtraceevent event get APIs Tzvetomir Stoyanov
2019-04-12 13:38 ` [PATCH v5 19/30] tools/lib/traceevent: Man pages find field APIs Tzvetomir Stoyanov
2019-04-12 13:38 ` [PATCH v5 20/30] tools/lib/traceevent: Man pages get field value APIs Tzvetomir Stoyanov
2019-04-30 22:44 ` Steven Rostedt
2019-04-12 13:38 ` [PATCH v5 21/30] tools/lib/traceevent: Man pages for print field APIs Tzvetomir Stoyanov
2019-04-30 22:49 ` Steven Rostedt
2019-04-12 13:38 ` [PATCH v5 22/30] tools/lib/traceevent: Man page for tep_read_number_field() Tzvetomir Stoyanov
2019-04-30 23:58 ` Steven Rostedt
2019-04-12 13:38 ` [PATCH v5 23/30] tools/lib/traceevent: Man pages for event fields APIs Tzvetomir Stoyanov
2019-04-12 13:38 ` [PATCH v5 24/30] tools/lib/traceevent: Man pages for event filter APIs Tzvetomir Stoyanov
2019-05-01 0:52 ` Steven Rostedt
2019-04-12 13:38 ` [PATCH v5 25/30] tools/lib/traceevent: Man pages for parse event APIs Tzvetomir Stoyanov
2019-04-12 13:38 ` [PATCH v5 26/30] tools/lib/traceevent: Man page for tep_parse_header_page() Tzvetomir Stoyanov
2019-04-12 13:38 ` [PATCH v5 27/30] tools/lib/traceevent: Man pages for tep plugins APIs Tzvetomir Stoyanov
2019-05-01 1:38 ` Steven Rostedt
2019-05-02 15:23 ` Tzvetomir Stoyanov
2019-05-02 15:36 ` Steven Rostedt
2019-04-12 13:38 ` Tzvetomir Stoyanov [this message]
2019-05-01 1:39 ` [PATCH v5 28/30] tools/lib/traceevent: Man pages for "latency format" APIs Steven Rostedt
2019-04-12 13:38 ` [PATCH v5 29/30] tools/lib/traceevent: Man pages for APIs, used to extract common fields from a record Tzvetomir Stoyanov
2019-05-01 1:41 ` Steven Rostedt
2019-04-12 13:38 ` [PATCH v5 30/30] tools/lib/traceevent: Man pages for trace sequences APIs Tzvetomir Stoyanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190412133811.15878-29-tstoyanov@vmware.com \
--to=tstoyanov@vmware.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).