All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.