]> sourceware.org Git - systemtap-htdocs.git/commitdiff
Removed lket man pages.
authormmason <mmason>
Thu, 18 Oct 2007 22:27:52 +0000 (22:27 +0000)
committermmason <mmason>
Thu, 18 Oct 2007 22:27:52 +0000 (22:27 +0000)
man/lket-b2a.1.html [deleted file]
man/lket.5.html [deleted file]

diff --git a/man/lket-b2a.1.html b/man/lket-b2a.1.html
deleted file mode 100644 (file)
index cf17c4b..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-
-<HTML><HEAD><TITLE>Manpage of LKET\-B2A</TITLE>
-</HEAD><BODY>
-<H1>LKET\-B2A</H1>
-Section: User Commands  (1)<BR>Updated: 2007-03-06<BR><A HREF="#index">Index</A>
-<A HREF="../index.html">Return to Main Contents</A><HR>
-
-<A NAME="lbAB">&nbsp;</A>
-<H2>NAME</H2>
-
-lket-b2a - Converting and dumping utility for LKET binary trace data
-<P>
-
-
-
-<P>
-<A NAME="lbAC">&nbsp;</A>
-<H2>SYNOPSIS</H2>
-
-<P>
-<BR>
-
-<B>lket-b2a</B>
-
-<I>OPTIONS</I>
-
-<I>IN_FILENAME</I>...
-
-<BR>
-
-<P>
-<A NAME="lbAD">&nbsp;</A>
-<H2>DESCRIPTION</H2>
-
-<P>
-The trace data generated by 
-<I>LKET </I>
-
-is in binary format by default for 
-better performance and smaller size. 
-<I>lket-b2a </I>
-
-is used to convert the 
-binary trace data into readable data in ascii format and save 
-them into local file or MySQL database for off-line trace analysis. 
-It uses the per-cpu binary trace data files (stpd_cpu*) as inputs. 
-You can use &quot;stap -bM&quot; with LKET to get those per-cpu files before using it.
-<P>
-The database used by
-<I>lket-b2a </I>
-
-is MySQL. So MySQL must be properly installed
-and configured in order to make 
-<I>lket-b2a</I>
-
-able to dump the trace data into MySQL database.
-<P>
-<A NAME="lbAE">&nbsp;</A>
-<H2>OPTIONS</H2>
-
-<I>lket-b2a </I>
-
-supports the following two options. They can be used 
-together or alone but at least one of them should be specified:
-<P>
-<DL COMPACT>
-<DT><B>-m</B>
-
-<DD>
-convert and dump trace data into MySQL database. For more details,
-See the following section.
-<DT><B>-f</B>
-
-<DD>
-convert and dump trace data into local file. For more details,
-See the following section.
-<DT><B>-n     </B>
-
-<DD>
-name_flag. name_flag set to 0 means not printing the event
-description string and 1 means printing. Only valid with -f
-option. name_flag is set to 1 by default.
-<DT><B>-i     </B>
-
-<DD>
-id_flag. id_flag set to 0 means not printing event groupid and
-hookid and 1 means printing. Only valid with -f option. id_flag
-is set to 0 by default.
-<DT><B>-a     </B>
-
-<DD>
-appname_flag. appname_flag set to 0 means not printing process
-name and 1 means printing. Only valid with -f option. appname_flag
-is set to 1 by default.
-<P>
-</DL>
-<A NAME="lbAF">&nbsp;</A>
-<H2>DUMP TRACE DATA INTO LOCAL FILE</H2>
-
-<P>
-The generated output file is named
-<I>lket.out</I>.
-
-The following is an example:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-root:/home/root/data&gt; lket-b2a -f stpd_cpu*
-root:/home/root/data&gt; cat lket.out
-LKET Magic:     0xAEFCDB6B
-InitHdrLen:     9
-Version Major:  1
-Version Minor:  1
-Big endian:     YES
-Timing method:  do_gettimeofday()
-Bits width:     64
-Initial CPU timebase:   1596405 (cycles per microsecond)
-[...]
-2.527880 CPU:0 PID:2450 APPNAME:gnome-panel EVT_NAME:iosyscall.read.entry fd:3,buff_addr:-1081126904,count:32,
-2.527887 CPU:0 PID:2450 APPNAME:gnome-panel EVT_NAME:iosyscall.read.return return:32,
-2.534343 CPU:0 PID:1450 APPNAME:kjournald EVT_NAME:scsi.ioentry major:8,minor:0,sdev_state:2,request_addr:3806880208,
-2.534359 CPU:0 PID:1450 APPNAME:kjournald EVT_NAME:scsi.iodispatching host:0,channel:0,lun:0,dev_id:0,dev_state:2,data_dir:1,reqbuf_addr:3248315840,reqbuf_len:8192,request_addr:3806880208,
-[...]
-
-</PRE>
-
-</DL>
-
-
-<P>
-<A NAME="lbAG">&nbsp;</A>
-<H2>DUMP TRACE DATA INTO MYSQL DATABASE</H2>
-
-<P>
-To avoid either reading the complete trace data into internal data
-structures to process, or filter through the raw trace data again
-and again to calculate the interesting metrics, 
-<I>lket-b2a</I>
-
-supports convert and save the binary trace data into MySQL database to 
-facilitate the query and calculation on the trace data.
-<P>
-<I>lket-b2a</I>
-
-creates the database name based on current time. And 
-<I>lket-b2a </I>
-
-will not only save the trace data, but also some meta data into MySQL 
-database too, such as trace header, trace table description.
-<P>
-The following is an example of navigating the trace data in MySQL database
-created by 
-<I>lket-b2a</I>:
-
-<P>
-Use 
-<I>lket-b2a</I>
-
-to convert and dump the binary trace data of 
-<I>LKET</I>
-
-into MySQL database:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-root:/home/root/data&gt; lket-b2a -m stpd_cpu*
-
-</PRE>
-
-</DL>
-
-
-<P>
-list all databases in MySQL:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-mysql&gt; show databases;
-+------------------+
-| Database         |
-+------------------+
-| DB20061023161626 |
-| mysql            |
-| test             |
-+------------------+
-3 rows in set (0.00 sec)
-
-</PRE>
-
-</DL>
-
-
-<P>
-DB20061023161626 is the newly created database by &quot;lket-b2a -m stpd_cpu*&quot;. We can list
-all the tables contained in DB20061023161626:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-mysql&gt; use DB20061023161626
-Database changed
-mysql&gt; show tables;
-+----------------------------+
-| Tables_in_DB20061023161626 |
-+----------------------------+
-| 2_1                        |
-| 2_2                        |
-| 3_1                        |
-| 3_3                        |
-| 3_5                        |
-| 4_1                        |
-| 4_3                        |
-| 4_4                        |
-| 8_1                        |
-| 8_3                        |
-| appNameMap                 |
-| table_desc                 |
-| trace_header               |
-+----------------------------+
-13 rows in set (0.00 sec)
-
-</PRE>
-
-</DL>
-
-
-<P>
-The table trace_header is used to store the trace header info:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-mysql&gt; select * from trace_header;
-+-----------+-----------+------------+-----------------+------------+
-| Major_Ver | Minor_Ver | Big_Endian | Timing_Method   | Bits_Width |
-+-----------+-----------+------------+-----------------+------------+
-|         1 |         1 |          2 | do_gettimeofday |         64 |
-+-----------+-----------+------------+-----------------+------------+
-1 row in set (0.00 sec)
-
-</PRE>
-
-</DL>
-
-
-<P>
-The table appNameMap is used to store the mapping between PID and process name:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-mysql&gt; select * from appNameMap;
-+-------+-----------------+
-| pid   | pname           |
-+-------+-----------------+
-| 10764 | systemtap/0     |
-| 10765 | systemtap/1     |
-| 10766 | systemtap/2     |
-| 10767 | systemtap/3     |
-| 10768 | systemtap/4     |
-| 10769 | systemtap/5     |
-| 10770 | systemtap/6     |
-| 10771 | systemtap/7     |
-|     0 | swapper         |
-|     1 | init            |
-|     2 | migration/0     |
-|     3 | ksoftirqd/0     |
-|     4 | watchdog/0      |
-|     5 | migration/1     |
-[...]
-
-</PRE>
-
-</DL>
-
-
-<P>
-Each event corresponds to one table which is named as groupid_hookid. For example
-table 8_1 corresponds to
-<I>addevent.netdev.receive </I>
-
-whose groupid is 8 and hookid is 1:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-mysql&gt; select * from table_desc;
-+------------+----------------------------------+
-| table_name | table_desc                       |
-+------------+----------------------------------+
-| 2_1        | addevent.syscall.entry           |
-| 2_2        | addevent.syscall.return          |
-| 3_1        | process_snapshot                 |
-| 3_3        | addevent.process.execve          |
-| 3_5        | addevent.process.fork            |
-| 4_3        | addevent.ioscheduler.elv_next_re |
-| 4_4        | addevent.ioscheduler.elv_next_re |
-| 4_1        | addevent.ioscheduler.elv_add_req |
-| 8_1        | addevent.netdev.receive          |
-| 8_3        | addevent.netdev.transmit         |
-+------------+----------------------------------+
-10 rows in set (0.00 sec)
-
-</PRE>
-
-</DL>
-
-
-<P>
-The hookid of a return type event(
-<I>addevent.*.return</I>
-
-) should be an 
-even number and its value should be the corresponding entry event hookid +1.  
-For example, the hookid of addevent.syscall.return is 2 and the hookid of 
-addevent.syscall.entry is 1. And what's more, there will be a new column 
-named 
-<I>entry_usec </I>
-
-for all return type event tables which is the timestamp 
-of the entry of that event. The column
-<I>entry_usec</I>
-
-is created and calculated by lket-b2a on the fly while processing the binary trace data.
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-mysql&gt; select * from 2_1 limit 4;
-+---------+--------+--------+------------+--------+--------------+
-| groupid | hookid | usec   | process_id | cpu_id | syscall      |
-+---------+--------+--------+------------+--------+--------------+
-|       2 |      1 |  10727 |      20922 |      2 | read         |
-|       2 |      1 |  10746 |      20922 |      2 | read         |
-|       2 |      1 | 729066 |       3605 |      5 | gettimeofday |
-|       2 |      1 | 729086 |       3605 |      5 | gettimeofday |
-+---------+--------+--------+------------+--------+--------------+
-4 rows in set (0.00 sec)
-
-mysql&gt; select * from 2_2 limit 4;
-+---------+--------+--------+------------+--------+------------+--------------+
-| groupid | hookid | usec   | process_id | cpu_id | entry_usec | syscall      |
-+---------+--------+--------+------------+--------+------------+--------------+
-|       2 |      2 |  10742 |      20922 |      2 |      10727 | read         |
-|       2 |      2 | 729072 |       3605 |      5 |     729066 | gettimeofday |
-|       2 |      2 | 729089 |       3605 |      5 |     729086 | gettimeofday |
-|       2 |      2 | 729100 |       3605 |      5 |     729096 | poll         |
-+---------+--------+--------+------------+--------+------------+--------------+
-4 rows in set (0.00 sec)
-
-</PRE>
-
-</DL>
-
-
-<P>
-<A NAME="lbAH">&nbsp;</A>
-<H2>SEE ALSO</H2>
-
-<I><A HREF="stap.1.html">stap</A></I>(1),
-
-<I><A HREF="lket.5.html">lket</A></I>(5)
-
-<P>
-
-<HR>
-<A NAME="index">&nbsp;</A><H2>Index</H2>
-<DL>
-<DT><A HREF="#lbAB">NAME</A><DD>
-<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
-<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
-<DT><A HREF="#lbAE">OPTIONS</A><DD>
-<DT><A HREF="#lbAF">DUMP TRACE DATA INTO LOCAL FILE</A><DD>
-<DT><A HREF="#lbAG">DUMP TRACE DATA INTO MYSQL DATABASE</A><DD>
-<DT><A HREF="#lbAH">SEE ALSO</A><DD>
-</DL>
-<HR>
-This document was created by
-<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
-using the manual pages.<BR>
-Time: 16:17:39 GMT, March 06, 2007
-</BODY>
-</HTML>
diff --git a/man/lket.5.html b/man/lket.5.html
deleted file mode 100644 (file)
index 7255081..0000000
+++ /dev/null
@@ -1,1976 +0,0 @@
-
-<HTML><HEAD><TITLE>Manpage of LKET</TITLE>
-</HEAD><BODY>
-<H1>LKET</H1>
-Section: File Formats (5)<BR>Updated: 2007-03-06<BR><A HREF="#index">Index</A>
-<A HREF="../index.html">Return to Main Contents</A><HR>
-
-<A NAME="lbAB">&nbsp;</A>
-<H2>NAME</H2>
-
-LKET - Linux Kernel Event Trace tool based on SystemTap
-<P>
-
-
-
-<P>
-<A NAME="lbAC">&nbsp;</A>
-<H2>DESCRIPTION</H2>
-
-<P>
-The Linux Kernel Event Trace (LKET) tool is an extension to the tapsets
-library available on SystemTap. Its goal is to utilize the dynamic probing
-capabilities provided through SystemTap to create a set of standard hooks
-that probe pre-defined places in the kernel. It can be used to collect
-important information that can be used as a starting point to analyze 
-a performance problem in the system.
-<P>
-The LKET tapsets are designed to only trace the events selected by the
-user. Once the data has been collected, it is then post-processed 
-according to the need of the user. Trace data can be processed in 
-various different ways to generate simple to complex reports.  
-<P>
-<A NAME="lbAD">&nbsp;</A>
-<H2>BINARY TRACING</H2>
-
-<P>
-By default, LKET will log the trace data in binary format.
-<P>
-To get a better performance for binary tracing, the &quot;-b&quot; option should
-be turned on for stap and thus -M option has to be added to stop staprun
-merging per-cpu files.
-<P>
-You could use the command 
-<I>lket-b2a</I>
-
-to convert the binary trace data 
-generated by LKET into readable data in ascii format.
-<P>
-<I>lket-b2a</I>
-
-uses the pre-cpu binary trace data files(stpd_cpu*) as inputs, and generates
-an output file named 
-<I>lket.out</I>.
-
-or dump the trace data into MySQL database.
-See
-<I><A HREF="lket-b2a.1.html">lket-b2a</A></I>(1)
-
-manual page for more detail.
-<P>
-If you want LKET to log trace data in ASCII format directly, you should:
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-stap -D ASCII_TRACE ...
-
-</PRE>
-
-</DL>
-
-
-<P>
-<B>*Notes*</B>
-
-that in order to make 
-<I>LKET </I>
-
-able to work in binary tracing mode, all strings logged by 
-<I>LKET </I>
-
-should be NULL-terminated, which means you have
-to use &quot;%0s&quot; instead of &quot;%s&quot; for both user appended extra printing statements
-and _lket_trace() which is called in 
-<I>LKET </I>
-
-tapsets.
-<P>
-<A NAME="lbAE">&nbsp;</A>
-<H2>EVENT REGISTER</H2>
-
-<P>
-LKET provides a way to log the metadata of the trace data by events registering.
-<P>
-Two functions is provided:
-
-<DL COMPACT>
-<DT><DD>
-<FONT SIZE="-1"><B>void _register_sys_event (char *event_desc, int grpid, int hookid, char *fmt, char *field_name)</B></FONT>
-<DT><DD>
-<FONT SIZE="-1"><B>register_user_event(grpid:long, hookid:long, fmt:string, names:string)</B></FONT>
-
-<P>
-<I>event_desc</I>
-
-is a string representation of the event, e.g: syscall.entry, scsi.iocompleted.
-<P>
-<I>grpid</I>
-
-and 
-<I>hookid</I>
-
-is the groupid and hookid of the event to be registered.
-<P>
-<I>fmt</I>
-
-contains a set of fomat tokens seperated by &quot;:&quot;.
-The valid format tokens are:
-<B>UINT8,</B>
-
-<B>UINT16,</B>
-
-<B>UINT32,</B>
-
-<B>UINT64</B>
-
-and
-<B>STRING</B>
-
-which represents 8-bit, 16-bit, 32-bit, 64-bit binary data and NULL-terminated
-respectively.
-<P>
-<I>names</I>
-
-contains a set of names seperated by &quot;:&quot;.
-The names contains in
-<I>names</I>
-
-should match the format tokens contains in
-<I>fmt</I>
-
-<P>
-<B>_register_sys_event is a c function which is used to register the newly </B>
-
-added trace hooks in LKET tapsets. For example, supposing you
-want to add a new event hook to trace the entry of sys_open, and you want
-this event hook to log the fd, flag and mode paremeters for you. You should
-add:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-_register_sys_event(&quot;iosyscall.open.entry&quot;,
-                     _GROUP_IOSYSCALL, 
-                     _HOOKID_IOSYSCALL_OPEN_ENTRY,
-                     &quot;STRING:INT32:INT32&quot;, 
-                     &quot;filename:flags:mode&quot;);
-
-</PRE>
-
-</DL>
-
-
-<P>
-into the function
-<B>register_sys_events</B>
-
-in LKET/register_event.stp
-<P>
-<B>register_user_event</B>
-
-is a SystemTap script function which is used for user to add extra trace data 
-for a event hook. See the section
-<B>CUSTOMIZED TRACE DATA</B>
-
-for more detail
-<P>
-</DL>
-<A NAME="lbAF">&nbsp;</A>
-<H2>CUSTOMIZED TRACE DATA</H2>
-
-<P>
-LKET provides a set of event hooks that log the predefined
-trace data for you, but LKET also make you able to log extra 
-trace data for a event.
-<P>
-LKET provides a way to do this without modifying the tapset 
-of that event hook. You can simply use printf to trace
-extra data. For example, supposing you want to trace sk_buff-&gt;mac_len
-and sk_buff-&gt;priority besides the sk_buff-&gt;len, sk_buff-&gt;protocol and
-sk_buff-&gt;truesize for the 
-<B>netdev </B>
-
-event hooks:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-probe register_event
-{
-    register_user_event(GROUP_NETDEV, HOOKID_NETDEV_TRANSMIT,
-        &quot;INT32:INT32&quot;, &quot;mac_len:priority&quot;)
-}
-probe addevent.netdev.transmit
-{
-    printf(&quot;%4b%4b&quot;, $skb-&gt;mac_len, $skb-&gt;priority)
-}
-
-</PRE>
-
-</DL>
-
-
-<P>
-<A NAME="lbAG">&nbsp;</A>
-<H2>EXAMPLES</H2>
-
-<P>
-Here are some examples of using LKET:
-<P>
-<DL COMPACT>
-<DT>Trace all events provided by LKET:<DD>
-stap -e &quot;probe addevent.* {}&quot; -bM
-<P>
-<DT>Trace all available events by skipping those unavaiabled on current system:<DD>
-stap -e &quot;probe addevent.* ? {}&quot; -bM
-<P>
-<DT>Trace all system calls:<DD>
-stap -e &quot;probe addevent.syscall {}&quot; -bM
-<DT>Trace the entry of all system calls:<DD>
-stap -e &quot;probe addevent.syscall.entry {}&quot; -bM
-<DT>Trace netdev transmition and log extra data of mac_len and priority:<DD>
-stap -e &quot;probe addevent.netdev.transmit { printf(\&quot;%4b%4b\&quot;, $skb-&gt;mac_len, $skb-&gt;priority) }&quot; -bM
-<P>
-
-You can press &quot;Ctrl+c&quot; to stop the tracing. Then you will find there are one or more per-cpu data files (stpd_cpu*) on current directory. You can use
-<I>lket-b2a</I>
-
-to convert these binary trace data files into readable ascii format or dump them into database. See
-<I><A HREF="lket-b2a.1.html">lket-b2a</A></I>(1)
-
-man page for more detail.
-<P>
-</DL>
-<A NAME="lbAH">&nbsp;</A>
-<H2>EVENT HOOKS AND TRACE DATA FORMAT</H2>
-
-<P>
-The following sections enumerate the variety of event hooks implemented
-in LKET and their trace data format. The trace data generated by different
-event hooks contain common data
-as well as some data specific to that event hook. 
-<P>
-the INT8, INT16, INT32, INT64 and STRING appeared in trace data format
-represents 8-bit, 16-bit, 32-bit, 64-bit binary data and NULL-terminated
-string respectively.
-<P>
-The data common(i.e.
-<I>common_data</I>
-
-in the following subsecions) to all event hooks is:
-<DL COMPACT><DT><DD>
-<P>
-<B>timestamp(INT64),(tid&lt;&lt;32|pid)(INT64),(ppid&lt;&lt;32|groupID&lt;&lt;24|hookID&lt;&lt;16|cpu_id&lt;&lt;8)(INT64)</B>
-
-</DL>
-
-<P>
-Each event hook group is a collection of those hooks that have
-similarities of what they could trace. And the ID of each event hook (HookID)
-is defined in the context of its corresponding group.
-<P>
-<A NAME="lbAI">&nbsp;</A>
-<H3>EVENT REGISTER </H3>
-
-Event register is not actually an event. It is used to log the 
-metadata of the trace data, including the extra trace data appended by user.
-See
-<B>EVENT REGISTER</B>
-
-and
-<B>CUSTOMIZED TRACE DATA</B>
-
-for more details.
-<P>
-
-<DL COMPACT>
-<DT><B>register_sys_event</B>
-
-<DD>
-This is a function used to register event hooks available in LKET. 
-It should be called from register_event.stp:register_sys_events().
-<P>
-<DT><B>register_user_event</B>
-
-<DD>
-This is a function used to log the metadata of the extra
-trace data appended by user for a specific event.
-It should be called in the probe
-<I>register_event</I>
-
-<P>
-</DL>
-<A NAME="lbAJ">&nbsp;</A>
-<H3>SYSTEM CALLS </H3>
-
-You could use 
-<I>addevent.syscall</I>
-
-to trace the entry and return of all system calls.
-It contains two sub event hooks:
-
-<DL COMPACT>
-<DT><B>addevent.syscall.entry </B>
-
-<DD>
-Trace entry of all system calls. 
-<P>
-Data format is:
-<P>
-<I>common_data, syscall_name(STRING)</I>
-
-<DT><B>addevent.syscall.return </B>
-
-<DD>
-Trace return of all system calls. 
-<P>
-Data format is:
-<P>
-<I>common_data, syscall_name(STRING)</I>
-
-<P>
-</DL>
-<A NAME="lbAK">&nbsp;</A>
-<H3>PROCESS CREATION </H3>
-
-This group contains three sub event hooks. All of them are turned on
-by default. You can use the flags stoptrace_fork and stoptrace_exec to stop
-tracing fork/execve in your script, e.g.:
-<P>
-
-<BR>
-
-<DL COMPACT><DT><DD>
-<PRE>
-probe begin
-{
-  stoptrace_fork = 1
-  stoptrace_exec = 1
-}
-
-</PRE>
-
-</DL>
-
-
-<P>
-
-<DL COMPACT>
-<DT><B>process_snapshot()</B>
-
-<DD>
-This event hook isn't a probe definition but a function. It is called
-by LKET silently to take a snapshot of all running processes.
-<P>
-Data format is:
-<P>
-<I>common_data, tid(INT32), pid(INT32), ppid(INT32), process_name(STRING)</I>
-
-<P>
-
-<DT><B>lket_internal.process.fork </B>
-
-<DD>
-Trace fork of processes
-<P>
-Data format is:
-<P>
-<I>common_data, new_tid(INT32), new_pid(INT32), ppid(INT32)</I>
-
-<DT><B>lket_internal.process.execve </B>
-
-<DD>
-Trace execve of new processes
-<P>
-Data format is:
-<P>
-<I>common_data, tid(INT32), pid(INT32), ppid(INT32), new_process_name(STRING)</I>
-
-<P>
-</DL>
-<A NAME="lbAL">&nbsp;</A>
-<H3>SIGNAL</H3>
-
-You could use
-<I>addevent.signal</I>
-
-to trace signal activities. It contains the following events:
-
-<DL COMPACT>
-<DT><B>addevent.signal.send.entry</B>
-
-<DD>
-Trace when a signal is sent to a process
-<P>
-Data format is:
-<I>common_data, sig(INT8), shared(INT8), send2queue(INT8), pid(INT32)</I>
-
-<DT><B>addevent.signal.send.return</B>
-
-<DD>
-Trace when returning from sending signal
-<P>
-Data format is:
-<I>common_data, return(INT8)</I>
-
-<DT><B>addevent.signal.syskill.entry</B>
-
-<DD>
-Trace when sys_kill is called to send a signal to a process.
-<P>
-Data format is:
-<I>common_data, pid(INT32), sig(INT8)</I>
-
-<DT><B>addevent.signal.syskill.return</B>
-
-<DD>
-Trace when return from sys_kill
-<P>
-Data format is:
-<I>common_data, return(INT8)</I>
-
-<DT><B>addevent.signal.systgkill.entry</B>
-
-<DD>
-Trace when sys_tgkill is called to send a signal to one specific thread
-<P>
-Data format is:
-<I>common_data, tid(INT32), pid(INT32), sig(INT8)</I>
-
-<DT><B>addevent.signal.systgkill.return</B>
-
-<DD>
-Trace when returning from sys_tgkill
-<P>
-Data format is:
-<I>common_data, return(INT8)</I>
-
-<DT><B>addevent.signal.systkill.entry</B>
-
-<DD>
-Trace when sys_tkill is called to send a signal to a single process.
-<P>
-Data format is:
-<I>common_data, pid(INT32), sig(INT8)</I>
-
-<DT><B>addevent.signal.systkill.return</B>
-
-<DD>
-Trace when returning from sys_tkill.
-<P>
-Data format is:
-<I>common_data, return(INT8)</I>
-
-<DT><B>addevent.signal.pending.entry</B>
-
-<DD>
-Trace when examine the set of signals that are pending for delivery.
-<P>
-Data format is:
-<I>common_data, sigset_addr(INT32), setsize(INT32)</I>
-
-<DT><B>addevent.signal.pending.return</B>
-
-<DD>
-Trace when returning from signal.pending
-<P>
-Data format is:
-<I>common_data, return(INT8)</I>
-
-<DT><B>addevent.signal.do_action.entry</B>
-
-<DD>
-Trace when a thread is about to examine and change a signal action
-<P>
-Data format is:
-<I>common_data, sig(INT8), handler(INT64)</I>
-
-<DT><B>addevent.signal.do_action.return</B>
-
-<DD>
-Trace when returning from signal.do_action
-<P>
-Data format is:
-<I>common_data, return(INT8)</I>
-
-<DT><B>addevent.signal.procmask.entry</B>
-
-<DD>
-Trace when a thread is about to examine and change blocked signals
-<P>
-Data format is:
-<I>common_data, how(INT8), sigset(INT64)</I>
-
-<DT><B>addevent.signal.procmask.return</B>
-
-<DD>
-Trace when returning from signal.procmask
-<P>
-Data format is
-<I>common_data, return(INT8)</I>
-
-<DT><B>addevent.signal.flush.entry</B>
-
-<DD>
-Trace when flush all pending signals for a task
-<P>
-Data format is:
-<I>common_data, pid(INT32)</I>
-
-<P>
-</DL>
-<A NAME="lbAM">&nbsp;</A>
-<H3>IO SCHEDULER ACTIVITIES </H3>
-
-You could use
-<I>addevent.ioscheduler</I>
-
-to trace the IO scheduler activities. It contains three sub event hooks:
-
-<DL COMPACT>
-<DT><B>addevent.ioscheduler.elv_add_request </B>
-
-<DD>
-Trace when a request is added to the request queue
-<P>
-Data format is:
-<P>
-<I>common_data, elevator_name(STRING), disk_major(INT8), disk_minor(INT8), </I>
-
-<I>request_addr(INT64), request_flags(INT64)</I>
-
-<DT><B>addevent.ioscheduler.elv_next_request.entry </B>
-
-<DD>
-Trace when try to retrieve a request from request queue
-<P>
-Data format is:
-<P>
-<I>common_data, elevator_name(STRING)</I>
-
-<P>
-<DT><B>addevent.ioscheduler.elv_next_request.return</B>
-
-<DD>
-Trace when return from retrieving a request from request queue
-<P>
-Data format is:
-<P>
-<I>common_data, disk_major(INT8), disk_minor(INT8), </I>
-
-<I>request_addr(INT64), request_flags(INT64)</I>
-
-<P>
-<DT><B>addevent.ioscheduler.elv_completed_request </B>
-
-<DD>
-Trace when a request is completed
-<P>
-Data format is:
-<P>
-<I>common_data, elevator_name(STRING), disk_major(INT8), disk_minor(INT8), </I>
-
-<I>request_addr(INT64), request_flags(INT64)</I>
-
-<P>
-</DL>
-<A NAME="lbAN">&nbsp;</A>
-<H3>TASK SCHEDULE ACTIVITIES </H3>
-
-You could use
-<I>addevent.tskdispatch</I>
-
-to trace the task scheduler activities. It contains two sub event hooks:
-
-<DL COMPACT>
-<DT><B>addevent.tskdispatch.ctxswitch </B>
-
-<DD>
-Trace the process context switch
-<P>
-Data format is:
-<P>
-<I>common_data, prev_pid(INT32), next_pid(INT32), prev_state(INT8)</I>
-
-<DT><B>addevent.tskdispatch.cpuidle </B>
-
-<DD>
-Trace when cpu goes idle
-<P>
-Data format is:
-<P>
-<I>common_data, current_pid(INT32)</I>
-
-<P>
-</DL>
-<A NAME="lbAO">&nbsp;</A>
-<H3>SCSI ACTIVITIES </H3>
-
-You could use
-<I>addevent.scsi</I>
-
-to trace the scsi layer activities. It contains four sub event hooks:
-
-<DL COMPACT>
-<DT><B>addevent.scsi.ioentry </B>
-
-<DD>
-mid-layer prepares a IO request
-<P>
-Data format is:
-<P>
-<I>common_data, disk_major(INT8), disk_minor(INT8), device_state(INT8), request_addr(INT64)</I>
-
-<DT><B>addevent.scsi.iodispatching </B>
-
-<DD>
-Dispatch a command to the low-level driver
-<P>
-Data format is:
-<P>
-<I>common_data, host(INT8), channel(INT8), lun(INT8), dev_id(INT8), </I>
-
-<I>device_state(INT8), data_direction(INT8), reqbuf_addr(INT64),</I>
-
-<I>reqbuf_len(INT32), request_addr(INT64)</I>
-
-<P>
-<DT><B>addevent.scsi.iodone </B>
-
-<DD>
-I/O is done by low-level driver
-<P>
-Data format is:
-<P>
-<I>common_data, host(INT8), channel(INT8), lun(INT8), dev_id(INT8), </I>
-
-<I>device_state(INT8), data_direction(INT8), request_addr(INT64)</I>
-
-<P>
-<DT><B>addevent.scsi.iocompleted </B>
-
-<DD>
-mid-layer processed the completed IO
-<P>
-Data format is:
-<P>
-<I>common_data, host(INT8), channel(INT8), lun(INT8), dev_id(INT8), </I>
-
-<I>device_state(INT8), data_direction(INT8), request_addr(INT64),</I>
-
-<I>bytes_done(INT32)</I>
-
-<P>
-</DL>
-<A NAME="lbAP">&nbsp;</A>
-<H3>PAGE FAULT </H3>
-
-You could use 
-<I>addevent.pagefault</I>
-
-to trace page fault events. It contains only one sub event hooks:
-
-<DL COMPACT>
-<DT><B>addevent.pagefault </B>
-
-<DD>
-<P>
-Data format is:
-<P>
-<I>common_data, memory_address(INT64), write_access(INT8)</I>
-
-<P>
-</DL>
-<A NAME="lbAQ">&nbsp;</A>
-<H3>NETWORK DEVICE ACTIVITIES </H3>
-
-You could use
-<I>addevent.netdev</I>
-
-to trace the network device  activities. It contains two sub event hooks:
-
-<DL COMPACT>
-<DT><B>addevent.netdev.receive </B>
-
-<DD>
-network device receives a packet
-<P>
-Data format is:
-<P>
-<I>common_data, netdev_name(STRING), data_length(INT32), protocol(INT16), </I>
-
-<I>buffer_length(INT32)</I>
-
-<P>
-<DT><B>addevent.netdev.transmit</B>
-
-<DD>
-A packet will be sent out by network device
-<P>
-Data format is:
-<P>
-<I>common_data, netdev_name(STRING), data_length(INT32), protocol(INT16), </I>
-
-<I>buffer_length(INT32)</I>
-
-<P>
-<P>
-</DL>
-<A NAME="lbAR">&nbsp;</A>
-<H3>IO SYSCALLS </H3>
-
-You could use
-<I>addevent.iosyscall</I>
-
-to trace the detail activities of io related system calls. 
-It contains 16 entry hooks and 16 corresponding
-return hooks.
-<P>
-All the return hooks will only log the common_data and
-the return value. So in the following subsections, only the entry 
-hooks will be listed:
-<P>
-
-<DL COMPACT>
-<DT><B>addevent.iosyscall.open.entry </B>
-
-<DD>
-the entry of sys_open
-<P>
-Data format is:
-<P>
-<I>common_data, filename(STRING), flags(INT32), mode(INT32)</I>
-
-<P>
-<DT><B>addevent.iosyscall.close.entry </B>
-
-<DD>
-the entry of sys_close
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.read.entry </B>
-
-<DD>
-the entry of sys_read
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), buf_addr(INT64), count(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.write.entry </B>
-
-<DD>
-the entry of sys_write
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), buf_addr(INT64), count(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.readv.entry </B>
-
-<DD>
-the entry of sys_readv
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), vector_addr(INT64), count(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.writev.entry </B>
-
-<DD>
-the entry of sys_writev
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), vector_addr(INT64), count(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.pread64.entry </B>
-
-<DD>
-the entry of sys_pread64
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), buff_addr(INT64), count(INT64), offset(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.pwrite64.entry </B>
-
-<DD>
-the entry of sys_pwrite64
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), buff_addr(INT64), count(INT64), offset(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.readahead.entry </B>
-
-<DD>
-the entry of sys_readahead
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), offset(INT64), count(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.senfile.entry </B>
-
-<DD>
-the entry of sys_sendfile and sys_sendfile64
-<P>
-Data format is:
-<P>
-<I>common_data, out_fd(INT64), in_fd(INT64), offset_uaddr(INT64), count(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.lseek.entry </B>
-
-<DD>
-the entry of sys_lseek
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), offset(INT64), whence(INT8)</I>
-
-<P>
-<DT><B>addevent.iosyscall.llseek.entry </B>
-
-<DD>
-the entry of sys_llseek
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), offset_high(INT64), offset_low(INT64), </I>
-
-<I>result_addr(INT64), whence(INT8)</I>
-
-<P>
-<DT><B>addevent.iosyscall.sync.entry </B>
-
-<DD>
-the entry of sys_sync
-<P>
-Data format is:
-<P>
-<I>common_data</I>
-
-<P>
-<DT><B>addevent.iosyscall.fsync.entry </B>
-
-<DD>
-the entry of sys_fsync
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.fdatasync.entry </B>
-
-<DD>
-the entry of sys_fdatasync
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64)</I>
-
-<P>
-<DT><B>addevent.iosyscall.flock.entry </B>
-
-<DD>
-the entry of sys_flock
-<P>
-Data format is:
-<P>
-<I>common_data, fd(INT64), operation(INT32)</I>
-
-<P>
-</DL>
-<A NAME="lbAS">&nbsp;</A>
-<H3>Asynchronous IO </H3>
-
-You could use
-<I>addevent.aio</I>
-
-to trace the detail activities of AIO related calls(most of them
-are AIO system calls). 
-It contains 6 entry hooks and 6 corresponding return hooks.
-<P>
-All the return hooks will only log the common_data and
-the return value. So in the following subsections, only the entry 
-hooks will be listed:
-<P>
-
-<DL COMPACT>
-<DT><B>addevent.aio.io_setup.entry </B>
-
-<DD>
-Fired by calling io_setup from user space. The corresponding
-system call is sys_io_setup, which will create an aio_context
-capable of receiving at least maxevents.
-<P>
-Data format is:
-<P>
-<I>common_data, nr_events(INT32), ctxp_uaddr(INT64)</I>
-
-<P>
-<DT><B>addevent.aio.io_submit.entry </B>
-
-<DD>
-Fired by calling io_submit from user space. The corresponding
-system call is sys_io_submit which will queue the nr iocbs 
-pointed to by iocbpp_uaddr for processing.
-<P>
-Data format is:
-<P>
-<I>common_data, ctx_id(INT64), nr(INT32), iocbpp_uaddr(INT64)</I>
-
-<P>
-<DT><B>addevent.aio.io_submit_one.entry </B>
-
-<DD>
-Called by sys_io_submit. It will iterate iocbpp and process them
-one by one
-<P>
-Data format is:
-<P>
-<I>common_data, ctx(INT64), user_iocb_uaddr(INT64), aio_lio_opcode(INT16), </I>
-
-<I>aio_reqprio(INT16), aio_fildes(INT32), aio_buf(INT64), aio_nbytes(INT64),</I>
-
-<I>aio_offset(INT64)</I>
-
-<P>
-<DT><B>addevent.aio.io_getevents.entry </B>
-
-<DD>
-Fired by calling io_getevents from user space. The corresponding
-system call is sys_io_getevents, which will attempt to
-read at least min_nr events and up to nr events from  the completion
-queue for the aio_context specified by ctx_id.
-<P>
-Data format is:
-<P>
-<I>common_data, ctx_id(INT64), min_nr(INT32), nr(INT32), events_uaddr(INT64),</I>
-
-<I>tv_sec(INT32), tv_nsec(INT32)</I>
-
-<P>
-<DT><B>addevent.aio.io_destroy.entry </B>
-
-<DD>
-Fired by calling io_destroy from user space. The corresponding
-system call is sys_io_destroy, which will destroy
-the aio_context specified.
-<P>
-Data format is:
-<P>
-<I>common_data, ctx(INT64)</I>
-
-<P>
-<DT><B>addevent.aio.io_cancel.entry </B>
-
-<DD>
-Fired by calling io_cancel from user space. The corresponding
-system call is sys_io_cancel, which will attempt to cancel an 
-iocb previously passed to io_submit.
-<P>
-Data format is:
-<P>
-<I>common_data, ctx_id(INT64), iocb_uaddr(INT64), result_uaddr(INT64)</I>
-
-<P>
-</DL>
-<A NAME="lbAT">&nbsp;</A>
-<H3>SUNRPC</H3>
-
-You could use
-<I>addevent.sunrpc</I>
-
-to trace the details of SUNRPC activities. It is now divided into three
-groups: high-level client operation event hooks (addevent.sunrpc.clnt),
-high-level server operation event hooks (addevent.sunrpc.svc) and RPC
-scheduler operation event hooks (addevent.sunrpc.sched). 
-It contains 19 entry hooks and 19 corresponding return hooks.
-<P>
-All the return hooks will only log the common_data and the return value.
-So in the following subsections, only the entry hooks will be listed:
-<P>
-
-<DL COMPACT>
-<DT><B>addevent.sunrpc.clnt.create_client.entry </B>
-
-<DD>
-Fires when an RPC client is to be created
-<P>
-Data format is:
-<P>
-<I>common_data, servername(STRING), prog(INT64), vers(INT8),</I>
-
-<I>prot(INT16), port(INT16), authflavor(INT8)</I>
-
-<P>
-<DT><B>addevent.sunrpc.clnt.clone_client.entry </B>
-
-<DD>
-Fires when the RPC client structure is to be cloned
-<P>
-Data format is:
-<P>
-<I>common_data, servername(STRING), prog(INT64), vers(INT8),</I>
-
-<I>prot(INT16), port(INT16), authflavor(INT8)</I>
-
-<P>
-<DT><B>addevent.sunrpc.clnt.shutdown_client.entry </B>
-
-<DD>
-Fires when an RPC client is to be shut down
-<P>
-Data format is:
-<P>
-<I>common_data, servername(STRING), prog(INT64), clones(INT16),</I>
-
-<I>tasks(INT16), rpccnt(INT32)</I>
-
-<P>
-<DT><B>addevent.sunrpc.clnt.bind_new_program.entry </B>
-
-<DD>
-Fires when a new RPC program is to be bound an existing client
-<P>
-Data format is:
-<P>
-<I>common_data, servername(STRING), old_prog(INT64), old_vers(INT8),</I>
-
-<I>prog(INT64), vers(INT8)</I>
-
-<P>
-<DT><B>addevent.sunrpc.clnt.call_sync.entry </B>
-
-<DD>
-Fires when an RPC procedure is to be called synchronously
-<P>
-Data format is:
-<P>
-<I>common_data, servername(STRING), prog(INT64), vers(INT8),</I>
-
-<I>proc(INT64), flags(INT64) </I>
-
-<P>
-<DT><B>addevent.sunrpc.clnt.call_async.entry </B>
-
-<DD>
-Fires when an RPC procedure is to be called asynchronously
-<P>
-Data format is:
-<P>
-<I>common_data, servername(STRING), prog(INT64), vers(INT8),</I>
-
-<I>proc(INT64), flags(INT64) </I>
-
-<P>
-<DT><B>addevent.sunrpc.clnt.restart_call.entry </B>
-
-<DD>
-Fires when want to restart a task
-<P>
-Data format is:
-<P>
-<I>common_data, tk_pid(INT64), tk_flags(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.register.entry </B>
-
-<DD>
-Fires when an RPC service is to be registered with the local
-portmapper
-<P>
-Data format is:
-<P>
-<I>common_data, sv_name(STRING), prog(INT64), prot(INT16),</I>
-
-<I>port(INT32)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.create.entry </B>
-
-<DD>
-Fires when an RPC service is to be created
-<P>
-Data format is:
-<P>
-<I>common_data, prog(INT64), pg_nvers(INT8), bufsize(INT32)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.destroy.entry </B>
-
-<DD>
-Fires when an RPC service is to be destroyed
-<P>
-Data format is:
-<P>
-<I>common_data, sv_name(STRING), sv_prog(INT64), sv_nrthreads(INT32)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.process.entry </B>
-
-<DD>
-Fires when an RPC request is to be processed
-<P>
-Data format is:
-<P>
-<I>common_data, sv_name(STRING), sv_prog(INT64), peer_ip(INT64),</I>
-
-<I>rq_xid(INT64), rq_prog(INT64), rq_vers(INT8), rq_proc(INT8)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.authorise.entry </B>
-
-<DD>
-Fires when an RPC request is to be authorised
-<P>
-Data format is:
-<P>
-<I>common_data, sv_name(STRING), peer_ip(INT64), rq_xid(INT64),</I>
-
-<I>rq_prog(INT64), rq_vers(INT8), rq_proc(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.recv.entry </B>
-
-<DD>
-Fires when receiving the next request on any socket
-<P>
-Data format is:
-<P>
-<I>common_data, sv_name(STRING), timeout(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.send.entry </B>
-
-<DD>
-Fires when want to return reply to the client
-<P>
-Data format is:
-<P>
-<I>sv_name(STRING), peer_ip(INT64), rq_xid(INT64), rq_prog(INT64), </I>
-
-<I>rq_vers(INT8), rq_proc(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.svc.drop.entry </B>
-
-<DD>
-Fires when a request is to be dropped
-<P>
-Data format is:
-<P>
-<I>common_data, sv_name(STRING), peer_ip(INT64), rq_xid(INT64),</I>
-
-<I>rq_prog(INT64), rq_vers(INT8), rq_proc(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.sched.new_task.entry </B>
-
-<DD>
-Fires when creating a new task for the specified client
-<P>
-Data format is:
-<P>
-<I>common_data, xid(INT64), prog(INT64), vers(INT8), prot(INT64),</I>
-
-<I>flags(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.sched.release_task.entry </B>
-
-<DD>
-Fires when releasing a task
-<P>
-Data format is:
-<P>
-<I>common_data, xid(INT64), prog(INT64), vers(INT8), prot(INT64),</I>
-
-<I>flags(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.sched.execute.entry </B>
-
-<DD>
-Fires when an RPC request is to be executed
-<P>
-Data format is:
-<P>
-<I>common_data, xid(INT64), prog(INT64), vers(INT8), prot(INT64),</I>
-
-<I>tk_pid(INT64), tk_flags(INT64)</I>
-
-<P>
-<DT><B>addevent.sunrpc.sched.delay.entry </B>
-
-<DD>
-Fires when want to delay an RPC request
-<P>
-Data format is:
-<P>
-<I>common_data, xid(INT64), prog(INT64), tk_pid(INT64),</I>
-
-<I>tk_flags(INT64), delay(INT64)</I>
-
-<P>
-</DL>
-<A NAME="lbAU">&nbsp;</A>
-<H3>NFS </H3>
-
-You could use
-<I>addevent.nfs</I>
-
-to trace the detail activities of nfs on client side. 
-It divided into three groups: nfs file operation event hooks(addevent.nfs.fop),
-nfs address space operation event hooks(addevent.nfs.aop), nfs proc event hooks(addevent.nfs.proc).
-It contains 36 entry hooks and 33 corresponding return hooks
-<P>
-All the return hooks will only log the common_data and
-the return value. So in the following subsections, only the entry 
-hooks will be listed:
-<P>
-
-<DL COMPACT>
-<DT><B>addevent.nfs.fop.llseek.entry </B>
-
-<DD>
-the entry of nfs_file_llseek 
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>offset(INT32), origin(INR8)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.read.entry </B>
-
-<DD>
-the entry of do_sync_read 
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>buf_addr(INT64), count(INT64) , offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.write.entry </B>
-
-<DD>
-the entry of do_sync_write
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>buf_addr(INT64), count(INT64) , offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.aio_read.entry </B>
-
-<DD>
-the entry of nfs_file_read 
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>buf_addr(INT64), count(INT64) , offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.aio_write.entry </B>
-
-<DD>
-the entry of nfs_file_read 
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>buf_addr(INT64), count(INT64) , offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.mmap.entry </B>
-
-<DD>
-the entry of nfs_file_mmap
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>vm_start(INT64), vm_end(INT64) , vm_flags(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.open.entry </B>
-
-<DD>
-the entry of nfs_file_open
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>flag(INT32), filename(STRING)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.flush.entry </B>
-
-<DD>
-the entry of nfs_file_flush
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>ndirty(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.release.entry </B>
-
-<DD>
-the entry of nfs_file_release
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>mode(INT16)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.fsync.entry </B>
-
-<DD>
-the entry of nfs_fsync
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>ndirty(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.lock.entry </B>
-
-<DD>
-the entry of nfs_lock
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>fl_start(INT64), fl_end(INT64), fl_type(INT8), fl_flag(INT8), cmd(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.sendfile.entry </B>
-
-<DD>
-the entry of nfs_file_sendfile
-<P>
-Data format is:
-<P>
-<I>common_data, major_device(INT8), minor_devide(INT8), fileid(INT32), </I>
-
-<I>count(INT64), ppos(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.fop.checkflags.entry </B>
-
-<DD>
-the entry of nfs_check_flags
-<P>
-Data format is:
-<P>
-<I>flag(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.readpage.entry </B>
-
-<DD>
-the entry of nfs_readpage
-<P>
-Data format is:
-<P>
-<I>fileid(INT64), rsize(INT32), page_address(INT64), page_index(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.readpages.entry </B>
-
-<DD>
-the entry of nfs_readpages
-<P>
-Data format is:
-<P>
-<I>fileid(INT64), rpages(INT32), nr_pages(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.writepage.entry </B>
-
-<DD>
-the entry of nfs_writepage
-<P>
-Data format is:
-<P>
-<I>fileid(INT64), wsize(INT32), page_address(INT64), page_index(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.writepages.entry </B>
-
-<DD>
-the entry of nfs_writepages
-<P>
-Data format is:
-<P>
-<I>fileid(INT64), wpages(INT32), nr_to_write(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.prepare_write.entry </B>
-
-<DD>
-the entry of nfs_prepare_write
-<P>
-Data format is:
-<P>
-<I>fileid(INT64), page_address(INT64), page_index(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.commit_write.entry </B>
-
-<DD>
-the entry of nfs_commit_write
-<P>
-Data format is:
-<P>
-<I>fileid(INT64), page_address(INT64), page_index(INT64),offset(INT32),count(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.set_page_dirty.entry </B>
-
-<DD>
-the entry of __set_page_dirty_nobuffers
-<P>
-Data format is:
-<P>
-<I>page_address(INT64), page_flag(INT8)</I>
-
-<P>
-<DT><B>addevent.nfs.aop.release_page.entry </B>
-
-<DD>
-the entry of nfs_release_page 
-<P>
-Data format is:
-<P>
-<I>page_address(INT64), page_index(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.lookup.entry </B>
-
-<DD>
-the entry of nfs_proc_lookup , nfs3_proc_lookup and nfs4_proc_lookup
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>filename(STRING)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.read.entry </B>
-
-<DD>
-the entry of nfs_proc_read, nfs3_proc_read and nfs4_proc_read
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>count(INT32),offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.write.entry </B>
-
-<DD>
-the entry of nfs_proc_write, nfs3_proc_write and nfs4_proc_write
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>count(INT32),offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.commit.entry </B>
-
-<DD>
-Fires when client writes the buffered data to disk,the buffered data is asynchronously written by client before .
-The commit function works in sync way,not exist in NFSV2
-<P>
-the entry of  nfs3_proc_commit and nfs4_proc_commit
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>count(INT32),offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.read_setup.entry </B>
-
-<DD>
-The read_setup function is used to setup a read rpc task,not do a real read operation
-<P>
-the entry of  nfs_proc_read_setup, nfs3_proc_read_setup and nfs4_proc_read_setup
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>count(INT32),offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.write_setup.entry </B>
-
-<DD>
-The write_setup function is used to setup a write rpc task,not do a real write operation
-<P>
-the entry of  nfs_proc_write_setup, nfs3_proc_write_setup and nfs4_proc_write_setup
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>how(INT8), count(INT32),offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.commit_setup.entry </B>
-
-<DD>
-The commit_setup function is used to setup a commit rpc task,not do a real commit operation.It is not exist in NFSV2
-<P>
-the entry of nfs3_proc_commit_setup and nfs4_proc_commit_setup
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>how(INT8), count(INT32),offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.read_done.entry </B>
-
-<DD>
-Fires when a read reply is received or some read error occur (timeout or socket shutdown)
-<P>
-the entry of nfs_read_done, nfs3_read_done and nfs4_read_done
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>status(INT32), count(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.write_done.entry </B>
-
-<DD>
-Fires when a write reply is received or some write error occur (timeout or socket shutdown)
-<P>
-the entry of nfs_write_done, nfs3_write_done and nfs4_write_done
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>status(INT32), count(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.commit_done.entry </B>
-
-<DD>
-Fires when a commit reply is received or some commit operation error occur (timeout or socket shutdown)
-<P>
-the entry of nfs_commit_done, nfs3_commit_done and nfs4_commit_done
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>status(INT32), count(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.open.entry </B>
-
-<DD>
-the entry of nfs_open 
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>filename(STRING), flag(INT32), mode(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.release.entry </B>
-
-<DD>
-the entry of nfs_release
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>filename(STRING), flag(INT32), mode(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.create.entry </B>
-
-<DD>
-the entry of nfs_proc_create, nfs3_proc_create, nfs4_proc_create
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>filename(STRING), mode(INT32)</I>
-
-<P>
-<DT><B>addevent.nfs.proc.rename.entry </B>
-
-<DD>
-the entry of nfs_proc_rename, nfs3_proc_rename, nfs4_proc_rename
-<P>
-Data format is:
-<P>
-<I>version(INT8), major_old(INT8), minor_old(INT8), old_fileid(INT64), old_name(STRING),</I>
-
-<I>major_new(INT8), minor_new(INT8), new_fileid(INT64), new_name(STRING) </I>
-
-<P>
-<DT><B>addevent.nfs.proc.remove.entry </B>
-
-<DD>
-the entry of nfs_proc_remove, nfs3_proc_remove, nfs4_proc_remove
-<P>
-Data format is:
-<P>
-<I>major_dev(INT8), minor_dev(INT8), fileid(INT64), version(INT8),</I>
-
-<I>filename(STRING)</I>
-
-<P>
-</DL>
-<A NAME="lbAV">&nbsp;</A>
-<H3>NFSD </H3>
-
-You could use
-<I>addevent.nfsd</I>
-
-to trace the detail activities of nfs on server side. 
-It divided into two groups: nfsd operation event hooks(addevent.nfsd.op),
-nfsd proc event hooks(addevent.nfsd.proc).
-It contains 19 entry hooks and 19 corresponding return hooks
-<P>
-All the return hooks will only log the common_data and
-the return value. So in the following subsections, only the entry 
-hooks will be listed:
-<P>
-
-<DL COMPACT>
-<DT><B>addevent.nfsd.dispatch.entry </B>
-
-<DD>
-Fires when server receives a NFS operation from client
-<P>
-the entry of nfsd_dispatch 
-<P>
-Data format is:
-<P>
-<I>proto(INT8), version(INT8), xid(INT32), proc(INT32),client_ip(INT32)</I>
-
-<P>
-<DT><B>addevent.nfsd.open.entry </B>
-
-<DD>
-the entry of nfsd_open
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>type(INT32), access(INT32)</I>
-
-<P>
-<DT><B>addevent.nfsd.read.entry </B>
-
-<DD>
-the entry of nfsd_read
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>count(INT64), offset(INT64), iov_len(INT64), vlen(INT64)</I>
-
-<P>
-<DT><B>addevent.nfsd.write.entry </B>
-
-<DD>
-the entry of nfsd_write
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>count(INT64), offset(INT64), iov_len(INT64), vlen(INT64)</I>
-
-<P>
-<DT><B>addevent.nfsd.lookup.entry </B>
-
-<DD>
-the entry of nfsd_lookup
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>filename(STRING)</I>
-
-<P>
-<DT><B>addevent.nfsd.commit.entry </B>
-
-<DD>
-the entry of nfsd_commit
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>count(INT64), offset(INT64)</I>
-
-<P>
-<DT><B>addevent.nfsd.create.entry </B>
-
-<DD>
-Fires when client creates a file(regular,dir,device,fifo) on server side,
-sometimes nfsd will call nfsd_create_v3 instead of this function
-<P>
-the entry of nfsd_create
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>filename(STRING), type(INT32), iap_valid(INT16), iap_mode(INT32)</I>
-
-<P>
-<DT><B>addevent.nfsd.createv3.entry </B>
-
-<DD>
-Fires when client creates a regular file or set file attributes on server side,
-only called by nfsd3_proc_create and nfsd4_open(op_claim_type is NFS4_OPEN_CLAIM_NULL)
-<P>
-the entry of nfsd_create_v3
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>filename(STRING), createmode(INT8), iap_valid(INT16), iap_mode(INT32)</I>
-
-<P>
-<DT><B>addevent.nfsd.unlink.entry </B>
-
-<DD>
-the entry of nfsd_unlink
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), </I>
-
-<I>filename(STRING), type(INT32)</I>
-
-<P>
-<DT><B>addevent.nfsd.rename.entry </B>
-
-<DD>
-the entry of nfsd_rename
-<P>
-Data format is:
-<P>
-<I>old_fhsize(INT8), old_fh0(INT64), old_fh1(INT64), old_fh2(INT64), old_name(STRING)</I>
-
-<I>new_fhsize(INT8), new_fh0(INT64), new_fh1(INT64), new_fh2(INT64), new_name(STRING)</I>
-
-<P>
-<DT><B>addevent.nfsd.close.entry </B>
-
-<DD>
-the entry of nfsd_close
-<P>
-Data format is:
-<P>
-<I>filename(STRING)</I>
-
-<BR>&nbsp;
-<DT><B>addevent.nfsd.proc.lookup.entry </B>
-
-<DD>
-the entry of nfsd_proc_lookup, nfsd3_proc_lookup
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), version(INT8)</I>
-
-<I>filename(STRING)</I>
-
-<BR>&nbsp;
-<DT><B>addevent.nfsd.proc.read.entry </B>
-
-<DD>
-the entry of nfsd_proc_read, nfsd3_proc_read
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), version(INT8)</I>
-
-<I>count(INT64), offset(INT64), iov_len(INT64), vlen(INT64)</I>
-
-<BR>&nbsp;
-<DT><B>addevent.nfsd.proc.write.entry </B>
-
-<DD>
-the entry of nfsd_proc_write, nfsd3_proc_write
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), version(INT8)</I>
-
-<I>count(INT64), offset(INT64), iov_len(INT64), vlen(INT64)</I>
-
-<BR>&nbsp;
-<DT><B>addevent.nfsd.proc.commit.entry </B>
-
-<DD>
-the entry of nfsd_proc_commit, nfsd3_proc_commit
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), version(INT8)</I>
-
-<I>count(INT64), offset(INT64)</I>
-
-<BR>&nbsp;
-<DT><B>addevent.nfsd.proc.commit.entry </B>
-
-<DD>
-the entry of nfsd4_proc_compound
-<P>
-Data format is:
-<P>
-<I>number(INT32)</I>
-
-<BR>&nbsp;
-<DT><B>addevent.nfsd.proc.remove.entry </B>
-
-<DD>
-the entry of nfsd4_proc_compound
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), version(INT8)</I>
-
-<I>filename(STRING)</I>
-
-<BR>&nbsp;
-<DT><B>addevent.nfsd.proc.rename.entry </B>
-
-<DD>
-the entry of nfsd_proc_rename, nfsd3_proc_rename
-<P>
-Data format is:
-<P>
-<I>old_fhsize(INT8), old_fh0(INT64), old_fh1(INT64), old_fh2(INT64), old_name(STRING)</I>
-
-<I>new_fhsize(INT8), new_fh0(INT64), new_fh1(INT64), new_fh2(INT64), new_name(STRING)</I>
-
-<P>
-<DT><B>addevent.nfsd.proc.create.entry </B>
-
-<DD>
-the entry of nfsd_proc_create, nfsd3_proc_create
-<P>
-Data format is:
-<P>
-<I>fh_size(INT8), fhandle0(INT64), fhandle1(INT64), fhandle2(INT64), version(INT8)</I>
-
-<I>filename(STRING)</I>
-
-<P>
-</DL>
-<A NAME="lbAW">&nbsp;</A>
-<H2>SEE ALSO</H2>
-
-<I><A HREF="stap.1.html">stap</A></I>(1)
-
-<I><A HREF="lket-b2a.1.html">lket-b2a</A></I>(1)
-
-<P>
-
-<HR>
-<A NAME="index">&nbsp;</A><H2>Index</H2>
-<DL>
-<DT><A HREF="#lbAB">NAME</A><DD>
-<DT><A HREF="#lbAC">DESCRIPTION</A><DD>
-<DT><A HREF="#lbAD">BINARY TRACING</A><DD>
-<DT><A HREF="#lbAE">EVENT REGISTER</A><DD>
-<DT><A HREF="#lbAF">CUSTOMIZED TRACE DATA</A><DD>
-<DT><A HREF="#lbAG">EXAMPLES</A><DD>
-<DT><A HREF="#lbAH">EVENT HOOKS AND TRACE DATA FORMAT</A><DD>
-<DL>
-<DT><A HREF="#lbAI">EVENT REGISTER </A><DD>
-<DT><A HREF="#lbAJ">SYSTEM CALLS </A><DD>
-<DT><A HREF="#lbAK">PROCESS CREATION </A><DD>
-<DT><A HREF="#lbAL">SIGNAL</A><DD>
-<DT><A HREF="#lbAM">IO SCHEDULER ACTIVITIES </A><DD>
-<DT><A HREF="#lbAN">TASK SCHEDULE ACTIVITIES </A><DD>
-<DT><A HREF="#lbAO">SCSI ACTIVITIES </A><DD>
-<DT><A HREF="#lbAP">PAGE FAULT </A><DD>
-<DT><A HREF="#lbAQ">NETWORK DEVICE ACTIVITIES </A><DD>
-<DT><A HREF="#lbAR">IO SYSCALLS </A><DD>
-<DT><A HREF="#lbAS">Asynchronous IO </A><DD>
-<DT><A HREF="#lbAT">SUNRPC</A><DD>
-<DT><A HREF="#lbAU">NFS </A><DD>
-<DT><A HREF="#lbAV">NFSD </A><DD>
-</DL>
-<DT><A HREF="#lbAW">SEE ALSO</A><DD>
-</DL>
-<HR>
-This document was created by
-<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
-using the manual pages.<BR>
-Time: 16:17:39 GMT, March 06, 2007
-</BODY>
-</HTML>
This page took 0.064177 seconds and 5 git commands to generate.