summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Cohen <wcohen@redhat.com>2008-11-11 17:28:00 -0500
committerWilliam Cohen <wcohen@redhat.com>2008-11-11 17:28:00 -0500
commit011987b8162b56b4932bae558364e82b8d76f7a1 (patch)
tree3cfb6cf4621d9fd32c8e9c54341e9e4bc0ffef5c
parent3ad61cb5af1fc55a7ffb58e81b3e27a8c454e6b5 (diff)
downloadsystemtap-steved-011987b8162b56b4932bae558364e82b8d76f7a1.tar.gz
systemtap-steved-011987b8162b56b4932bae558364e82b8d76f7a1.tar.xz
systemtap-steved-011987b8162b56b4932bae558364e82b8d76f7a1.zip
Add documentation for context.stp and networking.stp.
-rw-r--r--doc/SystemTap_Tapset_Reference/en-US/Tapset_Reference.xml2
-rw-r--r--doc/SystemTap_Tapset_Reference/en-US/context.xml233
-rw-r--r--doc/SystemTap_Tapset_Reference/en-US/networking.xml100
-rw-r--r--tapset/context.stp239
-rw-r--r--tapset/networking.stp97
5 files changed, 664 insertions, 7 deletions
diff --git a/doc/SystemTap_Tapset_Reference/en-US/Tapset_Reference.xml b/doc/SystemTap_Tapset_Reference/en-US/Tapset_Reference.xml
index 4603b238..f10159b8 100644
--- a/doc/SystemTap_Tapset_Reference/en-US/Tapset_Reference.xml
+++ b/doc/SystemTap_Tapset_Reference/en-US/Tapset_Reference.xml
@@ -7,6 +7,8 @@
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include href="context.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include href="networking.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="timestamp.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<index />
diff --git a/doc/SystemTap_Tapset_Reference/en-US/context.xml b/doc/SystemTap_Tapset_Reference/en-US/context.xml
new file mode 100644
index 00000000..df271d0f
--- /dev/null
+++ b/doc/SystemTap_Tapset_Reference/en-US/context.xml
@@ -0,0 +1,233 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<!-- This file is extracted from the tapset files
+ Do not modify this file -->
+<chapter id="context_stp">
+ <title>Context Functions</title>
+ <para>
+ The context functions provide additional information about the where
+ the event occurred.
+ The contact functions can provide information such as a backtrace
+ where the event occured
+ and the current register values for the processor.
+ </para>
+<formalpara id="print_regs">
+ <title>print_regs()</title>
+ <indexterm><primary>print_regs</primary></indexterm>
+ <para>
+ Print a register dump.
+ </para>
+</formalpara>
+<formalpara id="print_backtrace">
+ <title>print_backtrace()</title>
+ <indexterm><primary>print_backtrace</primary></indexterm>
+ <para>
+ Equivalent to <command>print_stack(backtrace())</command>,
+ except that deeper stack nesting may be supported. Return nothing.
+ </para>
+</formalpara>
+<formalpara id="backtrace">
+ <title>backtrace:string()</title>
+ <indexterm><primary>backtrace</primary></indexterm>
+ <para>
+ Return a string of hex addresses that are a backtrace of the
+ stack. It may be truncated due to maximum string length.
+ </para>
+</formalpara>
+<formalpara id="execname">
+ <title>execname:string()</title>
+ <indexterm><primary>execname</primary></indexterm>
+ <para>
+ Return the name of the current process.
+ </para>
+</formalpara>
+<formalpara id="pid">
+ <title>pid:long ()</title>
+ <indexterm><primary>pid</primary></indexterm>
+ <para>
+ Return the id of the current process.
+ </para>
+</formalpara>
+<formalpara id="tid">
+ <title>tid:long()</title>
+ <indexterm><primary>tid</primary></indexterm>
+ <para>
+ Return the id of the current thread.
+ </para>
+</formalpara>
+<formalpara id="ppid">
+ <title>ppid:long()</title>
+ <indexterm><primary>ppid</primary></indexterm>
+ <para>
+ Return the id of the parent process.
+ </para>
+</formalpara>
+<formalpara id="pexecname">
+ <title>pexecname:string()</title>
+ <indexterm><primary>pexecname</primary></indexterm>
+ <para>
+ Return the name of the parent process.
+ </para>
+</formalpara>
+<formalpara id="gid">
+ <title>gid:long()</title>
+ <indexterm><primary>gid</primary></indexterm>
+ <para>
+ Return the gid of the current process.
+ </para>
+</formalpara>
+<formalpara id="egid">
+ <title>egid:long()</title>
+ <indexterm><primary>egid</primary></indexterm>
+ <para>
+ Return the effective gid of the current process.
+ </para>
+</formalpara>
+<formalpara id="uid">
+ <title>uid:long()</title>
+ <indexterm><primary>uid</primary></indexterm>
+ <para>
+ Return the uid of the current process.
+ </para>
+</formalpara>
+<formalpara id="euid">
+ <title>euid:long()</title>
+ <indexterm><primary>euid</primary></indexterm>
+ <para>
+ Return the effective uid of the current process.
+ </para>
+</formalpara>
+<formalpara id="cpuid">
+ <title>cpuid:long()</title>
+ <indexterm><primary>cpuid</primary></indexterm>
+ <para>
+ Return the current cpu number.
+ </para>
+</formalpara>
+<formalpara id="cpu">
+ <title>cpu:long()</title>
+ <indexterm><primary>cpu</primary></indexterm>
+ <para>
+ Return the current cpu number.
+ </para>
+</formalpara>
+<formalpara id="print_stack">
+ <title>print_stack(stk:string)</title>
+ <indexterm><primary>print_stack</primary></indexterm>
+ <para>
+ Perform a symbolic lookup of the addresses in the given string,
+ which is assumed to be the result of a prior call to
+ <xref linkend="backtrace"/>.
+ Print one line per address, including the address, the
+ name of the function containing the address, and an estimate of
+ its position within that function. Return nothing.
+ </para>
+</formalpara>
+<formalpara id="pp">
+ <title>pp:string()</title>
+ <indexterm><primary>pp</primary></indexterm>
+ <para>
+ Return the probe point associated with the currently running
+ probe handler, including alias and wildcard expansion effects.
+ </para>
+</formalpara>
+<formalpara id="probefunc">
+ <title>probefunc:string()</title>
+ <indexterm><primary>probefunc</primary></indexterm>
+ <para>
+ Return the probe point's function name, if known.
+ </para>
+</formalpara>
+<formalpara id="probemod">
+ <title>probemod:string()</title>
+ <indexterm><primary>probemod</primary></indexterm>
+ <para>
+ Return the probe point's module name, if known.
+ </para>
+</formalpara>
+<formalpara id="registers_valid">
+ <title>registers_valid:long()</title>
+ <indexterm><primary>registers_valid</primary></indexterm>
+ <para>
+ Return 1 if register() and u_register() can be used
+ in the current context, or 0 otherwise.
+ For example, <command>registers_valid()</command> returns 0
+ when called from a begin or end probe.
+ </para>
+</formalpara>
+<formalpara id="user_mode">
+ <title>user_mode:long()</title>
+ <indexterm><primary>user_mode</primary></indexterm>
+ <para>
+ Return 1 if the probe point occurred in user-mode.
+ </para>
+</formalpara>
+<formalpara id="is_return">
+ <title>is_return:long()</title>
+ <indexterm><primary>is_return</primary></indexterm>
+ <para>
+ Return 1 if the probe point is a return probe.
+ <emphasis>Deprecated.</emphasis>
+ </para>
+</formalpara>
+<formalpara id="target">
+ <title>target:long()</title>
+ <indexterm><primary>target</primary></indexterm>
+ <para>
+ Return the pid of the target process.
+ </para>
+</formalpara>
+<formalpara id="module_name">
+ <title>module_name:string()</title>
+ <indexterm><primary>module_name</primary></indexterm>
+ <para>
+ FIXME: need description.
+ </para>
+</formalpara>
+<formalpara id="stp_pid">
+ <title>stp_pid:long()</title>
+ <indexterm><primary>stp_pid</primary></indexterm>
+ <para>
+ FIXME: need description.
+ </para>
+</formalpara>
+<formalpara id="stack_size">
+ <title>stack_size:long()</title>
+ <indexterm><primary>stack_size</primary></indexterm>
+ <para>
+ Return the size of the kernel stack.
+ </para>
+</formalpara>
+<formalpara id="stack_used">
+ <title>stack_used:long ()</title>
+ <indexterm><primary>stack_used</primary></indexterm>
+ <para>
+ Return how many bytes are currently used in the kernel stack.
+ </para>
+</formalpara>
+<formalpara id="stack_unused">
+ <title>stack_unused:long()</title>
+ <indexterm><primary>stack_unused</primary></indexterm>
+ <para>
+ Return how many bytes are currently available in the kernel stack.
+ </para>
+</formalpara>
+<formalpara id="caller_addr">
+ <title>caller_addr:long()</title>
+ <indexterm><primary>caller_addr</primary></indexterm>
+ <para>
+ Return the address of the calling function.
+ <emphasis> Works only for return probes at this time.</emphasis>
+
+ </para>
+</formalpara>
+<formalpara id="caller">
+ <title>caller:string()</title>
+ <indexterm><primary>caller</primary></indexterm>
+ <para>
+ Return the address and name of the calling function.
+ <emphasis>Works only for return probes at this time.</emphasis>
+ </para>
+</formalpara>
+</chapter>
diff --git a/doc/SystemTap_Tapset_Reference/en-US/networking.xml b/doc/SystemTap_Tapset_Reference/en-US/networking.xml
new file mode 100644
index 00000000..ce93739b
--- /dev/null
+++ b/doc/SystemTap_Tapset_Reference/en-US/networking.xml
@@ -0,0 +1,100 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<!-- This file is extracted from the tapset files
+ Do not modify this file -->
+<chapter id="networking.stp">
+ <title>Networking Tapset</title>
+ <para>
+ This family of probe points is used to probe the activities of
+ network device.
+ </para>
+<formalpara id="netdev.receive">
+ <title>netdev.receive</title>
+ <indexterm><primary>netdev.receive</primary></indexterm>
+ <para>Fires when data arrives on network device.</para>
+</formalpara>
+<para>
+ <variablelist><title>Arguments:</title>
+ <varlistentry><term>dev_name</term>
+ <listitem><para>
+ The name of the device. e.g: eth0, ath1
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>length</term>
+ <listitem><para>
+ The length of the receiving buffer
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>protocol</term>
+ <listitem><para>The possible values of protocol could be:
+ <table frame='all'><title>Protocol Values</title>
+ <tgroup cols='2' align='left' colsep='1' rowsep='1'>
+ <colspec colname='Value'/>
+ <colspec colname='Protocol'/>
+ <thead>
+ <row><entry>Value</entry><entry>Protocol</entry></row>
+ </thead>
+ <tbody>
+ <row><entry>0800</entry><entry>IP</entry></row>
+ <row><entry>8100</entry><entry>802.1Q VLAN</entry></row>
+ <row><entry>0001</entry><entry>802.3</entry></row>
+ <row><entry>0002</entry><entry>AX.25</entry></row>
+ <row><entry>0004</entry><entry>802.2</entry></row>
+ <row><entry>8035</entry><entry>RARP</entry></row>
+ <row><entry>0005</entry><entry>SNAP</entry></row>
+ <row><entry>0805</entry><entry>X.25</entry></row>
+ <row><entry>0806</entry><entry>ARP</entry></row>
+ <row><entry>8137</entry><entry>IPX</entry></row>
+ <row><entry>0009</entry><entry>Localtalk</entry></row>
+ <row><entry>86DD</entry><entry>IPv6</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>truesize</term>
+ <listitem><para>
+ The size of the received data.
+ </para></listitem>
+ </varlistentry>
+
+ </variablelist>
+</para>
+<formalpara id="netdev.transmit">
+ <title>netdev.transmit</title>
+ <indexterm><primary>netdev.transmit</primary></indexterm>
+ <para> Fires when the network device wants to transmit a buffer.</para>
+</formalpara>
+<para>
+ <variablelist><title>Arguments:</title>
+ <varlistentry><term>dev_name</term>
+ <listitem><para>
+ The name of the device. e.g: eth0, ath1
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>length</term>
+ <listitem><para>
+ The length of the transmit buffer
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>protocol</term>
+ <listitem><para>
+ The protocol of this packet.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>truesize</term>
+ <listitem><para>
+ The size of the the data to be transmitted.
+ </para></listitem>
+ </varlistentry>
+
+ </variablelist>
+</para>
+</chapter>
diff --git a/tapset/context.stp b/tapset/context.stp
index 017c934c..ff8db87b 100644
--- a/tapset/context.stp
+++ b/tapset/context.stp
@@ -7,12 +7,37 @@
// Public License (GPL); either version 2, or (at your option) any
// later version.
+///<chapter id="context_stp">
+/// <title>Context Functions</title>
+/// <para>
+/// The context functions provide additional information about the where
+/// the event occurred.
+/// The contact functions can provide information such as a backtrace
+/// where the event occured
+/// and the current register values for the processor.
+/// </para>
+
+///<formalpara id="print_regs">
+/// <title>print_regs()</title>
+/// <indexterm><primary>print_regs</primary></indexterm>
+/// <para>
+/// Print a register dump.
+/// </para>
+///</formalpara>
function print_regs () %{
if (CONTEXT->regs) {
_stp_print_regs (CONTEXT->regs);
}
%}
+///<formalpara id="print_backtrace">
+/// <title>print_backtrace()</title>
+/// <indexterm><primary>print_backtrace</primary></indexterm>
+/// <para>
+/// Equivalent to <command>print_stack(backtrace())</command>,
+/// except that deeper stack nesting may be supported. Return nothing.
+/// </para>
+///</formalpara>
function print_backtrace () %{
if (CONTEXT->regs) {
_stp_stack_print(CONTEXT->regs, 1, CONTEXT->pi, MAXTRACE);
@@ -21,6 +46,14 @@ function print_backtrace () %{
}
%}
+///<formalpara id="backtrace">
+/// <title>backtrace:string()</title>
+/// <indexterm><primary>backtrace</primary></indexterm>
+/// <para>
+/// Return a string of hex addresses that are a backtrace of the
+/// stack. It may be truncated due to maximum string length.
+/// </para>
+///</formalpara>
function backtrace:string () %{ /* pure */
if (CONTEXT->regs)
_stp_stack_snprint (THIS->__retvalue, MAXSTRINGLEN, CONTEXT->regs, 0, CONTEXT->pi, MAXTRACE);
@@ -28,18 +61,46 @@ function backtrace:string () %{ /* pure */
strlcpy (THIS->__retvalue, "", MAXSTRINGLEN);
%}
+///<formalpara id="execname">
+/// <title>execname:string()</title>
+/// <indexterm><primary>execname</primary></indexterm>
+/// <para>
+/// Return the name of the current process.
+/// </para>
+///</formalpara>
function execname:string () %{ /* pure */
strlcpy (THIS->__retvalue, current->comm, MAXSTRINGLEN);
%}
+///<formalpara id="pid">
+/// <title>pid:long ()</title>
+/// <indexterm><primary>pid</primary></indexterm>
+/// <para>
+/// Return the id of the current process.
+/// </para>
+///</formalpara>
function pid:long () %{ /* pure */
THIS->__retvalue = current->tgid;
%}
+///<formalpara id="tid">
+/// <title>tid:long()</title>
+/// <indexterm><primary>tid</primary></indexterm>
+/// <para>
+/// Return the id of the current thread.
+/// </para>
+///</formalpara>
function tid:long () %{ /* pure */
THIS->__retvalue = current->pid;
%}
+///<formalpara id="ppid">
+/// <title>ppid:long()</title>
+/// <indexterm><primary>ppid</primary></indexterm>
+/// <para>
+/// Return the id of the parent process.
+/// </para>
+///</formalpara>
function ppid:long () %{ /* pure */
#if defined(STAPCONF_REAL_PARENT)
THIS->__retvalue = current->real_parent->tgid;
@@ -48,6 +109,13 @@ function ppid:long () %{ /* pure */
#endif
%}
+///<formalpara id="pexecname">
+/// <title>pexecname:string()</title>
+/// <indexterm><primary>pexecname</primary></indexterm>
+/// <para>
+/// Return the name of the parent process.
+/// </para>
+///</formalpara>
function pexecname:string () %{ /* pure */
#if defined(STAPCONF_REAL_PARENT)
strlcpy (THIS->__retvalue, current->real_parent->comm, MAXSTRINGLEN);
@@ -56,30 +124,86 @@ function pexecname:string () %{ /* pure */
#endif
%}
+///<formalpara id="gid">
+/// <title>gid:long()</title>
+/// <indexterm><primary>gid</primary></indexterm>
+/// <para>
+/// Return the gid of the current process.
+/// </para>
+///</formalpara>
function gid:long () %{ /* pure */
THIS->__retvalue = current->gid;
%}
+///<formalpara id="egid">
+/// <title>egid:long()</title>
+/// <indexterm><primary>egid</primary></indexterm>
+/// <para>
+/// Return the effective gid of the current process.
+/// </para>
+///</formalpara>
function egid:long () %{ /* pure */
THIS->__retvalue = current->egid;
%}
+///<formalpara id="uid">
+/// <title>uid:long()</title>
+/// <indexterm><primary>uid</primary></indexterm>
+/// <para>
+/// Return the uid of the current process.
+/// </para>
+///</formalpara>
function uid:long () %{ /* pure */
THIS->__retvalue = current->uid;
%}
+///<formalpara id="euid">
+/// <title>euid:long()</title>
+/// <indexterm><primary>euid</primary></indexterm>
+/// <para>
+/// Return the effective uid of the current process.
+/// </para>
+///</formalpara>
function euid:long () %{ /* pure */
THIS->__retvalue = current->euid;
%}
+///<formalpara id="cpuid">
+/// <title>cpuid:long()</title>
+/// <indexterm><primary>cpuid</primary></indexterm>
+/// <para>
+/// Return the current cpu number.
+/// </para>
+///</formalpara>
+// FIXME is cpuid() or cpu() depricated?
function cpuid:long () %{ /* pure */
THIS->__retvalue = smp_processor_id();
%}
+///<formalpara id="cpu">
+/// <title>cpu:long()</title>
+/// <indexterm><primary>cpu</primary></indexterm>
+/// <para>
+/// Return the current cpu number.
+/// </para>
+///</formalpara>
+// FIXME is cpuid() or cpu() depricated?
function cpu:long () %{ /* pure */
THIS->__retvalue = smp_processor_id();
%}
+///<formalpara id="print_stack">
+/// <title>print_stack(stk:string)</title>
+/// <indexterm><primary>print_stack</primary></indexterm>
+/// <para>
+/// Perform a symbolic lookup of the addresses in the given string,
+/// which is assumed to be the result of a prior call to
+/// <xref linkend="backtrace"/>.
+/// Print one line per address, including the address, the
+/// name of the function containing the address, and an estimate of
+/// its position within that function. Return nothing.
+/// </para>
+///</formalpara>
function print_stack(stk:string) %{
char *ptr = THIS->stk;
char *tok = strsep(&ptr, " ");
@@ -91,10 +215,25 @@ function print_stack(stk:string) %{
}
%}
+///<formalpara id="pp">
+/// <title>pp:string()</title>
+/// <indexterm><primary>pp</primary></indexterm>
+/// <para>
+/// Return the probe point associated with the currently running
+/// probe handler, including alias and wildcard expansion effects.
+/// </para>
+///</formalpara>
function pp:string () %{ /* pure */
strlcpy (THIS->__retvalue, CONTEXT->probe_point, MAXSTRINGLEN);
%}
+///<formalpara id="probefunc">
+/// <title>probefunc:string()</title>
+/// <indexterm><primary>probefunc</primary></indexterm>
+/// <para>
+/// Return the probe point's function name, if known.
+/// </para>
+///</formalpara>
function probefunc:string () %{ /* pure */
char *ptr, *start;
@@ -126,6 +265,13 @@ function probefunc:string () %{ /* pure */
}
%}
+///<formalpara id="probemod">
+/// <title>probemod:string()</title>
+/// <indexterm><primary>probemod</primary></indexterm>
+/// <para>
+/// Return the probe point's module name, if known.
+/// </para>
+///</formalpara>
function probemod:string () %{ /* pure */
char *ptr, *start;
@@ -144,10 +290,27 @@ function probemod:string () %{ /* pure */
}
%}
+///<formalpara id="registers_valid">
+/// <title>registers_valid:long()</title>
+/// <indexterm><primary>registers_valid</primary></indexterm>
+/// <para>
+/// Return 1 if register() and u_register() can be used
+/// in the current context, or 0 otherwise.
+/// For example, <command>registers_valid()</command> returns 0
+/// when called from a begin or end probe.
+/// </para>
+///</formalpara>
function registers_valid:long () %{ /* pure */
THIS->__retvalue = (CONTEXT->regs != NULL);
%}
+///<formalpara id="user_mode">
+/// <title>user_mode:long()</title>
+/// <indexterm><primary>user_mode</primary></indexterm>
+/// <para>
+/// Return 1 if the probe point occurred in user-mode.
+/// </para>
+///</formalpara>
function user_mode:long () %{ /* pure */ /* currently a user-mode address? */
if (CONTEXT->regs) {
#if defined(__i386__) || defined(__x86_64__)
@@ -160,6 +323,14 @@ function user_mode:long () %{ /* pure */ /* currently a user-mode address? */
}
%}
+///<formalpara id="is_return">
+/// <title>is_return:long()</title>
+/// <indexterm><primary>is_return</primary></indexterm>
+/// <para>
+/// Return 1 if the probe point is a return probe.
+/// <emphasis>Deprecated.</emphasis>
+/// </para>
+///</formalpara>
function is_return:long () %{ /* pure */
if (CONTEXT->pi)
THIS->__retvalue = 1;
@@ -167,37 +338,83 @@ function is_return:long () %{ /* pure */
THIS->__retvalue = 0;
%}
+///<formalpara id="target">
+/// <title>target:long()</title>
+/// <indexterm><primary>target</primary></indexterm>
+/// <para>
+/// Return the pid of the target process.
+/// </para>
+///</formalpara>
function target:long () %{ /* pure */
THIS->__retvalue = _stp_target;
%}
+///<formalpara id="module_name">
+/// <title>module_name:string()</title>
+/// <indexterm><primary>module_name</primary></indexterm>
+/// <para>
+/// FIXME: need description.
+/// </para>
+///</formalpara>
function module_name:string () %{ /* pure */
strlcpy(THIS->__retvalue, THIS_MODULE->name, MAXSTRINGLEN);
%}
+///<formalpara id="stp_pid">
+/// <title>stp_pid:long()</title>
+/// <indexterm><primary>stp_pid</primary></indexterm>
+/// <para>
+/// FIXME: need description.
+/// </para>
+///</formalpara>
function stp_pid:long () %{ /* pure */
THIS->__retvalue = _stp_pid;
%}
-# return the size of the stack
+///<formalpara id="stack_size">
+/// <title>stack_size:long()</title>
+/// <indexterm><primary>stack_size</primary></indexterm>
+/// <para>
+/// Return the size of the kernel stack.
+/// </para>
+///</formalpara>
function stack_size:long () %{ /* pure */
THIS->__retvalue = THREAD_SIZE;
%}
-# return how many bytes are currently used in the stack
+///<formalpara id="stack_used">
+/// <title>stack_used:long ()</title>
+/// <indexterm><primary>stack_used</primary></indexterm>
+/// <para>
+/// Return how many bytes are currently used in the kernel stack.
+/// </para>
+///</formalpara>
function stack_used:long () %{ /* pure */
char a;
THIS->__retvalue = THREAD_SIZE - ((long)&a & (THREAD_SIZE-1));
%}
-# return how many bytes are currently unused in the stack
+///<formalpara id="stack_unused">
+/// <title>stack_unused:long()</title>
+/// <indexterm><primary>stack_unused</primary></indexterm>
+/// <para>
+/// Return how many bytes are currently available in the kernel stack.
+/// </para>
+///</formalpara>
function stack_unused:long () %{ /* pure */
char a;
THIS->__retvalue = (long)&a & (THREAD_SIZE-1);
%}
-# Return the address of the calling function. Works only for
-# return probes at this time.
+///<formalpara id="caller_addr">
+/// <title>caller_addr:long()</title>
+/// <indexterm><primary>caller_addr</primary></indexterm>
+/// <para>
+/// Return the address of the calling function.
+/// <emphasis> Works only for return probes at this time.</emphasis>
+///
+/// </para>
+///</formalpara>
function caller_addr:long () %{ /* pure */
if (CONTEXT->pi)
THIS->__retvalue = (int64_t)(long)_stp_ret_addr_r(CONTEXT->pi);
@@ -205,8 +422,14 @@ function caller_addr:long () %{ /* pure */
THIS->__retvalue = 0;
%}
-# Return the address and name of the calling function. Works
-# only for return probes at this time.
+///<formalpara id="caller">
+/// <title>caller:string()</title>
+/// <indexterm><primary>caller</primary></indexterm>
+/// <para>
+/// Return the address and name of the calling function.
+/// <emphasis>Works only for return probes at this time.</emphasis>
+/// </para>
+///</formalpara>
function caller:string() %{ /* pure */
if (CONTEXT->pi)
_stp_symbol_snprint( THIS->__retvalue, MAXSTRINGLEN,
@@ -214,3 +437,5 @@ function caller:string() %{ /* pure */
else
strlcpy(THIS->__retvalue,"unknown",MAXSTRINGLEN);
%}
+
+///</chapter>
diff --git a/tapset/networking.stp b/tapset/networking.stp
index f32953fd..9bd742da 100644
--- a/tapset/networking.stp
+++ b/tapset/networking.stp
@@ -6,10 +6,72 @@
// Public License (GPL); either version 2, or (at your option) any
// later version.
+///<chapter id="networking.stp">
+/// <title>Networking Tapset</title>
+/// <para>
+/// This family of probe points is used to probe the activities of
+/// network device.
+/// </para>
+
%{
#include <linux/netdevice.h>
%}
+///<formalpara id="netdev.receive">
+/// <title>netdev.receive</title>
+/// <indexterm><primary>netdev.receive</primary></indexterm>
+/// <para>Fires when data arrives on network device.</para>
+///</formalpara>
+///<para>
+/// <variablelist><title>Arguments:</title>
+/// <varlistentry><term>dev_name</term>
+/// <listitem><para>
+/// The name of the device. e.g: eth0, ath1
+/// </para></listitem>
+/// </varlistentry>
+///
+/// <varlistentry><term>length</term>
+/// <listitem><para>
+/// The length of the receiving buffer
+/// </para></listitem>
+/// </varlistentry>
+///
+/// <varlistentry><term>protocol</term>
+/// <listitem><para>The possible values of protocol could be:
+/// <table frame='all'><title>Protocol Values</title>
+/// <tgroup cols='2' align='left' colsep='1' rowsep='1'>
+/// <colspec colname='Value'/>
+/// <colspec colname='Protocol'/>
+/// <thead>
+/// <row><entry>Value</entry><entry>Protocol</entry></row>
+/// </thead>
+/// <tbody>
+/// <row><entry>0800</entry><entry>IP</entry></row>
+/// <row><entry>8100</entry><entry>802.1Q VLAN</entry></row>
+/// <row><entry>0001</entry><entry>802.3</entry></row>
+/// <row><entry>0002</entry><entry>AX.25</entry></row>
+/// <row><entry>0004</entry><entry>802.2</entry></row>
+/// <row><entry>8035</entry><entry>RARP</entry></row>
+/// <row><entry>0005</entry><entry>SNAP</entry></row>
+/// <row><entry>0805</entry><entry>X.25</entry></row>
+/// <row><entry>0806</entry><entry>ARP</entry></row>
+/// <row><entry>8137</entry><entry>IPX</entry></row>
+/// <row><entry>0009</entry><entry>Localtalk</entry></row>
+/// <row><entry>86DD</entry><entry>IPv6</entry></row>
+/// </tbody>
+/// </tgroup>
+/// </table>
+/// </para></listitem>
+/// </varlistentry>
+///
+/// <varlistentry><term>truesize</term>
+/// <listitem><para>
+/// The size of the received data.
+/// </para></listitem>
+/// </varlistentry>
+///
+/// </variablelist>
+///</para>
/* Main device receive routine, be called when packet arrives on network device */
probe netdev.receive
= kernel.function("netif_receive_skb")
@@ -20,6 +82,39 @@ probe netdev.receive
truesize = $skb->truesize
}
+///<formalpara id="netdev.transmit">
+/// <title>netdev.transmit</title>
+/// <indexterm><primary>netdev.transmit</primary></indexterm>
+/// <para> Fires when the network device wants to transmit a buffer.</para>
+///</formalpara>
+///<para>
+/// <variablelist><title>Arguments:</title>
+/// <varlistentry><term>dev_name</term>
+/// <listitem><para>
+/// The name of the device. e.g: eth0, ath1
+/// </para></listitem>
+/// </varlistentry>
+///
+/// <varlistentry><term>length</term>
+/// <listitem><para>
+/// The length of the transmit buffer
+/// </para></listitem>
+/// </varlistentry>
+///
+/// <varlistentry><term>protocol</term>
+/// <listitem><para>
+/// The protocol of this packet.
+/// </para></listitem>
+/// </varlistentry>
+///
+/// <varlistentry><term>truesize</term>
+/// <listitem><para>
+/// The size of the the data to be transmitted.
+/// </para></listitem>
+/// </varlistentry>
+///
+/// </variablelist>
+///</para>
/* Queue a buffer for transmission to a network device */
probe netdev.transmit
= kernel.function("dev_queue_xmit")
@@ -29,3 +124,5 @@ probe netdev.transmit
protocol = $skb->protocol
truesize = $skb->truesize
}
+
+///</chapter>