]> sourceware.org Git - systemtap-htdocs.git/commitdiff
add new langref/*.html
authorfche <fche>
Mon, 22 Dec 2014 17:38:40 +0000 (17:38 +0000)
committerfche <fche>
Mon, 22 Dec 2014 17:38:40 +0000 (17:38 +0000)
19 files changed:
langref/About_this_document.html [new file with mode: 0644]
langref/Associative_arrays.html [new file with mode: 0644]
langref/Components_SystemTap_script.html [new file with mode: 0644]
langref/Contents.html [new file with mode: 0644]
langref/Formatted_output.html [new file with mode: 0644]
langref/Further_Reference.html [new file with mode: 0644]
langref/Index.html [new file with mode: 0644]
langref/Language_elements.html [new file with mode: 0644]
langref/Probe_points.html [new file with mode: 0644]
langref/Statement_types.html [new file with mode: 0644]
langref/Statistics_aggregates.html [new file with mode: 0644]
langref/SystemTap_overview.html [new file with mode: 0644]
langref/Tapset_defined_functions.html [new file with mode: 0644]
langref/Types_SystemTap_scripts.html [new file with mode: 0644]
langref/images.pl
langref/index.html [new file with mode: 0644]
langref/internals.pl
langref/labels.pl
langref/langref.html [new file with mode: 0644]

diff --git a/langref/About_this_document.html b/langref/About_this_document.html
new file mode 100644 (file)
index 0000000..e30624d
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>About this document ...</TITLE>
+<META NAME="description" CONTENT="About this document ...">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="previous" HREF="Index.html">
+<LINK REL="up" HREF="langref.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png"> 
+<A NAME="tex2html552"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html548"
+  HREF="Index.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html554"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html556"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Up:</B> <A NAME="tex2html553"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html549"
+  HREF="Index.html">Index</A>
+ &nbsp; <B>  <A NAME="tex2html555"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html557"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION000140000000000000000">
+About this document ...</A>
+</H1>
+ <STRONG>SystemTap Language Reference</STRONG><P>
+This document was generated using the
+<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2012 (1.2)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>, 
+Computer Based Learning Unit, University of Leeds.
+<BR>
+Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>, 
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT>-noaddress -show_section_numbers -custom_titles -local_icons -split 4 langref.tex -dir /tmp/stapdocs5kR/htdocs/langref/</TT>
+<P>
+The translation was initiated by Frank Ch. Eigler on 2014-12-22
+<BR><HR>
+
+</BODY>
+</HTML>
diff --git a/langref/Associative_arrays.html b/langref/Associative_arrays.html
new file mode 100644 (file)
index 0000000..ca91327
--- /dev/null
@@ -0,0 +1,264 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>7 Associative arrays</TITLE>
+<META NAME="description" CONTENT="7 Associative arrays">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Statistics_aggregates.html">
+<LINK REL="previous" HREF="Statement_types.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Statistics_aggregates.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html453"
+  HREF="Statistics_aggregates.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html447"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html441"
+  HREF="Statement_types.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html449"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html451"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html454"
+  HREF="Statistics_aggregates.html">8 Statistics (aggregates)</A>
+<B> Up:</B> <A NAME="tex2html448"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html442"
+  HREF="Statement_types.html">6 Statement types</A>
+ &nbsp; <B>  <A NAME="tex2html450"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html452"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html455"
+  HREF="Associative_arrays.html#SECTION00081000000000000000">7.1 Examples</A>
+<LI><A NAME="tex2html456"
+  HREF="Associative_arrays.html#SECTION00082000000000000000">7.2 Types of values</A>
+<LI><A NAME="tex2html457"
+  HREF="Associative_arrays.html#SECTION00083000000000000000">7.3 Array capacity</A>
+<LI><A NAME="tex2html458"
+  HREF="Associative_arrays.html#SECTION00084000000000000000">7.4 Array wrapping</A>
+<LI><A NAME="tex2html459"
+  HREF="Associative_arrays.html#SECTION00085000000000000000">7.5 Iteration, foreach</A>
+<LI><A NAME="tex2html460"
+  HREF="Associative_arrays.html#SECTION00086000000000000000">7.6 Deletion</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:Associative-Arrays"></A>
+<A NAME="1029"></A>
+<BR>
+7 Associative arrays
+</H1>
+Associative arrays are implemented as hash tables with a maximum size set
+at startup. Associative arrays are too large to be created dynamically for
+individual probe handler runs, so they must be declared as global. The basic
+operations for arrays are setting and looking up elements. These operations
+are expressed in awk syntax: the array name followed by an opening bracket
+([), a comma-separated list of up to nine index index expressions, and
+a closing bracket (]). Each index expression may be a string or a number,
+as long as it is consistently typed throughout the script.
+
+<P>
+
+<H2><A NAME="SECTION00081000000000000000">
+7.1 Examples</A>
+</H2>
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Increment the named array slot:
+foo [4,"hello"] ++
+
+# Update a statistic:
+processusage [uid(),execname()] ++
+
+# Set a timestamp reference point:
+times [tid()] = get_cycles()
+
+# Compute a timestamp delta:
+delta = get_cycles() - times [tid()]
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00082000000000000000">
+7.2 Types of values</A>
+</H2>
+
+<P>
+Array elements may be set to a number, a string, or an aggregate.
+The type must be consistent
+throughout the use of the array. The first assignment to the array defines
+the type of the elements. Unset array elements may be fetched and return
+a null value (zero or empty string) as appropriate, but they are not seen
+by a membership test.
+
+<P>
+
+<H2><A NAME="SECTION00083000000000000000">
+7.3 Array capacity</A>
+</H2>
+
+<P>
+Array sizes can be specified explicitly or allowed to default to the maximum
+size as defined by MAXMAPENTRIES. See Section&nbsp;<A HREF="SystemTap_overview.html#sub:SystemTap-safety"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>
+for details on changing MAXMAPENTRIES.
+
+<P>
+You can explicitly specify the size of an array as follows:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+global ARRAY[&lt;size&gt;]
+</PRE>
+</DD>
+</DL>If you do not specify the size parameter, then the array is created to hold
+MAXMAPENTRIES number of elements.
+
+<P>
+
+<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sub:Array-Wrapping"></A>
+<BR>
+7.4 Array wrapping
+</H2>
+
+<P>
+Arrays may be wrapped using the percentage symbol (%) causing previously entered
+elements to be overwritten if more elements are inserted than the array can
+hold. This works for both regular and statistics typed arrays.
+
+<P>
+You can mark arrays for wrapping as follows:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+global ARRAY1%[&lt;size&gt;], ARRAY2%
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00085000000000000000"></A>
+<A NAME="1049"></A>
+<BR>
+7.5 Iteration, foreach
+</H2>
+Like awk, SystemTap's foreach creates a loop that iterates over key tuples
+of an array, not only values. The iteration may be sorted by any single key
+or a value by adding an extra plus symbol (+) or minus symbol (-) to the
+code or limited to only a few elements with the limit keyword.
+The following are examples.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Simple loop in arbitrary sequence:
+foreach ([a,b] in foo)
+    fuss_with(foo[a,b])
+
+# Loop in increasing sequence of value:
+foreach ([a,b] in foo+) { ... }
+
+# Loop in decreasing sequence of first key:
+foreach ([a-,b] in foo) { ... }
+
+# Print the first 10 tuples and values in the array in decreasing sequence
+foreach (v = [i,j] in foo- limit 10)
+    printf("foo[%d,%s] = %d\n", i, j, v)
+</PRE>
+</DD>
+</DL>The <TT>break</TT> and <TT>continue</TT> statements also work inside foreach
+loops. Since arrays can be large but probe handlers must execute quickly,
+you should write scripts that exit iteration early, if possible. For simplicity,
+SystemTap forbids any modification of an array during iteration with a foreach.
+
+<P>
+For a full description of <TT>foreach</TT> see subsection <A HREF="Statement_types.html#sub:foreach"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+
+<P>
+
+<H2><A NAME="SECTION00086000000000000000"></A>
+<A NAME="1059"></A>
+<BR>
+7.6 Deletion
+</H2>
+The <TT>delete</TT> statement can either remove a single element by index from
+an array or clear an entire array at once.  See subsection <A HREF="Statement_types.html#sub:delete"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> for
+details and examples.
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html453"
+  HREF="Statistics_aggregates.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html447"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html441"
+  HREF="Statement_types.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html449"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html451"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html454"
+  HREF="Statistics_aggregates.html">8 Statistics (aggregates)</A>
+<B> Up:</B> <A NAME="tex2html448"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html442"
+  HREF="Statement_types.html">6 Statement types</A>
+ &nbsp; <B>  <A NAME="tex2html450"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html452"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/Components_SystemTap_script.html b/langref/Components_SystemTap_script.html
new file mode 100644 (file)
index 0000000..15a6a2d
--- /dev/null
@@ -0,0 +1,738 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>3 Components of a SystemTap script</TITLE>
+<META NAME="description" CONTENT="3 Components of a SystemTap script">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Probe_points.html">
+<LINK REL="previous" HREF="Types_SystemTap_scripts.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Probe_points.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html303"
+  HREF="Probe_points.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html297"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html291"
+  HREF="Types_SystemTap_scripts.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html299"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html301"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html304"
+  HREF="Probe_points.html">4 Probe points</A>
+<B> Up:</B> <A NAME="tex2html298"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html292"
+  HREF="Types_SystemTap_scripts.html">2 Types of SystemTap</A>
+ &nbsp; <B>  <A NAME="tex2html300"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html302"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html305"
+  HREF="Components_SystemTap_script.html#SECTION00041000000000000000">3.1 Probe definitions</A>
+<LI><A NAME="tex2html306"
+  HREF="Components_SystemTap_script.html#SECTION00042000000000000000">3.2 Probe aliases</A>
+<UL>
+<LI><A NAME="tex2html307"
+  HREF="Components_SystemTap_script.html#SECTION00042100000000000000">3.2.1 Prologue-style aliases (=)</A>
+<LI><A NAME="tex2html308"
+  HREF="Components_SystemTap_script.html#SECTION00042200000000000000">3.2.2 Epilogue-style aliases (+=)</A>
+<LI><A NAME="tex2html309"
+  HREF="Components_SystemTap_script.html#SECTION00042300000000000000">3.2.3 Probe alias usage</A>
+<LI><A NAME="tex2html310"
+  HREF="Components_SystemTap_script.html#SECTION00042400000000000000">3.2.4 Alias suffixes</A>
+<LI><A NAME="tex2html311"
+  HREF="Components_SystemTap_script.html#SECTION00042500000000000000">3.2.5 Alias suffixes and wildcards</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html312"
+  HREF="Components_SystemTap_script.html#SECTION00043000000000000000">3.3 Variables</A>
+<UL>
+<LI><A NAME="tex2html313"
+  HREF="Components_SystemTap_script.html#SECTION00043100000000000000">3.3.1 Unused variables</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html314"
+  HREF="Components_SystemTap_script.html#SECTION00044000000000000000">3.4 Auxiliary functions</A>
+<LI><A NAME="tex2html315"
+  HREF="Components_SystemTap_script.html#SECTION00045000000000000000">3.5 Embedded C</A>
+<LI><A NAME="tex2html316"
+  HREF="Components_SystemTap_script.html#SECTION00046000000000000000">3.6 Embedded C functions</A>
+<LI><A NAME="tex2html317"
+  HREF="Components_SystemTap_script.html#SECTION00047000000000000000">3.7 Embedded C pragma comments</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00040000000000000000">
+3 Components of a SystemTap script</A>
+</H1>
+
+<P>
+The main construct in the scripting language identifies probes. Probes associate
+abstract events with a statement block, or probe handler, that is to be executed
+when any of those events occur.
+
+<P>
+The following example shows how to trace entry and exit from a function using
+two probes.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe kernel.function("sys_mkdir").call { log ("enter") }
+probe kernel.function("sys_mkdir").return { log ("exit") }
+</PRE>
+</DD>
+</DL>
+<P>
+To list the probe-able functions in the kernel, use the listing option
+(<TT><B>-l</B></TT>).  For example:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+$ stap -l 'kernel.function("*")' | sort
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00041000000000000000">
+3.1 Probe definitions</A>
+</H2>
+
+<P>
+The general syntax is as follows.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe PROBEPOINT [, PROBEPOINT] { [STMT ...] }
+</PRE>
+</DD>
+</DL>Events are specified in a special syntax called <I>probe points</I>. There
+are several varieties of probe points defined by the translator, and tapset
+scripts may define others using aliases. The provided probe points are listed
+in the <TT>stapprobes(3)</TT>, <TT>tapset::*(3stap)</TT>, and
+<TT>probe::*(3stap)</TT> man pages.  The STMT statement block is executed
+whenever iany of the named PROBEPOINT events occurs.
+
+<P>
+The probe handler is interpreted relative to the context of each event. For
+events associated with kernel code, this context may include variables defined
+in the source code at that location. These <I>target variables</I><A NAME="131"></A> (or ``context variables'')
+are presented to the script as variables whose names are prefixed with a
+dollar sign ($). They may be accessed only if the compiler used to compile
+the kernel preserved them, despite optimization. This is the same constraint
+imposed by a debugger when working with optimized code. Other events may
+have very little context.
+
+<P>
+
+<H2><A NAME="SECTION00042000000000000000"></A><A NAME="sub:Probe-aliases"></A>
+<A NAME="133"></A>
+<BR>
+3.2 Probe aliases
+</H2>
+The general syntax is as follows.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe &lt;alias&gt; = &lt;probepoint&gt; { &lt;prologue_stmts&gt; }
+probe &lt;alias&gt; += &lt;probepoint&gt; { &lt;epilogue_stmts&gt; }
+</PRE>
+</DD>
+</DL>
+<P>
+New probe points may be defined using <I>aliases</I>. A probe point alias
+looks similar to probe definitions, but instead of activating a probe at
+the given point, it defines a new probe point name as an alias to an existing
+one. New probe aliases may refer to one or more existing probe aliases.
+Multiple aliases may share the same underlying probe points.
+The following is an example.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe socket.sendmsg = kernel.function ("sock_sendmsg") { ... }
+probe socket.do_write = kernel.function ("do_sock_write") { ... }
+probe socket.send = socket.sendmsg, socket.do_write { ... }
+</PRE>
+</DD>
+</DL>
+<P>
+There are two types of aliases, the prologue style and the epilogue style
+which are identified by the equal sign (<TT><B>=</B></TT>) and &#34;<TT><B>+=</B></TT>&#34;
+respectively.
+
+<P>
+A probe that uses a probe point alias will create an actual probe, with
+the handler of the alias <I>pre-pended</I>.
+
+<P>
+This pre-pending behavior serves several purposes. It allows the alias definition
+to pre-process the context of the probe before passing control to the handler
+specified by the user. This has several possible uses, demonstrated as follows.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Skip probe unless given condition is met:
+if ($flag1 != $flag2) next
+
+# Supply values describing probes:
+name = "foo"
+
+# Extract the target variable to a plain local variable:
+var = $var
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00042100000000000000"></A>
+<A NAME="153"></A>
+<A NAME="154"></A>
+<BR>
+3.2.1 Prologue-style aliases (=)
+</H3>
+For a prologue style alias, the statement block that follows an alias definition
+is implicitly added as a prologue to any probe that refers to the alias.
+The following is an example.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Defines a new probe point syscall.read, which expands to
+# kernel.function("sys_read"), with the given statement as
+# a prologue.
+#
+probe syscall.read = kernel.function("sys_read") {
+    fildes = $fd
+}
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00042200000000000000"></A>
+<A NAME="160"></A>
+<A NAME="161"></A>
+<BR>
+3.2.2 Epilogue-style aliases (+=)
+</H3>
+The statement block that follows an alias definition is implicitly added
+as an epilogue to any probe that refers to the alias.  It is not useful
+to define new variables there (since no subsequent code will see them), but
+rather the code can take action based upon variables set by the
+prologue or by the user code.  The following is an example:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Defines a new probe point with the given statement as an
+# epilogue.
+#
+probe syscall.read += kernel.function("sys_read") {
+    if (traceme) println ("tracing me")
+}
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00042300000000000000">
+3.2.3 Probe alias usage</A>
+</H3>
+
+<P>
+A probe alias is used the same way as any built-in probe type, by
+naming it:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe syscall.read {
+    printf("reading fd=%d\n", fildes)
+}
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00042400000000000000">
+3.2.4 Alias suffixes</A>
+</H3>
+
+<P>
+It is possible to include a suffix with a probe alias invocation. If
+only the initial part of a probe point matches an alias, the remainder
+is treated as a suffix and attached to the underlying probe point(s) when
+the alias is expanded. For example:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+/* Define an alias: */
+probe sendrecv = tcp.sendmsg, tcp.recvmsg { ... }
+
+/* Use the alias in its basic form: */
+probe sendrecv { ... }
+
+/* Use the alias with an additional suffix: */
+probe sendrecv.return { ... }
+</PRE>
+</DD>
+</DL>
+<P>
+Here, the second use of the probe alias is equivalent to writing <code>probe tcp.sendmsg.return, tcp.recvmsg.return</code>.
+
+<P>
+As another example, the probe points <code>tcp.sendmsg.return</code> and <code>tcp.recvmsg.return</code> are actually defined as aliases in the tapset <code>tcp.stp</code>. They expand to a probe point of the form <code>kernel.function("...").return</code>, so they can also be suffixed:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe tcp.sendmsg.return.maxactive(10) {
+    printf("returning from sending %d bytes\n", size)
+}
+</PRE>
+</DD>
+</DL>
+<P>
+Here, the probe point expands to
+<code>kernel.function("tcp_sendmsg").return.maxactive(10)</code>.
+
+<P>
+
+<H3><A NAME="SECTION00042500000000000000">
+3.2.5 Alias suffixes and wildcards</A>
+</H3>
+
+<P>
+When expanding wildcards, SystemTap generally avoids considering alias
+suffixes in the expansion. The exception is when a wildcard element is
+encountered that does not have any ordinary expansions. Consider the
+following example:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe some_unrelated_probe = ... { ... }
+
+probe myprobe = syscall.read { ... }
+
+probe myprobe.test = some_unrelated_probe { ... }
+
+probe myprobe.* { ... }
+
+probe myprobe.ret* { ... }
+</PRE>
+</DD>
+</DL>
+<P>
+Here, <code>return</code> would be a valid suffix for <code>myprobe</code>. The
+wildcard <code>myprobe.*</code> matches the ordinary alias
+<code>myprobe.test</code>, and hence the suffix expansion
+<code>myprobe.return</code> is not included. Conversely, <code>myprobe.ret*</code>
+does not match any ordinary aliases, so the suffix
+<code>myprobe.return</code> is included as an expansion.
+
+<P>
+
+<H2><A NAME="SECTION00043000000000000000"></A><A NAME="sub:Variables"></A>
+<A NAME="186"></A>
+<BR>
+3.3 Variables
+</H2>
+Identifiers for variables and functions are alphanumeric sequences, and may
+include the underscore (_) and the dollar sign ($) characters. They may
+not start with a plain digit. Each variable is by default local to the probe
+or function statement block where it is mentioned, and therefore its scope
+and lifetime is limited to a particular probe or function invocation. Scalar
+variables are implicitly typed as either string or integer. Associative arrays
+also have a string or integer value, and a tuple of strings or integers serves
+as a key. Arrays must be declared as global. Local arrays<A NAME="187"></A>
+are not allowed.
+
+<P>
+The translator performs <I>type inference</I> on all identifiers, including
+array indexes and function parameters. Inconsistent type-related use of identifiers
+results in an error.
+
+<P>
+Variables may be declared global. Global variables are shared among all probes
+and remain instantiated as long as the SystemTap session. There is one namespace
+for all global variables, regardless of the script file in which they are
+found. Because of possible concurrency limits, such as multiple probe handlers,
+each global variable used by a probe is automatically read- or write-locked
+while the handler is running. A global declaration may be written at the
+outermost level anywhere in a script file, not just within a block of code.
+Global variables which are written but never read will be displayed
+automatically at session shutdown.  The following declaration marks
+<TT>var1</TT> and <TT>var2</TT> as global.
+The translator will infer a value type for each, and if the variable is used
+as an array, its key types.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+global var1[=&lt;value&gt;], var2[=&lt;value&gt;]
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00043100000000000000"></A>
+<A NAME="196"></A>
+<BR>
+3.3.1 Unused variables
+</H3>
+
+<P>
+The SystemTap translator removes unused variables. Global variable
+that are never written or read are discarded.  Every local variables
+where the variable is only written but never read are also
+discarded. This optimization prunes unused variables defined
+in the probe aliases, but never used in the probe handler.
+If desired, this optimization can disabled with the <TT>-u</TT> option.
+
+<P>
+
+<H2><A NAME="SECTION00044000000000000000"></A><A NAME="sub:Auxiliary-functions"></A>
+<A NAME="199"></A>
+<BR>
+3.4 Auxiliary functions
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+function &lt;name&gt;[:&lt;type&gt;] ( &lt;arg1&gt;[:&lt;type&gt;], ... ) { &lt;stmts&gt; }
+</PRE>
+</DD>
+</DL>SystemTap scripts may define subroutines to factor out common work. Functions
+may take any number of scalar arguments, and must return a single scalar
+value. Scalars in this context are integers or strings. For more information
+on scalars, see Section&nbsp;<A HREF="#sub:Variables"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> and Section&nbsp;<A HREF="Language_elements.html#sub:Data-types"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A><TT>.</TT>
+The following is an example function declaration.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+function thisfn (arg1, arg2) {
+    return arg1 + arg2
+}
+</PRE>
+</DD>
+</DL>
+<P>
+Note the general absence of type declarations, which are inferred by the
+translator. If desired, a function definition may include explicit type declarations
+for its return value, its arguments, or both. This is helpful for embedded-C
+functions. In the following example, the type inference engine need only
+infer the type of arg2, a string.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+function thatfn:string(arg1:long, arg2) {
+    return sprintf("%d%s", arg1, arg2)
+}
+</PRE>
+</DD>
+</DL>
+<P>
+Functions may call others or themselves recursively, up to a fixed nesting
+limit. See Section&nbsp;<A HREF="SystemTap_overview.html#sub:SystemTap-safety"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+
+<P>
+
+<H2><A NAME="SECTION00045000000000000000"></A><A NAME="sub:Embedded-C"></A>
+<A NAME="217"></A>
+<BR>
+3.5 Embedded C
+</H2>
+SystemTap supports a <I>guru<A NAME="218"></A> mode</I> where script
+safety features such as code and data memory reference protection are
+removed. Guru mode is set by passing the <B>-g</B> option to the
+stap command. When in guru mode, the translator accepts C code
+enclosed between ``%{'' and ``%}'' markers in the top level of
+the script file. The embedded C code is transcribed verbatim, without
+analysis, in sequence, into the top level of the generated C
+code. Thus, guru mode may be useful for adding #include instructions
+at the top level of the generated module, or providing auxiliary
+definitions for use by other embedded code.
+
+<P>
+When in guru mode, embedded C code blocks are also allowed as the body
+of a SystemTap function (as described in
+Section&nbsp;<A HREF="#sub:Embedded-C-Functions"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>), and in place of any SystemTap
+expression. In the latter case, the code block must contain a valid
+expression according to C syntax.
+
+<P>
+Here is an example of the various permitted methods of embedded C code inclusion:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+%{
+#include &lt;linux/in.h&gt;
+#include &lt;linux/ip.h&gt;
+%} /* &lt;-- top level */
+
+/* Reads the char value stored at a given address: */ 
+function __read_char:long(addr:long) %{ /* pure */
+         STAP_RETURN(kderef(sizeof(char), STAP_ARG_addr));
+         CATCH_DEREF_FAULT ();
+%} /* &lt;-- function body */
+
+/* Determines whether an IP packet is TCP, based on the iphdr: */
+function is_tcp_packet:long(iphdr) {
+         protocol = @cast(iphdr, "iphdr")-&gt;protocol
+         return (protocol == %{ IPPROTO_TCP %}) /* &lt;-- expression */
+}
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00046000000000000000"></A><A NAME="sub:Embedded-C-Functions"></A>
+<BR>
+3.6 Embedded C functions
+</H2>
+
+<P>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+function &lt;name&gt;:&lt;type&gt; ( &lt;arg1&gt;:&lt;type&gt;, ... ) %{ &lt;C_stmts&gt; %}
+</PRE>
+</DD>
+</DL>Embedded C code is permitted in a function body.
+In that case, the script language
+body is replaced entirely by a piece of C code enclosed between 
+``%{'' and ``%}'' markers.
+The enclosed code may do anything reasonable and safe as allowed
+by the C parser.
+
+<P>
+There are a number of undocumented but complex safety constraints on concurrency,
+resource consumption and runtime limits that are applied to code written
+in the SystemTap language. These constraints are not applied to embedded
+C code, so use embedded C code with extreme caution. Be especially
+careful when dereferencing pointers. Use the kread() macro to dereference
+any pointers that could potentially be invalid or dangerous. If you are unsure,
+err on the side of caution and use kread(). The kread() macro is one of the
+safety mechanisms used in code generated by embedded C. It protects against
+pointer accesses that could crash the system.
+
+<P>
+For example, to access the pointer chain <TT>name = skb-&gt;dev-&gt;name</TT> in
+embedded C, use the following code.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+struct net_device *dev;
+char *name;
+dev = kread(&amp;(skb-&gt;dev));
+name = kread(&amp;(dev-&gt;name));
+</PRE>
+</DD>
+</DL>
+<P>
+The memory locations reserved for input and output values are provided
+to a function using macros named
+<TT>STAP_ARG_foo</TT><A NAME="240"></A> (for arguments named
+<TT>foo</TT>) and <TT>STAP_RETVALUE</TT><A NAME="243"></A>.
+Errors may be signalled with <TT>STAP_ERROR</TT>.  The function may return                       early with <TT>STAP_RETURN</TT>.  Here are some examples:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+function integer_ops:long (val) %{
+  STAP_RETVALUE = STAP_ARG_val + 1;
+  if (STAP_RETVALUE == 4)
+      STAP_ERROR("wrong guess: %d", (int) STAP_RETVALUE);
+  if (STAP_RETVALUE == 3)
+      STAP_RETURN(0);
+  STAP_RETVALUE ++;
+%}
+function string_ops:string (val) %{
+  strlcpy (STAP_RETVALUE, STAP_ARG_val, MAXSTRINGLEN);
+  strlcat (STAP_RETVALUE, "one", MAXSTRINGLEN);
+  if (strcmp (STAP_RETVALUE, "three-two-one"))
+      STAP_RETURN("parameter should be three-two-");
+%}
+function no_ops () %{
+    STAP_RETURN(); /* function inferred with no return value */
+%}
+</PRE>
+</DD>
+</DL>
+<P>
+The function argument and return value types should be stated if the
+translator cannot infer them from usage.  The translator does not
+analyze the embedded C code within the function.
+
+<P>
+You should examine C code generated for ordinary script language
+functions to write compatible embedded-C.  Usually, all SystemTap
+functions and probes run with interrupts disabled, thus you cannot
+call functions that might sleep within the embedded C.
+
+<P>
+
+<H2><A NAME="SECTION00047000000000000000">
+3.7 Embedded C pragma comments</A>
+</H2>
+
+<P>
+Embedded C blocks may contain various markers to assert optimization
+and safety properties.
+
+<P>
+
+<UL>
+<LI><code>/* pure */</code> means that the C code has no side effects and
+  may be elided entirely if its value is not used by script code.
+</LI>
+<LI><code>/* unprivileged */</code> means that the C code is so safe that
+  even unprivileged users are permitted to use it. (This is useful, in
+  particular, to define an embedded-C function inside a tapset that
+  may be used by unprivileged code.)
+</LI>
+<LI><code>/* myproc-unprivileged */</code> means that the C code is so
+  safe that even unprivileged users are permitted to use it, provided
+  that the target of the current probe is within the user's own
+  process.
+</LI>
+<LI><code>/* guru */</code> means that the C code is so unsafe that a
+  systemtap user must specify <code>-g</code> (guru mode) to use this, even
+  if the C code is being exported from a tapset.
+</LI>
+<LI><code>/* unmangled */</code>, used in an embedded-C function, means
+  that the legacy (pre-1.8) argument access syntax should be made
+  available inside the function. Hence, in addition to
+  <code>STAP_ARG_foo</code> and <code>STAP_RETVALUE</code> one can use
+  <code>THIS-&gt;foo</code> and <code>THIS-&gt;__retvalue</code> respectively inside the
+  function. This is useful for quickly migrating code written for
+  SystemTap version 1.7 and earlier.
+</LI>
+<LI><code>/* string */</code> in embedded-C expressions only, means that
+  the expression has <code>const char *</code> type and should be treated as
+  a string value, instead of the default long numeric.
+</LI>
+</UL>
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html303"
+  HREF="Probe_points.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html297"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html291"
+  HREF="Types_SystemTap_scripts.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html299"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html301"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html304"
+  HREF="Probe_points.html">4 Probe points</A>
+<B> Up:</B> <A NAME="tex2html298"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html292"
+  HREF="Types_SystemTap_scripts.html">2 Types of SystemTap</A>
+ &nbsp; <B>  <A NAME="tex2html300"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html302"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/Contents.html b/langref/Contents.html
new file mode 100644 (file)
index 0000000..14ab54c
--- /dev/null
@@ -0,0 +1,252 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Contents</TITLE>
+<META NAME="description" CONTENT="Contents">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="SystemTap_overview.html">
+<LINK REL="previous" HREF="langref.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="SystemTap_overview.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html172"
+  HREF="SystemTap_overview.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html168"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html162"
+  HREF="langref.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>  
+<A NAME="tex2html170"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html173"
+  HREF="SystemTap_overview.html">1 SystemTap overview</A>
+<B> Up:</B> <A NAME="tex2html169"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html163"
+  HREF="langref.html">SystemTap Language Reference</A>
+ &nbsp; <B>  <A NAME="tex2html171"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<BR>
+
+<H2><A NAME="SECTION00010000000000000000">
+Contents</A>
+</H2>
+<!--Table of Contents-->
+
+<UL>
+<LI><A NAME="tex2html174"
+  HREF="SystemTap_overview.html">1 SystemTap overview</A>
+<UL>
+<LI><A NAME="tex2html175"
+  HREF="SystemTap_overview.html#SECTION00021000000000000000">1.1 About this guide</A>
+<LI><A NAME="tex2html176"
+  HREF="SystemTap_overview.html#SECTION00022000000000000000">1.2 Reasons to use SystemTap</A>
+<LI><A NAME="tex2html177"
+  HREF="SystemTap_overview.html#SECTION00023000000000000000">1.3 Event-action language</A>
+<LI><A NAME="tex2html178"
+  HREF="SystemTap_overview.html#SECTION00024000000000000000">1.4 Sample SystemTap scripts</A>
+<LI><A NAME="tex2html179"
+  HREF="SystemTap_overview.html#SECTION00025000000000000000">1.5 The stap command</A>
+<LI><A NAME="tex2html180"
+  HREF="SystemTap_overview.html#SECTION00026000000000000000">1.6 Safety and security</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html181"
+  HREF="Types_SystemTap_scripts.html">2 Types of SystemTap scripts</A>
+<UL>
+<LI><A NAME="tex2html182"
+  HREF="Types_SystemTap_scripts.html#SECTION00031000000000000000">2.1 Probe scripts</A>
+<LI><A NAME="tex2html183"
+  HREF="Types_SystemTap_scripts.html#SECTION00032000000000000000">2.2 Tapset scripts</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html184"
+  HREF="Components_SystemTap_script.html">3 Components of a SystemTap script</A>
+<UL>
+<LI><A NAME="tex2html185"
+  HREF="Components_SystemTap_script.html#SECTION00041000000000000000">3.1 Probe definitions</A>
+<LI><A NAME="tex2html186"
+  HREF="Components_SystemTap_script.html#SECTION00042000000000000000">3.2 Probe aliases</A>
+<LI><A NAME="tex2html187"
+  HREF="Components_SystemTap_script.html#SECTION00043000000000000000">3.3 Variables</A>
+<LI><A NAME="tex2html188"
+  HREF="Components_SystemTap_script.html#SECTION00044000000000000000">3.4 Auxiliary functions</A>
+<LI><A NAME="tex2html189"
+  HREF="Components_SystemTap_script.html#SECTION00045000000000000000">3.5 Embedded C</A>
+<LI><A NAME="tex2html190"
+  HREF="Components_SystemTap_script.html#SECTION00046000000000000000">3.6 Embedded C functions</A>
+<LI><A NAME="tex2html191"
+  HREF="Components_SystemTap_script.html#SECTION00047000000000000000">3.7 Embedded C pragma comments</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html192"
+  HREF="Probe_points.html">4 Probe points</A>
+<UL>
+<LI><A NAME="tex2html193"
+  HREF="Probe_points.html#SECTION00051000000000000000">4.1 General syntax</A>
+<LI><A NAME="tex2html194"
+  HREF="Probe_points.html#SECTION00052000000000000000">4.2 Built-in probe point types (DWARF probes)</A>
+<LI><A NAME="tex2html195"
+  HREF="Probe_points.html#SECTION00053000000000000000">4.3 Function return probes</A>
+<LI><A NAME="tex2html196"
+  HREF="Probe_points.html#SECTION00054000000000000000">4.4 DWARF-less probing</A>
+<LI><A NAME="tex2html197"
+  HREF="Probe_points.html#SECTION00055000000000000000">4.5 Userspace probing</A>
+<LI><A NAME="tex2html198"
+  HREF="Probe_points.html#SECTION00056000000000000000">4.6 Java probes</A>
+<LI><A NAME="tex2html199"
+  HREF="Probe_points.html#SECTION00057000000000000000">4.7 PROCFS probes</A>
+<LI><A NAME="tex2html200"
+  HREF="Probe_points.html#SECTION00058000000000000000">4.8 Marker probes</A>
+<LI><A NAME="tex2html201"
+  HREF="Probe_points.html#SECTION00059000000000000000">4.9 Tracepoints</A>
+<LI><A NAME="tex2html202"
+  HREF="Probe_points.html#SECTION000510000000000000000">4.10 Syscall probes</A>
+<LI><A NAME="tex2html203"
+  HREF="Probe_points.html#SECTION000511000000000000000">4.11 Timer probes</A>
+<LI><A NAME="tex2html204"
+  HREF="Probe_points.html#SECTION000512000000000000000">4.12 Special probe points</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html205"
+  HREF="Language_elements.html">5 Language elements</A>
+<UL>
+<LI><A NAME="tex2html206"
+  HREF="Language_elements.html#SECTION00061000000000000000">5.1 Identifiers</A>
+<LI><A NAME="tex2html207"
+  HREF="Language_elements.html#SECTION00062000000000000000">5.2 Data types</A>
+<LI><A NAME="tex2html208"
+  HREF="Language_elements.html#SECTION00063000000000000000">5.3 Semicolons</A>
+<LI><A NAME="tex2html209"
+  HREF="Language_elements.html#SECTION00064000000000000000">5.4 Comments</A>
+<LI><A NAME="tex2html210"
+  HREF="Language_elements.html#SECTION00065000000000000000">5.5 Whitespace</A>
+<LI><A NAME="tex2html211"
+  HREF="Language_elements.html#SECTION00066000000000000000">5.6 Expressions</A>
+<LI><A NAME="tex2html212"
+  HREF="Language_elements.html#SECTION00067000000000000000">5.7 Literals passed in from the stap command line</A>
+<LI><A NAME="tex2html213"
+  HREF="Language_elements.html#SECTION00068000000000000000">5.8 Conditional compilation</A>
+<LI><A NAME="tex2html214"
+  HREF="Language_elements.html#SECTION00069000000000000000">5.9 Preprocessor macros</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html215"
+  HREF="Statement_types.html">6 Statement types</A>
+<UL>
+<LI><A NAME="tex2html216"
+  HREF="Statement_types.html#SECTION00071000000000000000">6.1 break and continue</A>
+<LI><A NAME="tex2html217"
+  HREF="Statement_types.html#SECTION00072000000000000000">6.2 try/catch</A>
+<LI><A NAME="tex2html218"
+  HREF="Statement_types.html#SECTION00073000000000000000">6.3 delete</A>
+<LI><A NAME="tex2html219"
+  HREF="Statement_types.html#SECTION00074000000000000000">6.4 EXP (expression)</A>
+<LI><A NAME="tex2html220"
+  HREF="Statement_types.html#SECTION00075000000000000000">6.5 for</A>
+<LI><A NAME="tex2html221"
+  HREF="Statement_types.html#SECTION00076000000000000000">6.6 foreach</A>
+<LI><A NAME="tex2html222"
+  HREF="Statement_types.html#SECTION00077000000000000000">6.7 if</A>
+<LI><A NAME="tex2html223"
+  HREF="Statement_types.html#SECTION00078000000000000000">6.8 next</A>
+<LI><A NAME="tex2html224"
+  HREF="Statement_types.html#SECTION00079000000000000000">6.9 ; (null statement)</A>
+<LI><A NAME="tex2html225"
+  HREF="Statement_types.html#SECTION000710000000000000000">6.10 return</A>
+<LI><A NAME="tex2html226"
+  HREF="Statement_types.html#SECTION000711000000000000000">6.11 { } (statement block)</A>
+<LI><A NAME="tex2html227"
+  HREF="Statement_types.html#SECTION000712000000000000000">6.12 while</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html228"
+  HREF="Associative_arrays.html">7 Associative arrays</A>
+<UL>
+<LI><A NAME="tex2html229"
+  HREF="Associative_arrays.html#SECTION00081000000000000000">7.1 Examples</A>
+<LI><A NAME="tex2html230"
+  HREF="Associative_arrays.html#SECTION00082000000000000000">7.2 Types of values</A>
+<LI><A NAME="tex2html231"
+  HREF="Associative_arrays.html#SECTION00083000000000000000">7.3 Array capacity</A>
+<LI><A NAME="tex2html232"
+  HREF="Associative_arrays.html#SECTION00084000000000000000">7.4 Array wrapping</A>
+<LI><A NAME="tex2html233"
+  HREF="Associative_arrays.html#SECTION00085000000000000000">7.5 Iteration, foreach</A>
+<LI><A NAME="tex2html234"
+  HREF="Associative_arrays.html#SECTION00086000000000000000">7.6 Deletion</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html235"
+  HREF="Statistics_aggregates.html">8 Statistics (aggregates)</A>
+<UL>
+<LI><A NAME="tex2html236"
+  HREF="Statistics_aggregates.html#SECTION00091000000000000000">8.1 The aggregation (&lt; &lt; &lt;) operator</A>
+<LI><A NAME="tex2html237"
+  HREF="Statistics_aggregates.html#SECTION00092000000000000000">8.2 Extraction functions</A>
+<LI><A NAME="tex2html238"
+  HREF="Statistics_aggregates.html#SECTION00093000000000000000">8.3 Integer extractors</A>
+<LI><A NAME="tex2html239"
+  HREF="Statistics_aggregates.html#SECTION00094000000000000000">8.4 Histogram extractors</A>
+<LI><A NAME="tex2html240"
+  HREF="Statistics_aggregates.html#SECTION00095000000000000000">8.5 Deletion</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html241"
+  HREF="Formatted_output.html">9 Formatted output</A>
+<UL>
+<LI><A NAME="tex2html242"
+  HREF="Formatted_output.html#SECTION000101000000000000000">9.1 print</A>
+<LI><A NAME="tex2html243"
+  HREF="Formatted_output.html#SECTION000102000000000000000">9.2 printf</A>
+<LI><A NAME="tex2html244"
+  HREF="Formatted_output.html#SECTION000103000000000000000">9.3 printd</A>
+<LI><A NAME="tex2html245"
+  HREF="Formatted_output.html#SECTION000104000000000000000">9.4 printdln</A>
+<LI><A NAME="tex2html246"
+  HREF="Formatted_output.html#SECTION000105000000000000000">9.5 println</A>
+<LI><A NAME="tex2html247"
+  HREF="Formatted_output.html#SECTION000106000000000000000">9.6 sprint</A>
+<LI><A NAME="tex2html248"
+  HREF="Formatted_output.html#SECTION000107000000000000000">9.7 sprintf</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html249"
+  HREF="Tapset_defined_functions.html">10 Tapset-defined functions</A>
+<LI><A NAME="tex2html250"
+  HREF="Further_Reference.html">11 For Further Reference</A>
+<LI><A NAME="tex2html251"
+  HREF="Index.html">Index</A>
+</UL>
+<!--End of Table of Contents-->
+
+
+<P>
+<BR><HR>
+
+</BODY>
+</HTML>
diff --git a/langref/Formatted_output.html b/langref/Formatted_output.html
new file mode 100644 (file)
index 0000000..1e8b91c
--- /dev/null
@@ -0,0 +1,463 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>9 Formatted output</TITLE>
+<META NAME="description" CONTENT="9 Formatted output">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Tapset_defined_functions.html">
+<LINK REL="previous" HREF="Statistics_aggregates.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Tapset_defined_functions.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html499"
+  HREF="Tapset_defined_functions.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html493"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html487"
+  HREF="Statistics_aggregates.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html495"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html497"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html500"
+  HREF="Tapset_defined_functions.html">10 Tapset-defined functions</A>
+<B> Up:</B> <A NAME="tex2html494"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html488"
+  HREF="Statistics_aggregates.html">8 Statistics (aggregates)</A>
+ &nbsp; <B>  <A NAME="tex2html496"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html498"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html501"
+  HREF="Formatted_output.html#SECTION000101000000000000000">9.1 print</A>
+<LI><A NAME="tex2html502"
+  HREF="Formatted_output.html#SECTION000102000000000000000">9.2 printf</A>
+<LI><A NAME="tex2html503"
+  HREF="Formatted_output.html#SECTION000103000000000000000">9.3 printd</A>
+<LI><A NAME="tex2html504"
+  HREF="Formatted_output.html#SECTION000104000000000000000">9.4 printdln</A>
+<LI><A NAME="tex2html505"
+  HREF="Formatted_output.html#SECTION000105000000000000000">9.5 println</A>
+<LI><A NAME="tex2html506"
+  HREF="Formatted_output.html#SECTION000106000000000000000">9.6 sprint</A>
+<LI><A NAME="tex2html507"
+  HREF="Formatted_output.html#SECTION000107000000000000000">9.7 sprintf</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION000100000000000000000">
+9 Formatted output</A>
+</H1>
+
+<P>
+
+<H2><A NAME="SECTION000101000000000000000"></A>
+<A NAME="1141"></A>
+<BR>
+9.1 print
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+print ()
+</PRE>
+</DD>
+</DL>This function prints a single value of any type.
+
+<P>
+
+<H2><A NAME="SECTION000102000000000000000"></A>
+<A NAME="1147"></A>
+<BR>
+9.2 printf
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+printf (fmt:string, ...)
+</PRE>
+</DD>
+</DL>The printf function takes a formatting string as an argument, and a number
+of values of corresponding types, and prints them all. The format must be a
+literal string constant. The printf formatting directives are similar to those
+of C, except that they are fully checked for type by the translator.
+
+<P>
+The formatting string can contain tags that are defined as follows:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+%[flags][width][.precision][length]specifier
+</PRE>
+</DD>
+</DL>Where <TT>specifier</TT> is required and defines the type and the interpretation
+of the value of the corresponding argument. The following table shows the
+details of the specifier parameter:
+
+<P>
+<BR><P></P>
+<DIV ALIGN="CENTER">
+
+<A NAME="1158"></A>
+<TABLE CELLPADDING=3 BORDER="1">
+<CAPTION><STRONG>Table:</STRONG>
+printf specifier values</CAPTION>
+<TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=72>
+<B>Specifier</B></TH>
+<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=252>
+<B>Output</B></TH>
+<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=90>
+<B>Example</B>
+<BR>
+d or i</TH>
+</TR>
+</TABLE>
+</DIV>
+<BR>
+The tag can also contain <TT>flags</TT>, <TT>width</TT>, <TT>.precision</TT>
+and <TT>modifiers</TT> sub-specifiers, which are optional and follow these
+specifications:
+
+<P>
+<BR><P></P>
+<DIV ALIGN="CENTER">
+
+<A NAME="1176"></A>
+<TABLE CELLPADDING=3 BORDER="1">
+<CAPTION><STRONG>Table:</STRONG>
+printf flag values</CAPTION>
+<TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=108>
+<B>Flags</B></TH>
+<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=324>
+<B>Description</B>
+<BR>
+
+- (minus sign)</TH>
+</TR>
+</TABLE>
+</DIV>
+<BR>
+
+<P>
+<BR><P></P>
+<DIV ALIGN="CENTER">
+
+<A NAME="1195"></A>
+<TABLE CELLPADDING=3 BORDER="1">
+<CAPTION><STRONG>Table:</STRONG>
+printf width values</CAPTION>
+<TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=108>
+<B>Width</B></TH>
+<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=324>
+<B>Description</B>
+<BR>
+
+(number)</TH>
+</TR>
+</TABLE>
+</DIV>
+<BR>
+
+<P>
+<BR><P></P>
+<DIV ALIGN="CENTER">
+
+<P>
+
+<P>
+<A NAME="1206"></A>
+<TABLE CELLPADDING=3 BORDER="1">
+<CAPTION><STRONG>Table:</STRONG>
+printf precision values</CAPTION>
+<TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=108>
+<B>Precision</B></TH>
+<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=324>
+<B>Description</B>
+<BR>
+
+.number</TH>
+</TR>
+</TABLE>
+</DIV>
+<BR>
+
+<P>
+<B>Binary Write Examples</B>
+
+<P>
+The following is an example of using the binary write functions:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe begin {
+    for (i = 97; i &lt; 110; i++)
+        printf("%3d: %1b%1b%1b\n", i, i, i-32, i-64)
+    exit()
+}
+</PRE>
+</DD>
+</DL>This prints:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+ 97: aA!
+ 98: bB"
+ 99: cC#
+100: dD$
+101: eE%
+102: fF&amp;
+103: gG'
+104: hH(
+105: iI)
+106: jJ*
+107: kK+
+108: lL,
+109: mM-
+</PRE>
+</DD>
+</DL>Another example:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+stap -e 'probe begin{printf("%b%b", 0xc0dedbad, \
+0x12345678);exit()}' | hexdump -C
+</PRE>
+</DD>
+</DL>This prints:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+00000000  ad db de c0 00 00 00 00  78 56 34 12 00 00 00 00  |........xV4.....|
+00000010
+</PRE>
+</DD>
+</DL>Another example:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe begin{
+    printf("%1b%1b%1blo %1b%1brld\n", 72,101,108,87,111)
+    exit()
+}
+</PRE>
+</DD>
+</DL>This prints:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+Hello World
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION000103000000000000000"></A>
+<A NAME="1246"></A>
+<BR>
+9.3 printd
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+printd (delimiter:string, ...)
+</PRE>
+</DD>
+</DL>This function takes a string delimiter and two or more values of any type, then
+prints the values with the delimiter interposed. The delimiter must be a
+literal string constant.
+
+<P>
+For example:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+printd("/", "one", "two", "three", 4, 5, 6)
+</PRE>
+</DD>
+</DL>prints:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+one/two/three/4/5/6
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION000104000000000000000"></A>
+<A NAME="1260"></A>
+<BR>
+9.4 printdln
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+printdln (delimiter:string, ...)
+</PRE>
+</DD>
+</DL>This function operates like <TT>printd</TT>, but also appends a newline.
+
+<P>
+
+<H2><A NAME="SECTION000105000000000000000"></A>
+<A NAME="1267"></A>
+<BR>
+9.5 println
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+println ()
+</PRE>
+</DD>
+</DL>This function prints a single value like <TT>print</TT>,
+but also appends a newline.
+
+<P>
+
+<H2><A NAME="SECTION000106000000000000000"></A>
+<A NAME="1274"></A>
+<BR>
+9.6 sprint
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+sprint:string ()
+</PRE>
+</DD>
+</DL>This function operates like <TT>print</TT>, but returns the string rather
+than printing it.
+
+<P>
+
+<H2><A NAME="SECTION000107000000000000000"></A>
+<A NAME="1281"></A>
+<BR>
+9.7 sprintf
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+sprintf:string (fmt:string, ...)
+</PRE>
+</DD>
+</DL>This function operates like <TT>printf</TT>, but returns the formatted string
+rather than printing it.
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html499"
+  HREF="Tapset_defined_functions.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html493"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html487"
+  HREF="Statistics_aggregates.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html495"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html497"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html500"
+  HREF="Tapset_defined_functions.html">10 Tapset-defined functions</A>
+<B> Up:</B> <A NAME="tex2html494"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html488"
+  HREF="Statistics_aggregates.html">8 Statistics (aggregates)</A>
+ &nbsp; <B>  <A NAME="tex2html496"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html498"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/Further_Reference.html b/langref/Further_Reference.html
new file mode 100644 (file)
index 0000000..90381b7
--- /dev/null
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>11 For Further Reference</TITLE>
+<META NAME="description" CONTENT="11 For Further Reference">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Index.html">
+<LINK REL="previous" HREF="Tapset_defined_functions.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Index.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html534"
+  HREF="Index.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html528"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html522"
+  HREF="Tapset_defined_functions.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html530"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html532"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html535"
+  HREF="Index.html">Index</A>
+<B> Up:</B> <A NAME="tex2html529"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html523"
+  HREF="Tapset_defined_functions.html">10 Tapset-defined functions</A>
+ &nbsp; <B>  <A NAME="tex2html531"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html533"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION000120000000000000000"></A><A NAME="sec:For-Further-Reference"></A>
+<BR>
+11 For Further Reference
+</H1>
+
+<P>
+For more information, see:
+
+<UL>
+<LI>The SystemTap tutorial at <TT><A NAME="tex2html9"
+  HREF="http://sourceware.org/systemtap/tutorial/">http://sourceware.org/systemtap/tutorial/</A></TT>
+</LI>
+<LI>The SystemTap wiki at <TT><A NAME="tex2html10"
+  HREF="http://sourceware.org/systemtap/wiki">http://sourceware.org/systemtap/wiki</A></TT>
+</LI>
+<LI>The SystemTap documentation page at <TT><A NAME="tex2html11"
+  HREF="http://sourceware.org/systemtap/documentation.html">http://sourceware.org/systemtap/documentation.html</A></TT>
+</LI>
+<LI>From an unpacked source tarball or GIT directory, the examples in in the
+src/examples directory, the tapsets in the src/tapset directory, and the
+test scripts in the src/testsuite directory.
+</LI>
+<LI>The man pages for tapsets.
+For a list, run the command <TT>``man -k tapset::</TT>''.
+</LI>
+<LI>The man pages for individual probe points.
+For a list, run the command <TT>``man -k probe::</TT>''.
+</LI>
+<LI>The man pages for individual systemtap functions.
+For a list, run the command <TT>``man -k function::</TT>''.
+</LI>
+</UL>
+
+<P>
+
+
+
+<BR><HR>
+
+</BODY>
+</HTML>
diff --git a/langref/Index.html b/langref/Index.html
new file mode 100644 (file)
index 0000000..edf3256
--- /dev/null
@@ -0,0 +1,300 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Index</TITLE>
+<META NAME="description" CONTENT="Index">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="About_this_document.html">
+<LINK REL="previous" HREF="Further_Reference.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="About_this_document.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html546"
+  HREF="About_this_document.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html542"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html536"
+  HREF="Further_Reference.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html544"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
+<BR>
+<B> Next:</B> <A NAME="tex2html547"
+  HREF="About_this_document.html">About this document ...</A>
+<B> Up:</B> <A NAME="tex2html543"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html537"
+  HREF="Further_Reference.html">11 For Further Reference</A>
+ &nbsp; <B>  <A NAME="tex2html545"
+  HREF="Contents.html">Contents</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<BR>
+
+<H2><A NAME="SECTION000130000000000000000">
+Index</A>
+</H2><DL COMPACT>
+<DT><STRONG>$</STRONG>
+<DD><A HREF="Language_elements.html#826">5.7.1</A>
+<DT><STRONG>+=</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#161">3.2.2</A>
+<DT><STRONG>;</STRONG>
+<DD><A HREF="Language_elements.html#738">5.3</A>
+ | <A HREF="Statement_types.html#1000">6.9</A>
+<DT><STRONG>&lt; &lt; &lt;</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1358">8.1</A>
+<DT><STRONG>=</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#154">3.2.1</A>
+<DT><STRONG>?</STRONG>
+<DD><A HREF="Probe_points.html#281">4.1.4</A>
+ | <A HREF="Language_elements.html#774">5.6.7</A>
+<DT><STRONG>{ }</STRONG>
+<DD><A HREF="Statement_types.html#1015">6.11</A>
+<DT><STRONG>aggregates</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1063">8</A>
+<DT><STRONG>arch</STRONG>
+<DD><A HREF="Language_elements.html#882">5.8.4</A>
+<DT><STRONG>associative arrays</STRONG>
+<DD><A HREF="Associative_arrays.html#1029">7</A>
+<DT><STRONG>asynchronous</STRONG>
+<DD><A HREF="Probe_points.html#264">4.1</A>
+<DT><STRONG>auxiliary functions</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#199">3.4</A>
+<DT><STRONG>avg</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1089">8.3.5</A>
+<DT><STRONG>begin</STRONG>
+<DD><A HREF="Probe_points.html#673">4.12.1</A>
+<DT><STRONG>binary</STRONG>
+<DD><A HREF="Language_elements.html#750">5.6.1</A>
+ | <A HREF="Language_elements.html#756">5.6.2</A>
+<DT><STRONG>break</STRONG>
+<DD><A HREF="Statement_types.html#924">6.1</A>
+<DT><STRONG>built-in probes</STRONG>
+<DD><A HREF="Probe_points.html#287">4.2</A>
+<DT><STRONG>catch</STRONG>
+<DD><A HREF="Statement_types.html#932">6.2</A>
+<DT><STRONG>comments</STRONG>
+<DD><A HREF="Language_elements.html#740">5.4</A>
+<DT><STRONG>comparison</STRONG>
+<DD><A HREF="Language_elements.html#771">5.6.6</A>
+<DT><STRONG>conditions</STRONG>
+<DD><A HREF="Language_elements.html#847">5.8.1</A>
+<DT><STRONG>constraints</STRONG>
+<DD><A HREF="SystemTap_overview.html#96">1.6</A>
+<DT><STRONG>continue</STRONG>
+<DD><A HREF="Statement_types.html#925">6.1</A>
+<DT><STRONG>count</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1081">8.3.1</A>
+<DT><STRONG>data types</STRONG>
+<DD><A HREF="Language_elements.html#714">5.2</A>
+<DT><STRONG>defined target variable</STRONG>
+<DD><A HREF="Language_elements.html#858">5.8.2</A>
+<DT><STRONG>delete</STRONG>
+<DD><A HREF="Statement_types.html#940">6.3</A>
+ | <A HREF="Associative_arrays.html#1059">7.6</A>
+ | <A HREF="Statistics_aggregates.html#1136">8.5</A>
+<DT><STRONG>dwarf probes</STRONG>
+<DD><A HREF="Probe_points.html#288">4.2</A>
+<DT><STRONG>DWARF-less probing</STRONG>
+<DD><A HREF="Probe_points.html#377">4.4</A>
+<DT><STRONG>embedded C</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#217">3.5</A>
+<DT><STRONG>end</STRONG>
+<DD><A HREF="Probe_points.html#677">4.12.2</A>
+<DT><STRONG>epilogue-style aliases</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#160">3.2.2</A>
+<DT><STRONG>error</STRONG>
+<DD><A HREF="Probe_points.html#683">4.12.3</A>
+<DT><STRONG>example scripts</STRONG>
+<DD><A HREF="SystemTap_overview.html#52">1.4</A>
+<DT><STRONG>expression</STRONG>
+<DD><A HREF="Statement_types.html#957">6.4</A>
+<DT><STRONG>expressions</STRONG>
+<DD><A HREF="Language_elements.html#748">5.6</A>
+<DT><STRONG>extraction</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1078">8.2</A>
+<DT><STRONG>fn</STRONG>
+<DD><A HREF="Language_elements.html#780">5.6.9</A>
+<DT><STRONG>for</STRONG>
+<DD><A HREF="Statement_types.html#960">6.5</A>
+<DT><STRONG>foreach</STRONG>
+<DD><A HREF="Statement_types.html#969">6.6</A>
+ | <A HREF="Associative_arrays.html#1049">7.5</A>
+<DT><STRONG>grouping</STRONG>
+<DD><A HREF="Language_elements.html#777">5.6.8</A>
+<DT><STRONG>guru mode</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#218">3.5</A>
+<DT><STRONG>hist_linear</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1093">8.4.1</A>
+<DT><STRONG>hist_log</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1121">8.4.2</A>
+<DT><STRONG>histograms</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1091">8.4</A>
+<DT><STRONG>identifiers</STRONG>
+<DD><A HREF="Language_elements.html#711">5.1</A>
+<DT><STRONG>if</STRONG>
+<DD><A HREF="Statement_types.html#989">6.7</A>
+<DT><STRONG>index</STRONG>
+<DD><A HREF="Language_elements.html#818">5.6.12</A>
+<DT><STRONG>inference</STRONG>
+<DD><A HREF="Language_elements.html#715">5.2</A>
+<DT><STRONG>integers</STRONG>
+<DD><A HREF="Language_elements.html#721">5.2.2</A>
+<DT><STRONG>Java probes</STRONG>
+<DD><A HREF="Probe_points.html#558">4.6</A>
+<DT><STRONG>jiffies</STRONG>
+<DD><A HREF="Probe_points.html#646">4.11</A>
+<DT><STRONG>kernel version</STRONG>
+<DD><A HREF="Language_elements.html#864">5.8.3</A>
+<DT><STRONG>kernel.function</STRONG>
+<DD><A HREF="Probe_points.html#348">4.2.1</A>
+<DT><STRONG>kernel.statement</STRONG>
+<DD><A HREF="Probe_points.html#360">4.2.2</A>
+<DT><STRONG>kernel_v</STRONG>
+<DD><A HREF="Language_elements.html#866">5.8.3</A>
+<DT><STRONG>kernel_vr</STRONG>
+<DD><A HREF="Language_elements.html#865">5.8.3</A>
+<DT><STRONG>language</STRONG>
+<DD><A HREF="SystemTap_overview.html#48">1.3</A>
+<DT><STRONG>limits</STRONG>
+<DD><A HREF="SystemTap_overview.html#93">1.6</A>
+<DT><STRONG>literals</STRONG>
+<DD><A HREF="Language_elements.html#717">5.2.1</A>
+ | <A HREF="Language_elements.html#821">5.7</A>
+<DT><STRONG>local arrays</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#187">3.3</A>
+<DT><STRONG>marker probes</STRONG>
+<DD><A HREF="Probe_points.html#600">4.8</A>
+<DT><STRONG>max</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1087">8.3.4</A>
+<DT><STRONG>milliseconds</STRONG>
+<DD><A HREF="Probe_points.html#660">4.11</A>
+<DT><STRONG>min</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1085">8.3.3</A>
+<DT><STRONG>module().function</STRONG>
+<DD><A HREF="Probe_points.html#349">4.2.1</A>
+<DT><STRONG>module().statement</STRONG>
+<DD><A HREF="Probe_points.html#361">4.2.2</A>
+<DT><STRONG>never</STRONG>
+<DD><A HREF="Probe_points.html#705">4.12.5</A>
+<DT><STRONG>next</STRONG>
+<DD><A HREF="Statement_types.html#997">6.8</A>
+<DT><STRONG>null statement</STRONG>
+<DD><A HREF="Statement_types.html#1001">6.9</A>
+<DT><STRONG>numbers</STRONG>
+<DD><A HREF="Language_elements.html#722">5.2.2</A>
+<DT><STRONG>numeric</STRONG>
+<DD><A HREF="Language_elements.html#759">5.6.3</A>
+<DT><STRONG>pointer</STRONG>
+<DD><A HREF="Language_elements.html#783">5.6.10</A>
+<DT><STRONG>Pointer typecasting</STRONG>
+<DD><A HREF="Language_elements.html#786">5.6.11</A>
+<DT><STRONG>prefixes</STRONG>
+<DD><A HREF="Probe_points.html#266">4.1.1</A>
+<DT><STRONG>print</STRONG>
+<DD><A HREF="Formatted_output.html#1141">9.1</A>
+<DT><STRONG>printd</STRONG>
+<DD><A HREF="Formatted_output.html#1246">9.3</A>
+<DT><STRONG>printdln</STRONG>
+<DD><A HREF="Formatted_output.html#1260">9.4</A>
+<DT><STRONG>printf</STRONG>
+<DD><A HREF="Formatted_output.html#1147">9.2</A>
+<DT><STRONG>println</STRONG>
+<DD><A HREF="Formatted_output.html#1267">9.5</A>
+<DT><STRONG>probe aliases</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#133">3.2</A>
+<DT><STRONG>probe points</STRONG>
+<DD><A HREF="Probe_points.html#254">4</A>
+<DT><STRONG>probe sequence</STRONG>
+<DD><A HREF="Probe_points.html#693">4.12.4</A>
+<DT><STRONG>probe syntax</STRONG>
+<DD><A HREF="Probe_points.html#256">4.1</A>
+<DT><STRONG>process</STRONG>
+<DD><A HREF="Probe_points.html#407">4.5</A>
+<DT><STRONG>PROCFS probes</STRONG>
+<DD><A HREF="Probe_points.html#576">4.7</A>
+<DT><STRONG>prologue-style aliases</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#153">3.2.1</A>
+<DT><STRONG>randomize</STRONG>
+<DD><A HREF="Probe_points.html#653">4.11</A>
+<DT><STRONG>recursion</STRONG>
+<DD><A HREF="SystemTap_overview.html#74">1.4.3</A>
+<DT><STRONG>return</STRONG>
+<DD><A HREF="Statement_types.html#1007">6.10</A>
+<DT><STRONG>return probes</STRONG>
+<DD><A HREF="Probe_points.html#372">4.3</A>
+<DT><STRONG>sprint</STRONG>
+<DD><A HREF="Formatted_output.html#1274">9.6</A>
+<DT><STRONG>sprintf</STRONG>
+<DD><A HREF="Formatted_output.html#1281">9.7</A>
+<DT><STRONG>stap</STRONG>
+<DD><A HREF="SystemTap_overview.html#86">1.5</A>
+<DT><STRONG>STAP_ARG_</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#240">3.6</A>
+<DT><STRONG>STAP_RETVALUE</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#243">3.6</A>
+<DT><STRONG>statement block</STRONG>
+<DD><A HREF="Statement_types.html#1016">6.11</A>
+<DT><STRONG>strings</STRONG>
+<DD><A HREF="Language_elements.html#726">5.2.3</A>
+<DT><STRONG>suffixes</STRONG>
+<DD><A HREF="Probe_points.html#271">4.1.2</A>
+<DT><STRONG>sum</STRONG>
+<DD><A HREF="Statistics_aggregates.html#1083">8.3.2</A>
+<DT><STRONG>synchronous</STRONG>
+<DD><A HREF="Probe_points.html#262">4.1</A>
+<DT><STRONG>syscall probes</STRONG>
+<DD><A HREF="Probe_points.html#631">4.10</A>
+<DT><STRONG>systemtap_privilege</STRONG>
+<DD><A HREF="Language_elements.html#885">5.8.5</A>
+<DT><STRONG>target variables</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#131">3.1</A>
+<DT><STRONG>timer probes</STRONG>
+<DD><A HREF="Probe_points.html#645">4.11</A>
+<DT><STRONG>tokens</STRONG>
+<DD><A HREF="Language_elements.html#888">5.8.6</A>
+<DT><STRONG>tracepoints</STRONG>
+<DD><A HREF="Probe_points.html#616">4.9</A>
+<DT><STRONG>try</STRONG>
+<DD><A HREF="Statement_types.html#931">6.2</A>
+<DT><STRONG>unary</STRONG>
+<DD><A HREF="Language_elements.html#767">5.6.5</A>
+<DT><STRONG>unused variables</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#196">3.3.1</A>
+<DT><STRONG>userspace probing</STRONG>
+<DD><A HREF="Probe_points.html#406">4.5</A>
+<DT><STRONG>variables</STRONG>
+<DD><A HREF="Components_SystemTap_script.html#186">3.3</A>
+<DT><STRONG>while</STRONG>
+<DD><A HREF="Statement_types.html#1022">6.12</A>
+<DT><STRONG>whitespace</STRONG>
+<DD><A HREF="Language_elements.html#746">5.5</A>
+<DT><STRONG>wildcards</STRONG>
+<DD><A HREF="Probe_points.html#274">4.1.3</A>
+
+</DL>
+<BR><HR>
+
+</BODY>
+</HTML>
diff --git a/langref/Language_elements.html b/langref/Language_elements.html
new file mode 100644 (file)
index 0000000..857c5e1
--- /dev/null
@@ -0,0 +1,909 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>5 Language elements</TITLE>
+<META NAME="description" CONTENT="5 Language elements">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Statement_types.html">
+<LINK REL="previous" HREF="Probe_points.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Statement_types.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html375"
+  HREF="Statement_types.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html369"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html363"
+  HREF="Probe_points.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html371"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html373"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html376"
+  HREF="Statement_types.html">6 Statement types</A>
+<B> Up:</B> <A NAME="tex2html370"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html364"
+  HREF="Probe_points.html">4 Probe points</A>
+ &nbsp; <B>  <A NAME="tex2html372"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html374"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html377"
+  HREF="Language_elements.html#SECTION00061000000000000000">5.1 Identifiers</A>
+<LI><A NAME="tex2html378"
+  HREF="Language_elements.html#SECTION00062000000000000000">5.2 Data types</A>
+<UL>
+<LI><A NAME="tex2html379"
+  HREF="Language_elements.html#SECTION00062100000000000000">5.2.1 Literals</A>
+<LI><A NAME="tex2html380"
+  HREF="Language_elements.html#SECTION00062200000000000000">5.2.2 Integers</A>
+<LI><A NAME="tex2html381"
+  HREF="Language_elements.html#SECTION00062300000000000000">5.2.3 Strings</A>
+<LI><A NAME="tex2html382"
+  HREF="Language_elements.html#SECTION00062400000000000000">5.2.4 Associative arrays</A>
+<LI><A NAME="tex2html383"
+  HREF="Language_elements.html#SECTION00062500000000000000">5.2.5 Statistics</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html384"
+  HREF="Language_elements.html#SECTION00063000000000000000">5.3 Semicolons</A>
+<LI><A NAME="tex2html385"
+  HREF="Language_elements.html#SECTION00064000000000000000">5.4 Comments</A>
+<LI><A NAME="tex2html386"
+  HREF="Language_elements.html#SECTION00065000000000000000">5.5 Whitespace</A>
+<LI><A NAME="tex2html387"
+  HREF="Language_elements.html#SECTION00066000000000000000">5.6 Expressions</A>
+<UL>
+<LI><A NAME="tex2html388"
+  HREF="Language_elements.html#SECTION00066100000000000000">5.6.1 Binary numeric operators</A>
+<LI><A NAME="tex2html389"
+  HREF="Language_elements.html#SECTION00066200000000000000">5.6.2 Binary string operators</A>
+<LI><A NAME="tex2html390"
+  HREF="Language_elements.html#SECTION00066300000000000000">5.6.3 Numeric assignment operators</A>
+<LI><A NAME="tex2html391"
+  HREF="Language_elements.html#SECTION00066400000000000000">5.6.4 String assignment operators</A>
+<LI><A NAME="tex2html392"
+  HREF="Language_elements.html#SECTION00066500000000000000">5.6.5 Unary numeric operators</A>
+<LI><A NAME="tex2html393"
+  HREF="Language_elements.html#SECTION00066600000000000000">5.6.6 Numeric &amp; string comparison, regular expression matching operators</A>
+<LI><A NAME="tex2html394"
+  HREF="Language_elements.html#SECTION00066700000000000000">5.6.7 Ternary operator</A>
+<LI><A NAME="tex2html395"
+  HREF="Language_elements.html#SECTION00066800000000000000">5.6.8 Grouping operator</A>
+<LI><A NAME="tex2html396"
+  HREF="Language_elements.html#SECTION00066900000000000000">5.6.9 Function call</A>
+<LI><A NAME="tex2html397"
+  HREF="Language_elements.html#SECTION000661000000000000000">5.6.10 $ptr-&gt;member</A>
+<LI><A NAME="tex2html398"
+  HREF="Language_elements.html#SECTION000661100000000000000">5.6.11 Pointer typecasting</A>
+<LI><A NAME="tex2html399"
+  HREF="Language_elements.html#SECTION000661200000000000000">5.6.12 &lt;value&gt; in &lt;array_name&gt;</A>
+<LI><A NAME="tex2html400"
+  HREF="Language_elements.html#SECTION000661300000000000000">5.6.13 [ &lt;value&gt;, ... ] in &lt;array_name&gt;</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html401"
+  HREF="Language_elements.html#SECTION00067000000000000000">5.7 Literals passed in from the stap command line</A>
+<UL>
+<LI><A NAME="tex2html402"
+  HREF="Language_elements.html#SECTION00067100000000000000">5.7.1 $1 ... $&lt;NN&gt; for literal pasting</A>
+<LI><A NAME="tex2html403"
+  HREF="Language_elements.html#SECTION00067200000000000000">5.7.2 @1 ... @&lt;NN&gt; for strings</A>
+<LI><A NAME="tex2html404"
+  HREF="Language_elements.html#SECTION00067300000000000000">5.7.3 Examples</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html405"
+  HREF="Language_elements.html#SECTION00068000000000000000">5.8 Conditional compilation</A>
+<UL>
+<LI><A NAME="tex2html406"
+  HREF="Language_elements.html#SECTION00068100000000000000">5.8.1 Conditions</A>
+<LI><A NAME="tex2html407"
+  HREF="Language_elements.html#SECTION00068200000000000000">5.8.2 Conditions based on available target variables</A>
+<LI><A NAME="tex2html408"
+  HREF="Language_elements.html#SECTION00068300000000000000">5.8.3 Conditions based on kernel version: kernel_v, kernel_vr</A>
+<LI><A NAME="tex2html409"
+  HREF="Language_elements.html#SECTION00068400000000000000">5.8.4 Conditions based on architecture: arch</A>
+<LI><A NAME="tex2html410"
+  HREF="Language_elements.html#SECTION00068500000000000000">5.8.5 Conditions based on privilege level: systemtap_privilege</A>
+<LI><A NAME="tex2html411"
+  HREF="Language_elements.html#SECTION00068600000000000000">5.8.6 True and False Tokens</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html412"
+  HREF="Language_elements.html#SECTION00069000000000000000">5.9 Preprocessor macros</A>
+<UL>
+<LI><A NAME="tex2html413"
+  HREF="Language_elements.html#SECTION00069100000000000000">5.9.1 Local macros</A>
+<LI><A NAME="tex2html414"
+  HREF="Language_elements.html#SECTION00069200000000000000">5.9.2 Library macros</A>
+</UL></UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:Language-Elements"></A>
+<BR>
+5 Language elements
+</H1>
+
+<H2><A NAME="SECTION00061000000000000000"></A>
+<A NAME="711"></A>
+<BR>
+5.1 Identifiers
+</H2>
+<I>Identifiers</I> are used to name variables and functions. They are an
+alphanumeric sequence that may include the underscore (_) and dollar sign
+($) characters. They have the same syntax as C identifiers, except that
+the dollar sign is also a legal character. Identifiers that begin with a
+dollar sign are interpreted as references to variables in the target software,
+rather than to SystemTap script variables. Identifiers may not start with
+a plain digit.
+
+<P>
+
+<H2><A NAME="SECTION00062000000000000000"></A><A NAME="sub:Data-types"></A>
+<A NAME="714"></A>
+<BR>
+5.2 Data types
+</H2>
+The SystemTap language includes a small number of data types, but no type
+declarations. A variable's type is inferred<A NAME="715"></A> from its use.
+To support this inference, the translator enforces consistent typing of function
+arguments and return values, array indices and values. There are no implicit
+type conversions between strings and numbers. Inconsistent type-related use
+of an identifier signals an error.
+
+<P>
+
+<H3><A NAME="SECTION00062100000000000000"></A>
+<A NAME="717"></A>
+<BR>
+5.2.1 Literals
+</H3>
+Literals are either strings or integers.
+Literal integers can be expressed as decimal,
+octal, or hexadecimal, using C notation. Type suffixes (e.g., <I>L</I> or
+<I>U</I>) are not used.
+
+<P>
+
+<H3><A NAME="SECTION00062200000000000000"></A><A NAME="sub:Integers"></A>
+<A NAME="721"></A> <A NAME="722"></A>
+<BR>
+5.2.2 Integers
+</H3>
+Integers are decimal, hexadecimal, or octal, and use the same notation as
+in C. Integers are 64-bit signed quantities, although the parser also accepts
+(and wraps around) values above positive <IMG
+ WIDTH="25" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.png"
+ ALT="$2^{63}$"> but below <IMG
+ WIDTH="25" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.png"
+ ALT="$2^{64}$">.
+
+<P>
+
+<H3><A NAME="SECTION00062300000000000000"></A><A NAME="sub:Strings"></A>
+<A NAME="726"></A>
+<BR>
+5.2.3 Strings
+</H3>
+
+<P>
+Strings are enclosed in quotation marks (``string''), and pass
+through standard C escape codes with backslashes. A string literal may
+be split into several pieces, which are glued together, as follows.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+str1 = "foo" "bar"
+  /* --&gt; becomes "foobar" */
+
+str2 = "a good way to do a multi-line\n"
+       "string literal"
+  /* --&gt; becomes "a good way to do a multi-line\nstring literal" */
+
+str3 = "also a good way to " @1 " splice command line args"
+  /* --&gt; becomes "also a good way to foo splice command line args",
+     assuming @1 is given as foo on the command line */
+</PRE>
+</DD>
+</DL>
+<P>
+Observe that script arguments can also be glued into a string literal.
+
+<P>
+Strings are limited in length to MAXSTRINGLEN. For more information
+about this and other limits, see Section&nbsp;<A HREF="SystemTap_overview.html#sub:SystemTap-safety"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+
+<P>
+
+<H3><A NAME="SECTION00062400000000000000">
+5.2.4 Associative arrays</A>
+</H3>
+
+<P>
+See Section&nbsp;<A HREF="Associative_arrays.html#sec:Associative-Arrays"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>
+
+<P>
+
+<H3><A NAME="SECTION00062500000000000000">
+5.2.5 Statistics</A>
+</H3>
+
+<P>
+See Section&nbsp;<A HREF="Statistics_aggregates.html#sec:Statistics"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>
+
+<P>
+
+<H2><A NAME="SECTION00063000000000000000"></A>
+<A NAME="738"></A>
+<BR>
+5.3 Semicolons
+</H2>
+The semicolon is the null statement, or do nothing statement. It is optional,
+and useful as a separator between statements to improve detection of syntax
+errors and to reduce ambiguities in grammar.
+
+<P>
+
+<H2><A NAME="SECTION00064000000000000000"></A>
+<A NAME="740"></A>
+<BR>
+5.4 Comments
+</H2>
+Three forms of comments are supported, as follows.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# ... shell style, to the end of line
+// ... C++ style, to the end of line
+/* ... C style ... */
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00065000000000000000"></A>
+<A NAME="746"></A>
+<BR>
+5.5 Whitespace
+</H2>
+As in C, spaces, tabs, returns, newlines, and comments are treated as whitespace.
+Whitespace is ignored by the parser.
+
+<P>
+
+<H2><A NAME="SECTION00066000000000000000"></A>
+<A NAME="748"></A>
+<BR>
+5.6 Expressions
+</H2>
+SystemTap supports a number of operators that use the same general syntax,
+semantics, and precedence as in C and awk. Arithmetic is performed per C
+rules for signed integers. If the parser detects division by zero or an overflow,
+it generates an error. The following subsections list these operators.
+
+<P>
+
+<H3><A NAME="SECTION00066100000000000000"></A>
+<A NAME="750"></A>
+<BR>
+5.6.1 Binary numeric operators
+</H3>
+<TT>* / % + - &gt;&gt; &lt;&lt; &amp; &#94;
+| &amp;&amp; ||</TT>
+
+<P>
+
+<H3><A NAME="SECTION00066200000000000000"></A>
+<A NAME="756"></A>
+<BR>
+5.6.2 Binary string operators
+</H3>
+<TT><B>.</B></TT> (string concatenation)
+
+<P>
+
+<H3><A NAME="SECTION00066300000000000000"></A>
+<A NAME="759"></A>
+<BR>
+5.6.3 Numeric assignment operators
+</H3>
+<TT>= *= /= %= += -= &gt;&gt;= &lt;&lt;=
+&amp;= &#94;= |=</TT>
+
+<P>
+
+<H3><A NAME="SECTION00066400000000000000">
+5.6.4 String assignment operators</A>
+</H3>
+
+<P>
+<TT>= .=</TT>
+
+<P>
+
+<H3><A NAME="SECTION00066500000000000000"></A>
+<A NAME="767"></A>
+<BR>
+5.6.5 Unary numeric operators
+</H3>
+<TT>+ - ! ~ ++ -</TT>
+
+<P>
+
+<H3><A NAME="SECTION00066600000000000000"></A>
+<A NAME="771"></A>
+<BR>
+5.6.6 Numeric &amp; string comparison, regular expression matching operators
+</H3>
+<TT>&lt; &gt; &lt;= &gt;= == !=</TT> <code>=~</code> <code>!~</code>
+
+<P>
+The regular expression matching (<code>=~</code> and <code>!~</code>) is a
+recent feature. The second operand must be a string literal
+containing a syntactically valid regular expression. The regular
+expression syntax supports most of the features of POSIX Extended
+Regular Expressions, except for subexpression reuse (<code>\1</code>)
+functionality. The ability to capture and extract the contents of the
+matched string and subexpressions has not yet been implemented.
+
+<P>
+
+<H3><A NAME="SECTION00066700000000000000"></A><A NAME="sub:Ternary-operator"></A>
+<A NAME="774"></A>
+<BR>
+5.6.7 Ternary operator
+</H3>
+<TT>cond ? exp1 : exp2</TT>
+
+<P>
+
+<H3><A NAME="SECTION00066800000000000000"></A>
+<A NAME="777"></A>
+<BR>
+5.6.8 Grouping operator
+</H3>
+<TT>( exp )</TT>
+
+<P>
+
+<H3><A NAME="SECTION00066900000000000000"></A>
+<A NAME="780"></A>
+<BR>
+5.6.9 Function call
+</H3>
+General syntax:
+
+<P>
+<TT>fn ([ arg1, arg2, ... ])</TT>
+
+<P>
+
+<H3><A NAME="SECTION000661000000000000000"></A>
+<A NAME="783"></A>
+<BR>
+5.6.10 $ptr-&gt;member
+</H3>
+<TT>ptr</TT> is a kernel pointer available in a probed context.
+
+<P>
+
+<H3><A NAME="SECTION000661100000000000000"></A>
+<A NAME="786"></A>
+<BR>
+5.6.11 Pointer typecasting
+</H3>
+
+<P>
+<I>Typecasting</I> is supported using the <TT>@cast()</TT> operator. A
+script can define a pointer type for a <I>long</I> value, then access
+type members using the same syntax as with <TT>$target</TT>
+variables. After a pointer is saved into a script integer variable,
+the translator loses the necessary type information to access members
+from that pointer.  The <TT>@cast()</TT> operator tells the translator
+how to read a pointer.
+
+<P>
+The following statement interprets <TT>p</TT> as a pointer to a struct
+or union named <TT>type_name</TT> and dereferences the
+<TT>member</TT> value:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+@cast(p, "type_name"[, "module"])-&gt;member
+</PRE>
+</DD>
+</DL>
+<P>
+The optional <TT>module</TT> parameter tells the translator where to
+look for information about that type. You can specify multiple modules
+as a list with colon (<TT>:</TT>) separators. If you do not specify
+the module parameter, the translator defaults to either the probe
+module for dwarf probes or to <I>kernel</I> for functions and all
+other probe types.
+
+<P>
+The following statement retrieves the parent PID from a kernel
+task_struct:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+@cast(pointer, "task_struct", "kernel")-&gt;parent-&gt;tgid
+</PRE>
+</DD>
+</DL>
+<P>
+The translator can create its own module with type information from a
+header surrounded by angle brackets (<TT>&lt; &gt;</TT>) if normal debugging
+information is not available.  For kernel headers, prefix it with
+<TT>kernel</TT> to use the appropriate build system.  All other
+headers are built with default GCC parameters into a user module. The
+following statements are examples.
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+@cast(tv, "timeval", "&lt;sys/time.h&gt;")-&gt;tv_sec
+@cast(task, "task_struct", "kernel&lt;linux/sched.h&gt;")-&gt;tgid
+</PRE>
+</DD>
+</DL>
+<P>
+In guru mode, the translator allows scripts to assign new values to
+members of typecasted pointers.
+
+<P>
+Typecasting is also useful in the case of <TT>void*</TT> members whose
+type might be determinable at run time.
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe foo {
+   if ($var-&gt;type == 1) {
+      value = @cast($var-&gt;data, "type1")-&gt;bar
+   } else {
+      value = @cast($var-&gt;data, "type2")-&gt;baz
+   }
+   print(value)
+}
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION000661200000000000000"></A>
+<A NAME="818"></A>
+<BR>
+5.6.12 &lt;value&gt; in &lt;array_name&gt;
+</H3>
+This expression evaluates to true if the array contains an element with the
+specified index.
+
+<P>
+
+<H3><A NAME="SECTION000661300000000000000">
+5.6.13 [ &lt;value&gt;, ... ] in &lt;array_name&gt;</A>
+</H3>
+
+<P>
+The number of index values must match the number of indexes previously specified.
+
+<P>
+
+<H2><A NAME="SECTION00067000000000000000"></A><A NAME="sub:Literals-passed-in"></A>
+<A NAME="821"></A>
+<BR>
+5.7 Literals passed in from the stap command line
+</H2>
+<I>Literals</I> are either strings enclosed in double quotes ('' '') or
+integers. For information about integers, see Section&nbsp;<A HREF="#sub:Integers"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+For information about strings, see Section&nbsp;<A HREF="#sub:Strings"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+
+<P>
+Script arguments at the end of a command line are expanded as literals. You
+can use these in all contexts where literals are accepted. A reference to
+a nonexistent argument number is an error.
+
+<P>
+
+<H3><A NAME="SECTION00067100000000000000"></A>
+<A NAME="826"></A>
+<BR>
+5.7.1 $1 ... $&lt;NN&gt; for literal pasting
+</H3>
+Use <TT>$1 ... $&lt;NN&gt;</TT> for pasting the entire argument string 
+into the input stream, which will be further lexically tokenized.
+
+<P>
+
+<H3><A NAME="SECTION00067200000000000000">
+5.7.2 @1 ... @&lt;NN&gt; for strings</A>
+</H3>
+
+<P>
+Use <TT>@1 ... @&lt;NN&gt;</TT> for casting an entire argument
+as a string literal.
+
+<P>
+
+<H3><A NAME="SECTION00067300000000000000">
+5.7.3 Examples</A>
+</H3>
+
+<P>
+For example, if the following script named example.stp
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe begin { printf("%d, %s\n", $1, @2) }
+</PRE>
+</DD>
+</DL>is invoked as follows
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# stap example.stp '5+5' mystring
+</PRE>
+</DD>
+</DL>then 5+5 is substituted for $1 and &#34;mystring&#34; for @2. The
+output will be
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+10, mystring
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00068000000000000000">
+5.8 Conditional compilation</A>
+</H2>
+
+<P>
+
+<H3><A NAME="SECTION00068100000000000000"></A>
+<A NAME="847"></A>
+<BR>
+5.8.1 Conditions
+</H3>
+One of the steps of parsing is a simple preprocessing stage.  The
+preprocessor supports conditionals with a general form similar to the
+ternary operator (Section&nbsp;<A HREF="#sub:Ternary-operator"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>).
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+%( CONDITION %? TRUE-TOKENS %)
+%( CONDITION %? TRUE-TOKENS %: FALSE-TOKENS %)
+</PRE>
+</DD>
+</DL>The CONDITION is a limited expression whose format is determined by its first
+keyword. The following is the general syntax.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+%( &lt;condition&gt; %? &lt;code&gt; [ %: &lt;code&gt; ] %)
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00068200000000000000"></A>
+<A NAME="858"></A>
+<BR>
+5.8.2 Conditions based on available target variables
+</H3>
+The predicate @defined() is available for testing whether a
+particular $variable/expression is resolvable at translation time. The
+following is an example of its use:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+  probe foo { if (@defined($bar)) log ("$bar is available here") }
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00068300000000000000"></A>
+<A NAME="864"></A>
+<A NAME="865"></A>
+<A NAME="866"></A>
+<BR>
+5.8.3 Conditions based on kernel version: kernel_v, kernel_vr
+</H3>
+If the first part of a conditional expression is the identifier <TT>kernel_v</TT>
+or <TT>kernel_vr</TT>, the second part must be one of six standard numeric
+comparison operators ``&lt;'', ``&lt;='', ``=='', ``!='', ``&gt;'',
+or ``&gt;='',
+and the third part must be a string literal that contains an RPM-style version-release
+value. The condition returns true if the version of the target kernel (as
+optionally overridden by the <B>-r</B> option) matches the given version
+string. The comparison is performed by the glibc function strverscmp.
+
+<P>
+<TT>kernel_v</TT> refers to the kernel version number only, such as ``2.6.13&#34;.
+
+<P>
+<TT>kernel_vr</TT> refers to the kernel version number including the release
+code suffix, such as ``2.6.13-1.322FC3smp''.
+
+<P>
+
+<H3><A NAME="SECTION00068400000000000000"></A>
+<A NAME="882"></A>
+<BR>
+5.8.4 Conditions based on architecture: arch
+</H3>
+If the first part of the conditional expression is the identifier <TT>arch</TT>
+which refers to the processor architecture, then the second part is a string
+comparison operator ''=='' or ''!='', and the third part is a string
+literal for matching it. This comparison is a simple string equality or inequality.
+The currently supported architecture strings are i386, i686, x86_64, ia64,
+s390, and powerpc.
+
+<P>
+
+<H3><A NAME="SECTION00068500000000000000"></A>
+<A NAME="885"></A>
+<BR>
+5.8.5 Conditions based on privilege level: systemtap_privilege
+</H3>
+
+<P>
+If the first part of the conditional expression is the identifier
+<TT>systemtap_privilege</TT> which refers to the privilege level the
+systemtap script is being compiled with, then the second part is a
+string comparison operator ''=='' or ''!='', and the third part is a
+string literal for matching it. This comparison is a simple string
+equality or inequality.  The possible privilege strings to consider
+are <code>"stapusr"</code> for unprivileged scripts, and <code>"stapsys"</code> or
+<code>"stapdev"</code> for privileged scripts. (In general, to test for a
+privileged script it is best to use <code>!= "stapusr"</code>.)
+
+<P>
+This condition can be used to write scripts that can be run in both
+privileged and unprivileged modes, with additional functionality made
+available in the privileged case.
+
+<P>
+
+<H3><A NAME="SECTION00068600000000000000"></A>
+<A NAME="888"></A>
+<BR>
+5.8.6 True and False Tokens
+</H3>
+TRUE-TOKENS and FALSE-TOKENS are zero or more general parser tokens, possibly
+including nested preprocessor conditionals, that are pasted into the input
+stream if the condition is true or false. For example, the following code
+induces a parse error unless the target kernel version is newer than 2.6.5.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+%( kernel_v &lt;= "2.6.5" %? **ERROR** %) # invalid token sequence
+</PRE>
+</DD>
+</DL>The following code adapts to hypothetical kernel version drift.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe kernel.function (
+    %( kernel_v &lt;= "2.6.12" %? "__mm_do_fault" %:
+        %( kernel_vr == "2.6.13-1.8273FC3smp" %? "do_page_fault" %: UNSUPPORTED %)
+    %)) { /* ... */ }
+
+%( arch == "ia64" %?
+    probe syscall.vliw = kernel.function("vliw_widget") {}
+%)
+</PRE>
+</DD>
+</DL>
+<P>
+The following code adapts to the presence of a kernel CONFIG option.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+%( CONFIG_UTRACE == "y" %?
+    probe process.syscall {}
+%)
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00069000000000000000">
+5.9 Preprocessor macros</A>
+</H2>
+
+<P>
+This feature lets scripts eliminate some types of repetition.
+
+<P>
+
+<H3><A NAME="SECTION00069100000000000000">
+5.9.1 Local macros</A>
+</H3>
+
+<P>
+The preprocessor also supports a simple macro facility.
+
+<P>
+Macros taking zero or more arguments are defined using the following
+construct:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+@define NAME %( BODY %)
+@define NAME(PARAM_1, PARAM_2, ...) %( BODY %)
+</PRE>
+</DD>
+</DL>
+<P>
+Macro arguments are referred to in the body by prefixing the argument
+name with an <TT>@</TT> symbol. Likewise, once defined, macros are
+invoked by prefixing the macro name with an <TT>@</TT> symbol:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+@define foo %( x %)
+@define add(a,b) %( ((@a)+(@b)) %)
+
+   @foo = @add(2,2)
+</PRE>
+</DD>
+</DL>
+<P>
+Macro expansion is currently performed in a separate pass before
+conditional compilation. Therefore, both TRUE- and FALSE-tokens in
+conditional expressions will be macroexpanded regardless of how the
+condition is evaluated. This can sometimes lead to errors:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+// The following results in a conflict:
+%( CONFIG_UTRACE == "y" %?
+    @define foo %( process.syscall %)
+%:
+    @define foo %( **ERROR** %)
+%)
+
+// The following works properly as expected:
+@define foo %(
+  %( CONFIG_UTRACE == "y" %? process.syscall %: **ERROR** %)
+%)
+</PRE>
+</DD>
+</DL>
+<P>
+The first example is incorrect because both <TT>@define</TT>s are
+evaluated in a pass prior to the conditional being evaluated.
+
+<P>
+
+<H3><A NAME="SECTION00069200000000000000">
+5.9.2 Library macros</A>
+</H3>
+
+<P>
+Normally, a macro definition is local to the file it occurs in. Thus,
+defining a macro in a tapset does not make it available to the user of
+the tapset.
+
+<P>
+Publically available library macros can be defined by including
+<TT>.stpm</TT> files on the tapset search path. These files may only
+contain <TT>@define</TT> constructs, which become visible across all
+tapsets and user scripts.
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html375"
+  HREF="Statement_types.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html369"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html363"
+  HREF="Probe_points.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html371"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html373"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html376"
+  HREF="Statement_types.html">6 Statement types</A>
+<B> Up:</B> <A NAME="tex2html370"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html364"
+  HREF="Probe_points.html">4 Probe points</A>
+ &nbsp; <B>  <A NAME="tex2html372"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html374"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/Probe_points.html b/langref/Probe_points.html
new file mode 100644 (file)
index 0000000..f90eb28
--- /dev/null
@@ -0,0 +1,1480 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>4 Probe points</TITLE>
+<META NAME="description" CONTENT="4 Probe points">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Language_elements.html">
+<LINK REL="previous" HREF="Components_SystemTap_script.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Language_elements.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html330"
+  HREF="Language_elements.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html324"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html318"
+  HREF="Components_SystemTap_script.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html326"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html328"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html331"
+  HREF="Language_elements.html">5 Language elements</A>
+<B> Up:</B> <A NAME="tex2html325"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html319"
+  HREF="Components_SystemTap_script.html">3 Components of a</A>
+ &nbsp; <B>  <A NAME="tex2html327"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html329"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html332"
+  HREF="Probe_points.html#SECTION00051000000000000000">4.1 General syntax</A>
+<UL>
+<LI><A NAME="tex2html333"
+  HREF="Probe_points.html#SECTION00051100000000000000">4.1.1 Prefixes</A>
+<LI><A NAME="tex2html334"
+  HREF="Probe_points.html#SECTION00051200000000000000">4.1.2 Suffixes</A>
+<LI><A NAME="tex2html335"
+  HREF="Probe_points.html#SECTION00051300000000000000">4.1.3 Wildcarded file names, function names</A>
+<LI><A NAME="tex2html336"
+  HREF="Probe_points.html#SECTION00051400000000000000">4.1.4 Optional probe points</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html337"
+  HREF="Probe_points.html#SECTION00052000000000000000">4.2 Built-in probe point types (DWARF probes)</A>
+<UL>
+<LI><A NAME="tex2html338"
+  HREF="Probe_points.html#SECTION00052100000000000000">4.2.1 kernel.function, module().function</A>
+<LI><A NAME="tex2html339"
+  HREF="Probe_points.html#SECTION00052200000000000000">4.2.2 kernel.statement, module().statement</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html340"
+  HREF="Probe_points.html#SECTION00053000000000000000">4.3 Function return probes</A>
+<LI><A NAME="tex2html341"
+  HREF="Probe_points.html#SECTION00054000000000000000">4.4 DWARF-less probing</A>
+<LI><A NAME="tex2html342"
+  HREF="Probe_points.html#SECTION00055000000000000000">4.5 Userspace probing</A>
+<UL>
+<LI><A NAME="tex2html343"
+  HREF="Probe_points.html#SECTION00055100000000000000">4.5.1 Begin/end variants</A>
+<LI><A NAME="tex2html344"
+  HREF="Probe_points.html#SECTION00055200000000000000">4.5.2 Syscall variants</A>
+<LI><A NAME="tex2html345"
+  HREF="Probe_points.html#SECTION00055300000000000000">4.5.3 Function/statement variants</A>
+<LI><A NAME="tex2html346"
+  HREF="Probe_points.html#SECTION00055400000000000000">4.5.4 Absolute variant</A>
+<LI><A NAME="tex2html347"
+  HREF="Probe_points.html#SECTION00055500000000000000">4.5.5 Process probe paths</A>
+<LI><A NAME="tex2html348"
+  HREF="Probe_points.html#SECTION00055600000000000000">4.5.6 Target process mode</A>
+<LI><A NAME="tex2html349"
+  HREF="Probe_points.html#SECTION00055700000000000000">4.5.7 Instruction probes</A>
+<LI><A NAME="tex2html350"
+  HREF="Probe_points.html#SECTION00055800000000000000">4.5.8 Static userspace probing</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html351"
+  HREF="Probe_points.html#SECTION00056000000000000000">4.6 Java probes</A>
+<LI><A NAME="tex2html352"
+  HREF="Probe_points.html#SECTION00057000000000000000">4.7 PROCFS probes</A>
+<LI><A NAME="tex2html353"
+  HREF="Probe_points.html#SECTION00058000000000000000">4.8 Marker probes</A>
+<LI><A NAME="tex2html354"
+  HREF="Probe_points.html#SECTION00059000000000000000">4.9 Tracepoints</A>
+<LI><A NAME="tex2html355"
+  HREF="Probe_points.html#SECTION000510000000000000000">4.10 Syscall probes</A>
+<LI><A NAME="tex2html356"
+  HREF="Probe_points.html#SECTION000511000000000000000">4.11 Timer probes</A>
+<LI><A NAME="tex2html357"
+  HREF="Probe_points.html#SECTION000512000000000000000">4.12 Special probe points</A>
+<UL>
+<LI><A NAME="tex2html358"
+  HREF="Probe_points.html#SECTION000512100000000000000">4.12.1 begin</A>
+<LI><A NAME="tex2html359"
+  HREF="Probe_points.html#SECTION000512200000000000000">4.12.2 end</A>
+<LI><A NAME="tex2html360"
+  HREF="Probe_points.html#SECTION000512300000000000000">4.12.3 error</A>
+<LI><A NAME="tex2html361"
+  HREF="Probe_points.html#SECTION000512400000000000000">4.12.4 begin, end, and error probe sequence</A>
+<LI><A NAME="tex2html362"
+  HREF="Probe_points.html#SECTION000512500000000000000">4.12.5 never</A>
+</UL></UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00050000000000000000"></A><A NAME="sec:Probe-Points"></A>
+<A NAME="254"></A>
+<BR>
+4 Probe points
+</H1>
+
+<H2><A NAME="SECTION00051000000000000000"></A>
+<A NAME="256"></A>
+<BR>
+4.1 General syntax
+</H2>
+The general probe point syntax is a dotted-symbol sequence. This divides
+the event namespace into parts, analogous to the style of the Domain Name
+System. Each component identifier is parameterized by a string or number
+literal, with a syntax analogous to a function call.
+
+<P>
+The following are all syntactically valid probe points.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kernel.function("foo")
+kernel.function("foo").return
+module{"ext3"}.function("ext3_*")
+kernel.function("no_such_function") ?
+syscall.*
+end
+timer.ms(5000)
+</PRE>
+</DD>
+</DL>
+<P>
+Probes may be broadly classified into <I>synchronous</I><A NAME="262"></A>
+or <I>asynchronous</I>.<A NAME="264"></A> A synchronous event occurs when
+any processor executes an instruction matched by the specification. This
+gives these probes a reference point (instruction address) from which more
+contextual data may be available. Other families of probe points refer to
+asynchronous events such as timers, where no fixed reference point is related.
+Each probe point specification may match multiple locations, such as by using
+wildcards or aliases, and all are probed. A probe declaration may contain
+several specifications separated by commas, which are all probed.
+
+<P>
+
+<H3><A NAME="SECTION00051100000000000000"></A>
+<A NAME="266"></A>
+<BR>
+4.1.1 Prefixes
+</H3>
+Prefixes specify the probe target, such as <B>kernel</B>, <B>module</B>,
+<B>timer</B>, and so on.
+
+<P>
+
+<H3><A NAME="SECTION00051200000000000000"></A>
+<A NAME="271"></A>
+<BR>
+4.1.2 Suffixes
+</H3>
+Suffixes further qualify the point to probe, such as <B>.return</B> for the
+exit point of a probed function. The absence of a suffix implies the function
+entry point.
+
+<P>
+
+<H3><A NAME="SECTION00051300000000000000"></A>
+<A NAME="274"></A>
+<BR>
+4.1.3 Wildcarded file names, function names
+</H3>
+A component may include an asterisk (*) character, which expands to other
+matching probe points. An example follows.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kernel.syscall.*
+kernel.function("sys_*)
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00051400000000000000"></A><A NAME="sub:Optional-probe-points"></A>
+<A NAME="281"></A>
+<BR>
+4.1.4 Optional probe points
+</H3>
+A probe point may be followed by a question mark (?) character, to indicate
+that it is optional, and that no error should result if it fails to expand.
+This effect passes down through all levels of alias or wildcard expansion.
+
+<P>
+The following is the general syntax.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kernel.function("no_such_function") ?
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00052000000000000000"></A>
+<A NAME="287"></A>
+<A NAME="288"></A>
+<A NAME="dwarfprobes"></A>
+<BR>
+4.2 Built-in probe point types (DWARF probes)
+</H2>
+This family of probe points uses symbolic debugging information for the target
+kernel or module, as may be found in executables that have not
+been stripped, or in the separate <B>debuginfo</B> packages. They allow
+logical placement of probes into the execution path of the target
+by specifying a set of points in the source or object code. When a matching
+statement executes on any processor, the probe handler is run in that context.
+
+<P>
+Points in a kernel are identified by module, source file, line number, function
+name or some combination of these.
+
+<P>
+Here is a list of probe point specifications currently supported:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kernel.function(PATTERN)
+kernel.function(PATTERN).call
+kernel.function(PATTERN).return
+kernel.function(PATTERN).return.maxactive(VALUE)
+kernel.function(PATTERN).inline
+kernel.function(PATTERN).label(LPATTERN)
+module(MPATTERN).function(PATTERN)
+module(MPATTERN).function(PATTERN).call
+module(MPATTERN).function(PATTERN).return.maxactive(VALUE)
+module(MPATTERN).function(PATTERN).inline
+kernel.statement(PATTERN)
+kernel.statement(ADDRESS).absolute
+module(MPATTERN).statement(PATTERN)
+</PRE>
+</DD>
+</DL>
+<P>
+The <B>.function</B> variant places a probe near the beginning of the named
+function, so that parameters are available as context variables.
+
+<P>
+The <B>.return</B> variant places a probe at the moment of return from the named
+function, so the return value is available as the $return context variable.
+The entry parameters are also available, though the function may have changed
+their values.  Return probes may be further qualified with <B>.maxactive</B>,
+which specifies how many instances of the specified function can be probed simultaneously.
+You can leave off <B>.maxactive</B> in most cases, as the default
+(<B>KRETACTIVE</B>) should be sufficient.
+However, if you notice an excessive number of skipped probes, try setting <B>.maxactive</B>
+to incrementally higher values to see if the number of skipped probes decreases.
+
+<P>
+The <B>.inline</B> modifier for <B>.function</B> filters the results to include only
+instances of inlined functions. The <B>.call</B> modifier selects the opposite subset.  
+The <B>.exported</B> modifier filters the results to include only exported functions.
+Inline functions do not have an identifiable return point, so <B>.return</B>
+is not supported on <B>.inline</B> probes.
+
+<P>
+The <B>.statement</B> variant places a probe at the exact spot, exposing those local
+variables that are visible there.
+
+<P>
+In the above probe descriptions, MPATTERN stands for a string literal
+that identifies the loaded kernel module of interest and LPATTERN
+stands for a source program label. Both MPATTERN and LPATTERN may
+include asterisk (*), square brackets &#34;[]&#34;, and
+question mark (?) wildcards.
+
+<P>
+PATTERN stands for a string literal that identifies a point in the program.
+It is composed of three parts:
+
+<P>
+
+<OL>
+<LI>The first part is the name of a function, as would appear in the nm program's
+output. This part may use the asterisk and question mark wildcard operators
+to match multiple names.
+</LI>
+<LI>The second part is optional, and begins with the ampersand (@) character.
+It is followed by the path to the source file containing the function,
+which may include a wildcard pattern, such as mm/slab*.
+In most cases, the path should be relative to the top of the
+linux source directory, although an absolute path may be necessary for some kernels.
+If a relative pathname doesn't work, try absolute.
+</LI>
+<LI>The third part is optional if the file name part was given. It identifies
+the line number in the source file, preceded by a ``:'' or ``+''.
+The line number is assumed to be an
+absolute line number if preceded by a ``:'', or relative to the entry of
+the function if preceded by a ``+''.
+All the lines in the function can be matched with ``:*''.
+A range of lines x through y can be matched with ``:x-y''.
+
+<P>
+</LI>
+</OL>
+Alternately, specify PATTERN as a numeric constant to indicate a relative
+module address or an absolute kernel address.
+
+<P>
+Some of the source-level variables, such as function parameters, locals,
+or globals visible in the compilation unit, are visible to probe handlers.
+Refer to these variables by prefixing their name with a dollar sign within
+the scripts. In addition, a special syntax allows limited traversal of
+structures, pointers, arrays, taking the address of a variable or pretty
+printing a whole structure.
+
+<P>
+<TT>$var</TT> refers to an in-scope variable var. If it is a type similar
+to an integer, it will be cast to a 64-bit integer for script use. Pointers
+similar to a string (char *) are copied to SystemTap string values by the
+<TT>kernel_string()</TT> or <TT>user_string()</TT> functions.
+
+<P>
+<TT>@var("varname")</TT> is an alternative syntax for <TT>$varname</TT>.
+It can also be used to access global variables in a particular compile
+unit (CU).  <TT>@var("varname@src/file.c")</TT> refers to the global
+(either file local or external) variable varname defined when the file
+src/file.c was compiled. The CU in which the variable is resolved is
+the first CU in the module of the probe point which matches the given
+file name at the end and has the shortest file name path (e.g. given
+<TT>@var("foo@bar/baz.c")</TT> and CUs with file name paths
+<TT>src/sub/module/bar/baz.c</TT> and <TT>src/bar/baz.c</TT> the second
+CU will be chosen to resolve <TT>foo</TT>).
+
+<P>
+<TT>$var-&gt;field</TT> or <TT>@var("var@file.c")-&gt;field</TT> traverses a
+structure's field. The indirection operator may be repeated to follow
+additional levels of pointers.
+
+<P>
+<TT>$var[N]</TT> or <TT>@var("var@file.c")[N]</TT> indexes into an
+array. The index is given with a literal number.
+
+<P>
+<TT>&amp;$var</TT> or <TT>&amp;@var("var@file.c")</TT> provides the address of
+a variable as a long. It can also be used in combination with field access
+or array indexing to provide the address of a particular field or an
+element in an array with <TT>&amp;var-&gt;field</TT>,
+<TT>&amp;@var("var@file.c")[N]</TT> or a combination of those accessors.
+
+<P>
+Using a single <TT>$</TT> or a double <TT>$$</TT> suffix provides a
+swallow or deep string representation of the variable data type. Using
+a single <TT>$</TT>, as in <TT>$var$</TT>, will provide a string that
+only includes the values of all basic type values of fields of the variable
+structure type but not any nested complex type values (which will be
+represented with <TT>{...}</TT>). Using a double <TT>$$</TT>,
+as in <TT>@var("var")$$</TT> will provide a string that also includes
+all values of nested data types.
+
+<P>
+<TT>$$vars</TT> expands to a character string that is equivalent to
+<TT>sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x", $parm1, ..., $parmN,
+$var1, ..., $varN)</TT>
+
+<P>
+<TT>$$locals</TT> expands to a character string that is equivalent to
+<TT>sprintf("var1=%x ... varN=%x", $var1, ..., $varN)</TT>
+
+<P>
+<TT>$$parms</TT> expands to a character string that is equivalent to
+<TT>sprintf("parm1=%x ... parmN=%x", $parm1, ..., $parmN)</TT>
+
+<P>
+
+<H3><A NAME="SECTION00052100000000000000"></A>
+<A NAME="348"></A>
+<A NAME="349"></A>
+<BR>
+4.2.1 kernel.function, module().function
+</H3>
+The <B>.function</B> variant places a probe near the beginning of the named function,
+so that parameters are available as context variables.
+
+<P>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kernel.function("func[@file]")
+module("modname").function("func[@file]")
+</PRE>
+</DD>
+</DL>Examples:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Refers to all kernel functions with "init" or "exit"
+# in the name:
+kernel.function("*init*"), kernel.function("*exit*")
+
+# Refers to any functions within the "kernel/time.c"
+# file that span line 240:
+kernel.function("*@kernel/time.c:240")
+
+# Refers to all functions in the ext3 module:
+module("ext3").function("*")
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00052200000000000000"></A>
+<A NAME="360"></A>
+<A NAME="361"></A>
+<BR>
+4.2.2 kernel.statement, module().statement
+</H3>
+The <B>.statement</B> variant places a probe at the exact spot, exposing those local
+variables that are visible there.
+
+<P>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kernel.statement("func@file:linenumber")
+module("modname").statement("func@file:linenumber")
+</PRE>
+</DD>
+</DL>Example:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Refers to the statement at line 296 within the
+# kernel/time.c file:
+kernel.statement("*@kernel/time.c:296")
+# Refers to the statement at line bio_init+3 within the fs/bio.c file:
+kernel.statement("bio_init@fs/bio.c+3")
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00053000000000000000"></A>
+<A NAME="372"></A>
+<BR>
+4.3 Function return probes
+</H2>
+The <TT>.return</TT> variant places a probe at the moment of return from
+the named function, so that the return value is available as the $return
+context variable. The entry parameters are also accessible in the context
+of the return probe, though their values may have been changed by the function.
+Inline functions do not have an identifiable return point, so <TT>.return</TT>
+is not supported on <TT>.inline</TT> probes.
+
+<P>
+
+<H2><A NAME="SECTION00054000000000000000"></A>
+<A NAME="377"></A>
+<BR>
+4.4 DWARF-less probing
+</H2>
+
+<P>
+In the absence of debugging information, you can still use the
+<I>kprobe</I> family of probes to examine the entry and exit points of
+kernel and module functions. You cannot look up the arguments or local
+variables of a function using these probes. However, you can access
+the parameters by following this procedure:
+
+<P>
+When you're stopped at the entry to a function, you can refer to the
+function's arguments by number. For example, when probing the function
+declared:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t
+count)
+</PRE>
+</DD>
+</DL>
+<P>
+You can obtain the values of <TT>fd</TT>, <TT>buf</TT>, and
+<TT>count</TT>, respectively, as <TT>uint_arg(1)</TT>,
+<TT>pointer_arg(2)</TT>, and <TT>ulong_arg(3)</TT>. In this case, your
+probe code must first call <TT>asmlinkage()</TT>, because on some
+architectures the asmlinkage attribute affects how the function's
+arguments are passed.
+
+<P>
+When you're in a return probe, <TT>$return</TT> isn't supported
+without DWARF, but you can call <TT>returnval()</TT> to get the value
+of the register in which the function value is typically returned, or
+call <TT>returnstr()</TT> to get a string version of that value.
+
+<P>
+And at any code probepoint, you can call
+<TT>register("regname")</TT> to get the value of the specified CPU
+register when the probe point was hit.
+<TT>u_register("regname")</TT> is like <TT>register("regname")</TT>,
+but interprets the value as an unsigned integer.
+
+<P>
+SystemTap supports the following constructs:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kprobe.function(FUNCTION)
+kprobe.function(FUNCTION).return
+kprobe.module(NAME).function(FUNCTION)
+kprobe.module(NAME).function(FUNCTION).return
+kprobe.statement(ADDRESS).absolute
+</PRE>
+</DD>
+</DL>
+<P>
+Use <B>.function</B> probes for kernel functions and
+<B>.module</B> probes for probing functions of a specified module.
+If you do not know the absolute address of a kernel or module
+function, use <B>.statement</B> probes. Do not use wildcards in
+<I>FUNCTION</I> and <I>MODULE</I> names. Wildcards cause the probe
+to not register. Also, statement probes are available only in guru mode.
+
+<P>
+
+<H2><A NAME="SECTION00055000000000000000"></A>
+<A NAME="406"></A>
+<A NAME="407"></A>
+<BR>
+4.5 Userspace probing
+</H2>
+Support for userspace probing is supported on kernels that are
+configured to include the utrace or uprobes extensions.
+
+<P>
+
+<H3><A NAME="SECTION00055100000000000000"></A>
+<A NAME="sec:beginendvariants"></A>
+<BR>
+4.5.1 Begin/end variants
+</H3>
+Constructs:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+process.begin
+process("PATH").begin
+process(PID).begin
+
+process.thread.begin
+process("PATH").thread.begin
+process(PID).thread.begin
+
+process.end
+process("PATH").end
+process(PID).end
+
+process.thread.end
+process("PATH").thread.end
+process(PID).thread.end
+</PRE>
+</DD>
+</DL>
+<P>
+The <TT>.begin</TT> variant is called when a new process described by
+<TT>PID</TT> or <TT>PATH</TT> is created. If no <TT>PID</TT> or
+<TT>PATH</TT> argument is specified (for example
+<TT>process.begin</TT>), the probe flags any new process being
+spawned.
+
+<P>
+The <TT>.thread.begin</TT> variant is called when a new thread
+described by <TT>PID</TT> or <TT>PATH</TT> is created.
+
+<P>
+The <TT>.end</TT> variant is called when a process described by
+<TT>PID</TT> or <TT>PATH</TT> dies.
+
+<P>
+The <TT>.thread.end</TT> variant is called when a thread described by
+<TT>PID</TT> or <TT>PATH</TT> dies.
+
+<P>
+
+<H3><A NAME="SECTION00055200000000000000"></A>
+<A NAME="sec:syscallvariants"></A>
+<BR>
+4.5.2 Syscall variants
+</H3>
+Constructs:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+process.syscall
+process("PATH").syscall
+process(PID).syscall
+
+process.syscall.return
+process("PATH").syscall.return
+process(PID).syscall.return
+</PRE>
+</DD>
+</DL>
+<P>
+The <TT>.syscall</TT> variant is called when a thread described by
+<TT>PID</TT> or <TT>PATH</TT> makes a system call.  The system call
+number is available in the <TT>$syscall</TT> context variable.  The
+first six arguments of the system call are available in the
+<TT>$argN</TT> parameter, for example <TT>$arg1</TT>,
+<TT>$arg2</TT>, and so on.
+
+<P>
+The <TT>.syscall.return</TT> variant is called when a thread described
+by <TT>PID</TT> or <TT>PATH</TT> returns from a system call.  The
+system call number is available in the <TT>$syscall</TT> context
+variable.  The return value of the system call is available in the
+<TT>$return</TT> context variable.
+
+<P>
+
+<H3><A NAME="SECTION00055300000000000000"></A>
+<A NAME="sec:function-statement"></A>
+<BR>
+4.5.3 Function/statement variants
+</H3>
+Constructs:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+process("PATH").function("NAME")
+process("PATH").statement("*@FILE.c:123")
+process("PATH").function("*").return
+process("PATH").function("myfun").label("foo")
+</PRE>
+</DD>
+</DL>
+<P>
+Full symbolic source-level probes in userspace programs and shared
+libraries are supported.  These are exactly analogous to the symbolic
+DWARF-based kernel or module probes described previously and expose
+similar contextual <TT>$-variables</TT>. See
+Section&nbsp;<A HREF="#dwarfprobes"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> for more information
+
+<P>
+Here is an example of prototype symbolic userspace probing support:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# stap -e 'probe process("ls").function("*").call {
+           log (probefunc()." ".$$parms)
+           }' \
+       -c 'ls -l'
+</PRE>
+</DD>
+</DL>
+<P>
+To run, this script requires debugging information for the named
+program and utrace support in the kernel. If you see a "pass 4a-time"
+build failure, check that your kernel supports utrace.
+
+<P>
+
+<H3><A NAME="SECTION00055400000000000000"></A>
+<A NAME="sec:absolutevariant"></A>
+<BR>
+4.5.4 Absolute variant
+</H3>
+A non-symbolic probe point such as
+<TT>process(PID).statement(ADDRESS).absolute</TT> is analogous to
+<BR><TT>kernel.statement(ADDRESS).absolute</TT> in that both use
+raw, unverified virtual addresses and provide no <TT>$variables</TT>.
+The target <TT>PID</TT> parameter must identify a running process and
+<TT>ADDRESS</TT> must identify a valid instruction address.  All
+threads of the listed process will be probed.  This is a guru mode
+probe.
+
+<P>
+
+<H3><A NAME="SECTION00055500000000000000"></A>
+<A NAME="sec:paths"></A>
+<BR>
+4.5.5 Process probe paths
+</H3>
+For all process probes, <TT>PATH</TT> names refer to executables that
+are searched the same way that shells do: the explicit path specified
+if the path name begins with a slash (/) character sequence; otherwise
+<TT>$PATH</TT> is searched.  For example, the following probe syntax:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe process("ls").syscall {}
+probe process("./a.out").syscall {}
+</PRE>
+</DD>
+</DL>
+<P>
+works the same as:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe process("/bin/ls").syscall {}
+probe process("/my/directory/a.out").syscall {}
+</PRE>
+</DD>
+</DL>
+<P>
+If a process probe is specified without a <TT>PID</TT> or
+<TT>PATH</TT> parameter, all user threads are probed. However, if
+systemtap is invoked in target process mode, process probes are
+restricted to the process hierarchy associated with the target
+process. If stap is running in <TT>-unprivileged</TT> mode, only
+processes owned by the current user are selected.
+
+<P>
+
+<H3><A NAME="SECTION00055600000000000000"></A>
+<A NAME="sec:targetprocessmode"></A>
+<BR>
+4.5.6 Target process mode
+</H3>
+Target process mode (invoked with <TT>stap -c CMD</TT> or <TT>-x
+  PID</TT>) implicitly restricts all <TT>process.*</TT> probes to the
+given child process.  It does not affect <TT>kernel.*</TT> or other
+probe types.  The <TT>CMD</TT> string is normally run directly, rather
+than from a ``<TT>/bin/sh -c</TT>'' sub-shell, since utrace and uprobe
+probes receive a fairly "clean" event stream.  If meta-characters such
+as redirection operators are present in <TT>CMD</TT>, ``<TT>/bin/sh
+  -c CMD</TT>'' is still used, and utrace and uprobe probes will receive
+events from the shell. For example:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+% stap -e 'probe process.syscall, process.end {
+           printf("%s %d %s\n", execname(), pid(), pp())}' \
+       -c ls
+</PRE>
+</DD>
+</DL>
+<P>
+Here is the output from this command:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+ls 2323 process.syscall
+ls 2323 process.syscall
+ls 2323 process.end
+</PRE>
+</DD>
+</DL>
+<P>
+If <TT>PATH</TT> names a shared library, all processes that map that
+shared library can be probed.  If dwarf debugging information is
+installed, try using a command with this syntax:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe process("/lib64/libc-2.8.so").function("....") { ... }
+</PRE>
+</DD>
+</DL>This command probes all threads that call into that library.  Typing
+``<TT>stap -c CMD</TT>'' or ``<TT>stap -x PID</TT>'' restricts this to
+the target command and descendants only.  You can use
+<TT>$$vars</TT> and others. You can provide the location of debug
+information to the stap command with the <TT>-d DIRECTORY</TT> option.
+To qualify a probe point to a location in a library required by a
+particular process try using a command with this syntax:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe process("...").library("...").function("....") { ... }
+</PRE>
+</DD>
+</DL>The library name may use wildcards.
+
+<P>
+The first syntax in the following will probe the functions in the program
+linkage table of a particular process.  The second syntax will also add the
+program linkage tables of libraries required by that process.  .plt("...") can
+be specified to match particular plt entries.
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe process("...").plt { ... }
+probe process("...").plt process("...").library("...").plt { ... }
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00055700000000000000"></A>
+<A NAME="sec:insnprobes"></A>
+<BR>
+4.5.7 Instruction probes
+</H3>
+Constructs:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+process("PATH").insn
+process(PID).insn
+
+process("PATH").insn.block
+process(PID).insn.block
+</PRE>
+</DD>
+</DL>The <TT>process().insn</TT> and <TT>process().insn.block</TT> probes
+inspect the process after each instruction or block of instructions is
+executed. These probes are not implemented on all architectures. If
+they are not implemented on your system, you will receive an error
+message when the script starts.
+
+<P>
+The <TT>.insn</TT> probe is called for every single-stepped
+instruction of the process described by <TT>PID</TT> or <TT>PATH</TT>.
+
+<P>
+The <TT>.insn.block</TT> probe is called for every block-stepped
+instruction of the process described by <TT>PID</TT> or <TT>PATH</TT>.
+
+<P>
+To count the total number of instructions that a process executes,
+type a command similar to:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+$ stap -e 'global steps; probe process("/bin/ls").insn {steps++}
+           probe end {printf("Total instructions: %d\n", steps);}' \
+       -c /bin/ls
+</PRE>
+</DD>
+</DL>
+<P>
+Using this feature will significantly slow process execution.
+
+<P>
+
+<H3><A NAME="SECTION00055800000000000000"></A>
+<A NAME="sec:staticuserspace"></A>
+<BR>
+4.5.8 Static userspace probing
+</H3>
+You can probe symbolic static instrumentation compiled into programs
+and shared libraries with the following syntax:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+process("PATH").mark("LABEL")
+</PRE>
+</DD>
+</DL>
+<P>
+The <TT>.mark</TT> variant is called from a static probe defined in
+the application by
+<TT>STAP_PROBE1(handle,LABEL,arg1)</TT>. <TT>STAP_PROBE1</TT> is
+defined in the sdt.h file.  The parameters are:
+
+<P>
+<TABLE CELLPADDING=3 BORDER="1">
+<TR><TD ALIGN="LEFT">Parameter</TD>
+<TD ALIGN="RIGHT">Definition</TD>
+<TD ALIGN="CENTER">&nbsp;</TD>
+</TR>
+<TR><TD ALIGN="LEFT"><TT>handle</TT></TD>
+<TD ALIGN="RIGHT">the application handle</TD>
+<TD ALIGN="CENTER">&nbsp;</TD>
+</TR>
+<TR><TD ALIGN="LEFT"><TT>LABEL</TT></TD>
+<TD ALIGN="RIGHT">corresponds to the <TT>.mark</TT> argument</TD>
+<TD ALIGN="CENTER">&nbsp;</TD>
+</TR>
+<TR><TD ALIGN="LEFT"><TT>arg1</TT></TD>
+<TD ALIGN="RIGHT">the argument</TD>
+<TD ALIGN="CENTER">&nbsp;</TD>
+</TR>
+</TABLE>
+
+<P>
+Use <TT>STAP_PROBE1</TT> for probes with one argument.  Use
+<TT>STAP_PROBE2</TT> for probes with 2 arguments, and so on.  The
+arguments of the probe are available in the context variables
+<TT>$arg1</TT>, <TT>$arg2</TT>, and so on.
+
+<P>
+As an alternative to the <TT>STAP_PROBE</TT> macros, you can use the
+dtrace script to create custom macros. The sdt.h file also provides
+dtrace compatible markers through <TT>DTRACE_PROBE</TT> and an
+associated python <TT>dtrace</TT> script.  You can use these in builds
+based on dtrace that need dtrace -h or -G functionality.
+
+<P>
+
+<H2><A NAME="SECTION00056000000000000000"></A>
+<A NAME="558"></A>
+<BR>
+4.6 Java probes
+</H2>
+Support for probing Java methods is available using Byteman as a
+backend. Byteman is an instrumentation tool from the JBoss project
+which systemtap can use to monitor invocations for a specific method
+or line in a Java program.
+
+<P>
+Systemtap does so by generating a Byteman script listing the probes to
+instrument and then invoking the Byteman <TT>bminstall</TT> utility. A
+custom option <TT>-D OPTION</TT> (see the Byteman documentation for
+more details) can be passed to bminstall by invoking systemtap with
+option <TT>-J OPTION</TT>. The systemtap option <TT>-j</TT> is also
+provided as a shorthand for <TT>-J
+  org.jboss.byteman.compile.to.bytecode</TT>.
+
+<P>
+This Java instrumentation support is currently a prototype feature
+with major limitations: Java probes attach only to one Java process at
+a time; other Java processes beyond the first one to be observed are
+ignored. Moreover, Java probing currently does not work across users;
+the stap script must run (with appropriate permissions) under the same
+user as the Java process being probed. (Thus a stap script under
+root currently cannot probe Java methods in a non-root-user Java process.)
+
+<P>
+There are four probe point variants supported by the translator:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+java("PNAME").class("CLASSNAME").method("PATTERN")
+java("PNAME").class("CLASSNAME").method("PATTERN").return
+java(PID).class("CLASSNAME").method("PATTERN")
+java(PID).class("CLASSNAME").method("PATTERN").return
+</PRE>
+</DD>
+</DL>
+<P>
+The first two probe points refer to Java processes by the name of the
+Java process. The PATTERN parameter specifies the signature of the
+Java method to probe. The signature must consist of the exact name of
+the method, followed by a bracketed list of the types of the
+arguments, for instance <TT>myMethod(int,double,Foo)</TT>. Wildcards
+are not supported.
+
+<P>
+The probe can be set to trigger at a specific line within the method
+by appending a line number with colon, just as in other types of
+probes: <TT>myMethod(int,double,Foo):245</TT>.
+
+<P>
+The CLASSNAME parameter identifies the Java class the method belongs
+to, either with or without the package qualification. By default, the
+probe only triggers on descendants of the class that do not override
+the method definition of the original class. However, CLASSNAME can
+take an optional caret prefix, as in
+<code>class("^org.my.MyClass")</code>, which specifies that the probe
+should also trigger on all descendants of MyClass that override the
+original method. For instance, every method with signature foo(int) in
+program org.my.MyApp can be probed at once using
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+java("org.my.MyApp").class("^java.lang.Object").method("foo(int)")
+</PRE>
+</DD>
+</DL>
+<P>
+The last two probe points work analogously, but refer to Java
+processes by PID. (PIDs for already running processes can be obtained
+using the <TT>jps</TT> utility.)
+
+<P>
+Context variables defined within java probes include <code>$provider</code>
+(which identifies the class providing the definition of the triggered
+method) and <code>$name</code> (which gives the signature of the method).
+Arguments to the method can be accessed using context variables
+<code>$arg1$</code> through <code>$arg10</code>, for up to the first 10 arguments
+of a method.
+
+<P>
+
+<H2><A NAME="SECTION00057000000000000000"></A>
+<A NAME="576"></A>
+<BR>
+4.7 PROCFS probes
+</H2>
+These probe points allow procfs pseudo-files in
+<TT>/proc/systemtap/<I>MODNAME</I></TT> to be created, read and
+written.  Specify the name of the systemtap module as
+<TT><I>MODNAME</I></TT>.  There are four probe point variants
+supported by the translator:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+procfs("PATH").read
+procfs("PATH").write
+procfs.read
+procfs.write
+</PRE>
+</DD>
+</DL>
+<P>
+<TT>PATH</TT> is the file name to be created, relative to
+<TT>/proc/systemtap/MODNAME</TT>.  If no <TT>PATH</TT> is specified
+(as in the last two variants in the previous list), <TT>PATH</TT>
+defaults to "command".
+
+<P>
+When a user reads <TT>/proc/systemtap/MODNAME/PATH</TT>, the
+corresponding procfs read probe is triggered.  Assign the string data
+to be read to a variable named <TT>$value</TT>, as follows:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+procfs("PATH").read { $value = "100\n" }
+</PRE>
+</DD>
+</DL>
+<P>
+When a user writes into <TT>/proc/systemtap/MODNAME/PATH</TT>, the
+corresponding procfs write probe is triggered.  The data the user
+wrote is available in the string variable named <TT>$value</TT>, as
+follows:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+procfs("PATH").write { printf("User wrote: %s", $value) }
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00058000000000000000"></A>
+<A NAME="600"></A>
+<BR>
+4.8 Marker probes
+</H2>
+This family of probe points connects to static probe markers inserted
+into the kernel or a module. These markers are special macro calls in
+the kernel that make probing faster and more reliable than with
+DWARF-based probes.  DWARF debugging information is not required to
+use probe markers.
+
+<P>
+Marker probe points begin with a <TT>kernel</TT> prefix which
+identifies the source of the symbol table used for finding
+markers. The suffix names the marker itself:
+<TT>mark.("MARK")</TT>. The marker name string, which can contain
+wildcard characters, is matched against the names given to the marker
+macros when the kernel or module is compiled.  Optionally, you can
+specify <TT>format("FORMAT")</TT>.  Specifying the marker format
+string allows differentiation between two markers with the same name
+but different marker format strings.
+
+<P>
+The handler associated with a marker probe reads any optional
+parameters specified at the macro call site named <TT>$arg1</TT>
+through <TT>$argNN</TT>, where <TT>NN</TT> is the number of
+parameters supplied by the macro. Number and string parameters are
+passed in a type-safe manner.
+
+<P>
+The marker format string associated with a marker is available in
+<TT>$format</TT>. The marker name string is available in
+<TT>$name</TT>.
+
+<P>
+Here are the marker probe constructs:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+kernel.mark("MARK")
+kernel.mark("MARK").format("FORMAT")
+</PRE>
+</DD>
+</DL>
+<P>
+For more information about marker probes, see
+<TT><A NAME="tex2html4"
+  HREF="http://sourceware.org/systemtap/wiki/UsingMarkers">http://sourceware.org/systemtap/wiki/UsingMarkers</A></TT>.
+
+<P>
+
+<H2><A NAME="SECTION00059000000000000000"></A>
+<A NAME="sec:tracepoints"></A><A NAME="616"></A>
+<BR>
+4.9 Tracepoints
+</H2>
+
+<P>
+This family of probe points hooks to static probing tracepoints
+inserted into the kernel or kernel modules.  As with marker probes,
+these tracepoints are special macro calls inserted by kernel
+developers to make probing faster and more reliable than with
+DWARF-based probes.  DWARF debugging information is not required to
+probe tracepoints.  Tracepoints have more strongly-typed parameters
+than marker probes.
+
+<P>
+Tracepoint probes begin with <TT>kernel</TT>.  The next part names the
+tracepoint itself: <TT>trace("name")</TT>.  The tracepoint
+<TT>name</TT> string, which can contain wildcard characters, is
+matched against the names defined by the kernel developers in the
+tracepoint header files.
+
+<P>
+The handler associated with a tracepoint-based probe can read the
+optional parameters specified at the macro call site.  These
+parameters are named according to the declaration by the tracepoint
+author.  For example, the tracepoint probe
+<TT>kernel.trace("sched_switch")</TT> provides the parameters
+<TT>$rq</TT>, <TT>$prev</TT>, and <TT>$next</TT>.  If the parameter
+is a complex type such as a struct pointer, then a script can access
+fields with the same syntax as DWARF <TT>$target</TT> variables.
+Tracepoint parameters cannot be modified; however, in guru mode a
+script can modify fields of parameters.
+
+<P>
+The name of the tracepoint is available in <TT>$$name</TT>, and a
+string of <TT>name=value</TT> pairs for all parameters of the
+tracepoint is available in <TT>$$vars</TT> or <TT>$$parms</TT>.
+
+<P>
+
+<H2><A NAME="SECTION000510000000000000000"></A>
+<A NAME="sec:syscall"></A><A NAME="631"></A>
+<BR>
+4.10 Syscall probes
+</H2>
+The <TT>syscall.*</TT>  aliases define several hundred probes.  They
+use the following syntax:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+syscall.NAME
+syscall.NAME.return
+</PRE>
+</DD>
+</DL>
+<P>
+Generally, two probes are defined for each normal system call as
+listed in the syscalls(2) manual page: one for entry and one for
+return.   System calls that never return do not have a
+corresponding <TT>.return</TT> probe.
+
+<P>
+Each probe alias defines a variety of variables. Look at the tapset
+source code to find the most reliable source of variable definitions.
+Generally, each variable listed in the standard manual page is
+available as a script-level variable. For example,
+<TT>syscall.open</TT> exposes file name, flags, and mode.  In addition,
+a standard suite of variables is available at most aliases, as follows:
+
+<P>
+
+<UL>
+<LI><TT>argstr</TT>: A pretty-printed form of the entire argument
+  list, without parentheses.
+</LI>
+<LI><TT>name</TT>: The name of the system call.
+</LI>
+<LI><TT>retstr</TT>: For return probes, a pretty-printed form of the
+  system call result.
+</LI>
+</UL>
+
+<P>
+Not all probe aliases obey all of these general guidelines.  Please
+report exceptions that you encounter as a bug.
+
+<P>
+
+<H2><A NAME="SECTION000511000000000000000"></A>
+<A NAME="645"></A>
+<BR>
+4.11 Timer probes
+</H2>
+You can use intervals defined by the standard kernel jiffies<A NAME="646"></A>
+timer to trigger probe handlers asynchronously. A <I>jiffy</I> is a kernel-defined
+unit of time typically between 1 and 60 msec. Two probe point variants are
+supported by the translator:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+timer.jiffies(N)
+timer.jiffies(N).randomize(M)
+</PRE>
+</DD>
+</DL>The probe handler runs every N jiffies. If the <TT>randomize</TT><A NAME="653"></A>
+component is given, a linearly distributed random value in the range [-M
+... +M] is added to N every time the handler executes. N is restricted
+to a reasonable range (1 to approximately 1,000,000), and M is restricted
+to be less than N. There are no target variables provided in either context.
+Probes can be run concurrently on multiple processors.
+
+<P>
+Intervals may be specified in units of time. There are two probe point variants
+similar to the jiffies timer:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+timer.ms(N)
+timer.ms(N).randomize(M)
+</PRE>
+</DD>
+</DL>Here, N and M are specified in milliseconds<A NAME="660"></A>, but the
+full options for units are seconds (s or sec), milliseconds (ms or msec),
+microseconds (us or usec), nanoseconds (ns or nsec), and hertz (hz). Randomization
+is not supported for hertz timers.
+
+<P>
+The resolution of the timers depends on the target kernel. For kernels prior
+to 2.6.17, timers are limited to jiffies resolution, so intervals are rounded
+up to the nearest jiffies interval. After 2.6.17, the implementation uses
+hrtimers for greater precision, though the resulting resolution will be dependent
+upon architecture. In either case, if the randomize component is given, then
+the random value will be added to the interval before any rounding occurs.
+
+<P>
+Profiling timers are available to provide probes that execute on all CPUs
+at each system tick. This probe takes no parameters, as follows.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+timer.profile.tick
+</PRE>
+</DD>
+</DL>Full context information of the interrupted process is available, making
+this probe suitable for implementing a time-based sampling profiler.
+
+<P>
+It is recommended to use the tapset probe <code>timer.profile</code> rather
+than <code>timer.profile.tick</code>. This probe point behaves identically
+to <code>timer.profile.tick</code> when the underlying functionality is
+available, and falls back to using <code>perf.sw.cpu_clock</code> on some
+recent kernels which lack the corresponding profile timer facility.
+
+<P>
+The following is an example of timer usage.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# Refers to a periodic interrupt, every 1000 jiffies:
+timer.jiffies(1000)
+
+# Fires every 5 seconds:
+timer.sec(5)
+
+# Refers to a periodic interrupt, every 1000 +/- 200 jiffies:
+timer.jiffies(1000).randomize(200)
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION000512000000000000000">
+4.12 Special probe points</A>
+</H2>
+
+<P>
+The probe points <TT>begin</TT> and <TT>end</TT> are defined by the translator
+to refer to the time of session startup and shutdown. There are no target
+variables available in either context.
+
+<P>
+
+<H3><A NAME="SECTION000512100000000000000"></A>
+<A NAME="673"></A>
+<BR>
+4.12.1 begin
+</H3>
+The <TT>begin</TT> probe is the start of the SystemTap session.
+All <TT>begin</TT>
+probe handlers are run during the startup of the session.
+
+<P>
+
+<H3><A NAME="SECTION000512200000000000000"></A>
+<A NAME="677"></A>
+<BR>
+4.12.2 end
+</H3>
+The <TT>end</TT> probe is the end of the SystemTap session. All <TT>end</TT>
+probes are run during the normal shutdown of a session, such as in the aftermath
+of a SystemTap <TT>exit</TT> function call, or an interruption from the user.
+In the case of an shutdown triggered by error, <TT>end</TT> probes are not run.
+
+<P>
+
+<H3><A NAME="SECTION000512300000000000000"></A>
+<A NAME="683"></A>
+<BR>
+4.12.3 error
+</H3>
+The <I>error</I> probe point is similar to the end
+probe, except the probe handler runs when the session ends if an error
+occurred.  In this case, an <TT>end</TT> probe is skipped, but each
+<TT>error</TT> probe is still attempted.  You can use an
+<TT>error</TT> probe to clean up or perform a final action on script
+termination.
+
+<P>
+Here is a simple example:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+probe error { println ("Oops, errors occurred. Here's a report anyway.")
+              foreach (coin in mint) { println (coin) } }
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION000512400000000000000"></A>
+<A NAME="693"></A>
+<BR>
+4.12.4 begin, end, and error probe sequence
+</H3>
+<TT>begin</TT>, <TT>end</TT>, and <TT>error</TT> probes can be
+specified with an optional sequence number that controls the order in
+which they are run. If no sequence number is provided, the sequence
+number defaults to zero and probes are run in the order that they
+occur in the script file. Sequence numbers may be either positive or
+negative, and are especially useful for tapset writers who want to do
+initialization in a <TT>begin</TT> probe. The following are examples.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+# In a tapset file:
+probe begin(-1000) { ... }
+
+# In a user script:
+probe begin { ... }
+</PRE>
+</DD>
+</DL>The user script <TT>begin</TT> probe defaults to sequence number zero, so
+the tapset <TT>begin</TT> probe will run first.
+
+<P>
+
+<H3><A NAME="SECTION000512500000000000000"></A>
+<A NAME="705"></A>
+<BR>
+4.12.5 never
+</H3>
+The <TT>never</TT> probe point is defined by the translator to mean <I>never</I>.
+Its statements are analyzed for symbol and type correctness, but its probe
+handler is never run. This probe point may be useful in conjunction with
+optional probes. See Section&nbsp;<A HREF="#sub:Optional-probe-points"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html330"
+  HREF="Language_elements.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html324"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html318"
+  HREF="Components_SystemTap_script.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html326"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html328"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html331"
+  HREF="Language_elements.html">5 Language elements</A>
+<B> Up:</B> <A NAME="tex2html325"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html319"
+  HREF="Components_SystemTap_script.html">3 Components of a</A>
+ &nbsp; <B>  <A NAME="tex2html327"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html329"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/Statement_types.html b/langref/Statement_types.html
new file mode 100644 (file)
index 0000000..0441755
--- /dev/null
@@ -0,0 +1,431 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>6 Statement types</TITLE>
+<META NAME="description" CONTENT="6 Statement types">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Associative_arrays.html">
+<LINK REL="previous" HREF="Language_elements.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Associative_arrays.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html427"
+  HREF="Associative_arrays.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html421"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html415"
+  HREF="Language_elements.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html423"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html425"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html428"
+  HREF="Associative_arrays.html">7 Associative arrays</A>
+<B> Up:</B> <A NAME="tex2html422"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html416"
+  HREF="Language_elements.html">5 Language elements</A>
+ &nbsp; <B>  <A NAME="tex2html424"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html426"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html429"
+  HREF="Statement_types.html#SECTION00071000000000000000">6.1 break and continue</A>
+<LI><A NAME="tex2html430"
+  HREF="Statement_types.html#SECTION00072000000000000000">6.2 try/catch</A>
+<LI><A NAME="tex2html431"
+  HREF="Statement_types.html#SECTION00073000000000000000">6.3 delete</A>
+<LI><A NAME="tex2html432"
+  HREF="Statement_types.html#SECTION00074000000000000000">6.4 EXP (expression)</A>
+<LI><A NAME="tex2html433"
+  HREF="Statement_types.html#SECTION00075000000000000000">6.5 for</A>
+<LI><A NAME="tex2html434"
+  HREF="Statement_types.html#SECTION00076000000000000000">6.6 foreach</A>
+<LI><A NAME="tex2html435"
+  HREF="Statement_types.html#SECTION00077000000000000000">6.7 if</A>
+<LI><A NAME="tex2html436"
+  HREF="Statement_types.html#SECTION00078000000000000000">6.8 next</A>
+<LI><A NAME="tex2html437"
+  HREF="Statement_types.html#SECTION00079000000000000000">6.9 ; (null statement)</A>
+<LI><A NAME="tex2html438"
+  HREF="Statement_types.html#SECTION000710000000000000000">6.10 return</A>
+<LI><A NAME="tex2html439"
+  HREF="Statement_types.html#SECTION000711000000000000000">6.11 { } (statement block)</A>
+<LI><A NAME="tex2html440"
+  HREF="Statement_types.html#SECTION000712000000000000000">6.12 while</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:Statement-Types"></A>
+<BR>
+6 Statement types
+</H1>
+
+<P>
+Statements enable procedural control flow within functions and probe handlers.
+The total number of statements executed in response to any single probe event
+is limited to MAXACTION, which defaults to 1000. See Section&nbsp;<A HREF="SystemTap_overview.html#sub:SystemTap-safety"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+
+<P>
+
+<H2><A NAME="SECTION00071000000000000000"></A>
+<A NAME="924"></A>
+<A NAME="925"></A>
+<BR>
+6.1 break and continue
+</H2>
+Use <TT>break</TT> or <TT>continue</TT> to exit or iterate the innermost
+nesting loop statement, such as within a <TT>while, for,</TT> or <TT>foreach</TT>
+statement. The syntax and semantics are the same as those used in C.
+
+<P>
+
+<H2><A NAME="SECTION00072000000000000000"></A>
+<A NAME="931"></A>
+<A NAME="932"></A>
+<BR>
+6.2 try/catch
+</H2>
+Use <TT>try</TT>/<TT>catch</TT> to handle most kinds of run-time errors within the script
+instead of aborting the probe handler in progress.  The semantics are similar
+to C++ in that try/catch blocks may be nested.  The error string may be captured
+by optionally naming a variable which is to receive it.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+try { 
+   /* do something */
+   /* trigger error like kread(0), or divide by zero, or error("foo") */
+} catch (msg) { /* omit (msg) entirely if not interested */
+   /* println("caught error ", msg) */
+   /* handle error */
+}
+/* execution continues */
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00073000000000000000"></A><A NAME="sub:delete"></A>
+<A NAME="940"></A>
+<BR>
+6.3 delete
+</H2>
+<TT>delete</TT> removes an element.
+
+<P>
+The following statement removes from ARRAY the element specified by the index
+tuple. The value will no longer be available, and subsequent iterations will
+not report the element. It is not an error to delete an element that does
+not exist.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+delete ARRAY[INDEX1, INDEX2, ...]
+</PRE>
+</DD>
+</DL>The following syntax removes all elements from ARRAY:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+delete ARRAY
+</PRE>
+</DD>
+</DL>The following statement removes the value of SCALAR. Integers and strings
+are cleared to zero and null (&#34;&#34;) respectively, while statistics
+are reset to their initial empty state.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+delete SCALAR
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00074000000000000000"></A>
+<A NAME="957"></A>
+<BR>
+6.4 EXP (expression)
+</H2>
+An <TT>expression</TT> executes a string- or integer-valued expression and
+discards the value.
+
+<P>
+
+<H2><A NAME="SECTION00075000000000000000"></A>
+<A NAME="960"></A>
+<BR>
+6.5 for
+</H2>
+General syntax:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+for (EXP1; EXP2; EXP3) STMT
+</PRE>
+</DD>
+</DL>The <TT>for</TT> statement is similar to the <TT>for</TT> statement in C.
+The <TT>for</TT> expression executes EXP1 as initialization. While EXP2 is
+non-zero, it executes STMT, then the iteration expression EXP3.
+
+<P>
+
+<H2><A NAME="SECTION00076000000000000000"></A><A NAME="sub:foreach"></A>
+<A NAME="969"></A>
+<BR>
+6.6 foreach
+</H2>
+General syntax:
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+foreach (VAR in ARRAY) STMT
+</PRE>
+</DD>
+</DL>The <TT>foreach</TT> statement loops over each element of a named global array, assigning
+the current key to VAR. The array must not be modified within the statement.
+If you add a single plus (+) or minus (-) operator after the VAR or the ARRAY
+identifier, the iteration order will be sorted by the ascending or descending
+index or value.
+
+<P>
+The following statement behaves the same as the first example, except it
+is used when an array is indexed with a tuple of keys.  Use a sorting suffix
+on at most one VAR or ARRAY identifier.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+foreach ([VAR1, VAR2, ...] in ARRAY) STMT
+</PRE>
+</DD>
+</DL>
+<P>
+You can combine the first and second syntax to capture both the full tuple
+and the keys at the same time as follows.
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+foreach (VAR = [VAR1, VAR2, ...] in ARRAY) STMT
+</PRE>
+</DD>
+</DL>
+<P>
+The following statement is the same as the first example, except that the
+<TT>limit</TT> keyword limits the number of loop iterations to EXP times.
+EXP is evaluated once at the beginning of the loop.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+foreach (VAR in ARRAY limit EXP) STMT
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00077000000000000000"></A>
+<A NAME="989"></A>
+<BR>
+6.7 if
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+if (EXP) STMT1 [ else STMT2 ]
+</PRE>
+</DD>
+</DL>The <TT>if</TT> statement compares an integer-valued EXP to zero. It executes
+the first STMT if non-zero, or the second STMT if zero.
+
+<P>
+The <TT>if</TT> command has the same syntax and semantics as used in C.
+
+<P>
+
+<H2><A NAME="SECTION00078000000000000000"></A>
+<A NAME="997"></A>
+<BR>
+6.8 next
+</H2>
+The <TT>next</TT> statement returns immediately from the enclosing probe
+handler.
+
+<P>
+
+<H2><A NAME="SECTION00079000000000000000"></A>
+<A NAME="1000"></A>
+<A NAME="1001"></A>
+<BR>
+6.9 ; (null statement)
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+statement1
+;
+statement2
+</PRE>
+</DD>
+</DL>The semicolon represents the null statement, or do nothing. It is useful
+as an optional separator between statements to improve syntax error detection
+and to handle certain grammar ambiguities.
+
+<P>
+
+<H2><A NAME="SECTION000710000000000000000"></A>
+<A NAME="1007"></A>
+<BR>
+6.10 return
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+return EXP
+</PRE>
+</DD>
+</DL>The <TT>return</TT> statement returns the EXP value from the enclosing function.
+If the value of the function is not returned, then a return statement is
+not needed, and the function will have a special <I>unknown</I> type with
+no return value.
+
+<P>
+
+<H2><A NAME="SECTION000711000000000000000"></A>
+<A NAME="1015"></A>
+<A NAME="1016"></A>
+<BR>
+6.11 { } (statement block)
+</H2>
+This is the statement block with zero or more statements enclosed within
+brackets. The following is the general syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+{ STMT1 STMT2 ... }
+</PRE>
+</DD>
+</DL>The statement block executes each statement in sequence in the block. Separators
+or terminators are generally not necessary between statements. The statement
+block uses the same syntax and semantics as in C.
+
+<P>
+
+<H2><A NAME="SECTION000712000000000000000"></A>
+<A NAME="1022"></A>
+<BR>
+6.12 while
+</H2>
+General syntax:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+while (EXP) STMT
+</PRE>
+</DD>
+</DL>The <TT>while</TT> statement uses the same syntax and semantics as in C.
+In the statement above, while the integer-valued EXP evaluates to non-zero,
+the parser will execute STMT.
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html427"
+  HREF="Associative_arrays.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html421"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html415"
+  HREF="Language_elements.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html423"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html425"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html428"
+  HREF="Associative_arrays.html">7 Associative arrays</A>
+<B> Up:</B> <A NAME="tex2html422"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html416"
+  HREF="Language_elements.html">5 Language elements</A>
+ &nbsp; <B>  <A NAME="tex2html424"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html426"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/Statistics_aggregates.html b/langref/Statistics_aggregates.html
new file mode 100644 (file)
index 0000000..68aed46
--- /dev/null
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>8 Statistics (aggregates)</TITLE>
+<META NAME="description" CONTENT="8 Statistics (aggregates)">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Formatted_output.html">
+<LINK REL="previous" HREF="Associative_arrays.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Formatted_output.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html473"
+  HREF="Formatted_output.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html467"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html461"
+  HREF="Associative_arrays.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html469"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html471"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html474"
+  HREF="Formatted_output.html">9 Formatted output</A>
+<B> Up:</B> <A NAME="tex2html468"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html462"
+  HREF="Associative_arrays.html">7 Associative arrays</A>
+ &nbsp; <B>  <A NAME="tex2html470"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html472"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html475"
+  HREF="Statistics_aggregates.html#SECTION00091000000000000000">8.1 The aggregation (&lt; &lt; &lt;) operator</A>
+<LI><A NAME="tex2html476"
+  HREF="Statistics_aggregates.html#SECTION00092000000000000000">8.2 Extraction functions</A>
+<LI><A NAME="tex2html477"
+  HREF="Statistics_aggregates.html#SECTION00093000000000000000">8.3 Integer extractors</A>
+<UL>
+<LI><A NAME="tex2html478"
+  HREF="Statistics_aggregates.html#SECTION00093100000000000000">8.3.1 @count(s)</A>
+<LI><A NAME="tex2html479"
+  HREF="Statistics_aggregates.html#SECTION00093200000000000000">8.3.2 @sum(s)</A>
+<LI><A NAME="tex2html480"
+  HREF="Statistics_aggregates.html#SECTION00093300000000000000">8.3.3 @min(s)</A>
+<LI><A NAME="tex2html481"
+  HREF="Statistics_aggregates.html#SECTION00093400000000000000">8.3.4 @max(s)</A>
+<LI><A NAME="tex2html482"
+  HREF="Statistics_aggregates.html#SECTION00093500000000000000">8.3.5 @avg(s)</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html483"
+  HREF="Statistics_aggregates.html#SECTION00094000000000000000">8.4 Histogram extractors</A>
+<UL>
+<LI><A NAME="tex2html484"
+  HREF="Statistics_aggregates.html#SECTION00094100000000000000">8.4.1 @hist_linear</A>
+<LI><A NAME="tex2html485"
+  HREF="Statistics_aggregates.html#SECTION00094200000000000000">8.4.2 @hist_log</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html486"
+  HREF="Statistics_aggregates.html#SECTION00095000000000000000">8.5 Deletion</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:Statistics"></A>
+<A NAME="1063"></A>
+<BR>
+8 Statistics (aggregates)
+</H1>
+Aggregate instances are used to collect statistics on numerical values, when
+it is important to accumulate new data quickly and in large volume. These
+instances operate without exclusive locks, and store only aggregated stream
+statistics. Aggregates make sense only for global variables. They are stored
+individually or as elements of an associative array. For information about 
+wrapping associative arrays with statistics elements, see section&nbsp;<A HREF="Associative_arrays.html#sub:Array-Wrapping"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>
+
+<P>
+
+<H2><A NAME="SECTION00091000000000000000">
+8.1 The aggregation (&lt; &lt; &lt;) operator</A>
+</H2>
+<A NAME="1358"></A>
+The aggregation operator is ``&lt; &lt; &lt;'',
+and its effect is similar to an assignment or a C++ output streaming operation.
+The left operand specifies a scalar or array-index <I>l-value</I>, which
+must be declared global. The right operand is a numeric expression. The meaning
+is intuitive: add the given number as a sample to the set of numbers to compute their
+statistics. The specific list of statistics to gather is given separately
+by the extraction functions. The following is an example.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+a &lt;&lt;&lt; delta_timestamp
+writes[execname()] &lt;&lt;&lt; count
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H2><A NAME="SECTION00092000000000000000"></A>
+<A NAME="1078"></A>
+<BR>
+8.2 Extraction functions
+</H2>
+For each instance of a distinct extraction function operating on a given
+identifier, the translator computes a set of statistics. With each execution
+of an extraction function, the aggregation is computed for that moment across
+all processors. The first argument of each function is the same style of
+l-value as used on the left side of the aggregation operation.
+
+<P>
+
+<H2><A NAME="SECTION00093000000000000000">
+8.3 Integer extractors</A>
+</H2>
+
+<P>
+The following functions provide methods to extract information about aggregate.
+
+<P>
+
+<H3><A NAME="SECTION00093100000000000000"></A>
+<A NAME="1081"></A>
+<BR>
+8.3.1 @count(s)
+</H3>
+This statement returns the number of samples accumulated in aggregate s.
+
+<P>
+
+<H3><A NAME="SECTION00093200000000000000"></A>
+<A NAME="1083"></A>
+<BR>
+8.3.2 @sum(s)
+</H3>
+This statement returns the total sum of all samples in aggregate s.
+
+<P>
+
+<H3><A NAME="SECTION00093300000000000000"></A>
+<A NAME="1085"></A>
+<BR>
+8.3.3 @min(s)
+</H3>
+This statement returns the minimum of all samples in aggregate s.
+
+<P>
+
+<H3><A NAME="SECTION00093400000000000000"></A>
+<A NAME="1087"></A>
+<BR>
+8.3.4 @max(s)
+</H3>
+This statement returns the maximum of all samples in aggregate s.
+
+<P>
+
+<H3><A NAME="SECTION00093500000000000000"></A>
+<A NAME="1089"></A>
+<BR>
+8.3.5 @avg(s)
+</H3>
+This statement returns the average value of all samples in aggregate s.
+
+<P>
+
+<H2><A NAME="SECTION00094000000000000000"></A>
+<A NAME="1091"></A>
+<BR>
+8.4 Histogram extractors
+</H2>
+The following functions provide methods to extract histogram information.
+Printing a histogram with the print family of functions renders a histogram
+object as a tabular "ASCII art" bar chart.
+
+<P>
+
+<H3><A NAME="SECTION00094100000000000000"></A>
+<A NAME="1093"></A>
+<BR>
+8.4.1 @hist_linear
+</H3>
+The statement <TT>@hist_linear(v,L,H,W)</TT> represents a linear histogram
+of aggregate <TT>v</TT>,
+where <I>L</I> and <I>H</I> represent the lower and upper end of
+a range of values and <I>W</I> represents the width (or size) of each bucket
+within the range.  The low and high values can be negative, but the overall
+difference (high minus low) must be positive. The width parameter must also
+be positive.
+
+<P>
+In the output, a range of consecutive empty buckets may be replaced with a tilde
+(~) character.  This can be controlled on the command line
+with -DHIST_ELISION=&lt; num&gt; ,
+where &lt; num&gt;  specifies how many
+empty buckets at the top and bottom of the range to print.
+The default is 2.  A &lt; num&gt;  of 0
+removes all empty buckets. A negative &lt; num&gt; 
+disables removal.
+
+<P>
+For example, if you specify -DHIST_ELISION=3 and the histogram has 10
+consecutive empty buckets, the first 3 and last 3 empty buckets will
+be printed and the middle 4 empty buckets will be represented by a
+tilde (~).
+
+<P>
+The following is an example.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+global reads
+probe netdev.receive {
+    reads &lt;&lt;&lt; length
+}
+probe end {
+    print(@hist_linear(reads, 0, 10240, 200))
+}
+</PRE>
+</DD>
+</DL>This generates the following output.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+value |-------------------------------------------------- count
+    0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1650
+  200 |                                                      8
+  400 |                                                      0
+  600 |                                                      0
+      ~
+ 1000 |                                                      0
+ 1200 |                                                      0
+ 1400 |                                                      1
+ 1600 |                                                      0
+ 1800 |                                                      0
+</PRE>
+</DD>
+</DL>
+This shows that 1650 network reads were of a size between 0 and 199 bytes,
+8 reads were between 200 and 399 bytes, and 1 read was between
+1200 and 1399 bytes.  The tilde (~) character indicates
+the bucket for 800 to 999 bytes was removed because it was empty.
+Empty buckets for 2000 bytes and larger were also removed because they
+were empty.
+
+<P>
+
+<H3><A NAME="SECTION00094200000000000000"></A>
+<A NAME="1121"></A>
+<BR>
+8.4.2 @hist_log
+</H3>
+The statement <TT>@hist_log(v)</TT> represents a base-2 logarithmic
+histogram.  Empty buckets are replaced with a tilde (~)
+character in the same way as <TT>@hist_linear()</TT> (see above).
+
+<P>
+The following is an example.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+global reads
+probe netdev.receive {
+    reads &lt;&lt;&lt; length
+}
+probe end {
+    print(@hist_log(reads))
+}
+</PRE>
+</DD>
+</DL>This generates the following output.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+value |-------------------------------------------------- count
+    8 |                                                      0
+   16 |                                                      0
+   32 |                                                    254
+   64 |                                                      3
+  128 |                                                      2
+  256 |                                                      2
+  512 |                                                      4
+ 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16689
+ 2048 |                                                      0
+ 4096 |                                                      0
+</PRE>
+</DD>
+</DL>
+
+<P>
+
+<H2><A NAME="SECTION00095000000000000000"></A>
+<A NAME="1136"></A>
+<BR>
+8.5 Deletion
+</H2>
+The <TT>delete</TT> statement (subsection <A HREF="Statement_types.html#sub:delete"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) applied to an
+aggregate variable will reset it to the initial empty state.
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html473"
+  HREF="Formatted_output.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html467"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html461"
+  HREF="Associative_arrays.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html469"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html471"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html474"
+  HREF="Formatted_output.html">9 Formatted output</A>
+<B> Up:</B> <A NAME="tex2html468"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html462"
+  HREF="Associative_arrays.html">7 Associative arrays</A>
+ &nbsp; <B>  <A NAME="tex2html470"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html472"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/SystemTap_overview.html b/langref/SystemTap_overview.html
new file mode 100644 (file)
index 0000000..adc6c89
--- /dev/null
@@ -0,0 +1,454 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>1 SystemTap overview</TITLE>
+<META NAME="description" CONTENT="1 SystemTap overview">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Types_SystemTap_scripts.html">
+<LINK REL="previous" HREF="Contents.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Types_SystemTap_scripts.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html264"
+  HREF="Types_SystemTap_scripts.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html258"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html252"
+  HREF="Contents.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html260"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html262"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html265"
+  HREF="Types_SystemTap_scripts.html">2 Types of SystemTap</A>
+<B> Up:</B> <A NAME="tex2html259"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html253"
+  HREF="Contents.html">Contents</A>
+ &nbsp; <B>  <A NAME="tex2html261"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html263"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html266"
+  HREF="SystemTap_overview.html#SECTION00021000000000000000">1.1 About this guide</A>
+<LI><A NAME="tex2html267"
+  HREF="SystemTap_overview.html#SECTION00022000000000000000">1.2 Reasons to use SystemTap</A>
+<LI><A NAME="tex2html268"
+  HREF="SystemTap_overview.html#SECTION00023000000000000000">1.3 Event-action language</A>
+<LI><A NAME="tex2html269"
+  HREF="SystemTap_overview.html#SECTION00024000000000000000">1.4 Sample SystemTap scripts</A>
+<UL>
+<LI><A NAME="tex2html270"
+  HREF="SystemTap_overview.html#SECTION00024100000000000000">1.4.1 Basic SystemTap syntax and control structures</A>
+<LI><A NAME="tex2html271"
+  HREF="SystemTap_overview.html#SECTION00024200000000000000">1.4.2 Primes between 0 and 49</A>
+<LI><A NAME="tex2html272"
+  HREF="SystemTap_overview.html#SECTION00024300000000000000">1.4.3 Recursive functions</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html273"
+  HREF="SystemTap_overview.html#SECTION00025000000000000000">1.5 The stap command</A>
+<LI><A NAME="tex2html274"
+  HREF="SystemTap_overview.html#SECTION00026000000000000000">1.6 Safety and security</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00020000000000000000"></A><A NAME="sec:SystemTap-Overview"></A>
+<BR>
+1 SystemTap overview
+</H1>
+
+<P>
+
+<H2><A NAME="SECTION00021000000000000000">
+1.1 About this guide</A>
+</H2>
+
+<P>
+This guide is a comprehensive reference of SystemTap's language constructs
+and syntax. The contents borrow heavily from existing SystemTap documentation
+found in manual pages and the tutorial. The presentation of information here
+provides the reader with a single place to find language syntax and recommended
+usage. In order to successfully use this guide, you should be familiar with
+the general theory and operation of SystemTap. If you are new to SystemTap,
+you will find the tutorial to be an excellent place to start learning. For
+detailed information about tapsets, see the manual pages provided with the
+distribution. For information about the entire collection of SystemTap reference
+material, see Section&nbsp;<A HREF="Further_Reference.html#sec:For-Further-Reference"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>
+
+<P>
+
+<H2><A NAME="SECTION00022000000000000000">
+1.2 Reasons to use SystemTap</A>
+</H2>
+
+<P>
+SystemTap provides infrastructure to simplify the gathering of information
+about a running Linux kernel so that it may be further analyzed. This analysis
+assists in identifying the underlying cause of a performance or functional
+problem. SystemTap was designed to eliminate the need for a developer to
+go through the tedious instrument, recompile, install, and reboot sequence
+normally required to collect this kind of data. To do this, it provides a
+simple command-line interface and scripting language for writing
+instrumentation for both kernel and user space.
+With SystemTap, developers, system administrators, and users can easily write
+scripts that gather and manipulate system data that is otherwise unavailable
+from standard Linux tools. Users of SystemTap will find it to be a significant
+improvement over older methods.
+
+<P>
+
+<H2><A NAME="SECTION00023000000000000000"></A>
+<A NAME="48"></A>
+<BR>
+1.3 Event-action language
+</H2>
+SystemTap's language is strictly typed, declaration free, procedural, and
+inspired by dtrace and awk. Source code points or events in the kernel are
+associated with handlers, which are subroutines that are executed synchronously.
+These probes are conceptually similar to &#34;breakpoint command lists&#34;
+in the GDB debugger.
+
+<P>
+There are two main outermost constructs: probes and functions. Within these,
+statements and expressions use C-like operator syntax and precedence.
+
+<P>
+
+<H2><A NAME="SECTION00024000000000000000"></A>
+<A NAME="52"></A>
+<BR>
+1.4 Sample SystemTap scripts
+</H2>
+Following are some example scripts that illustrate the basic operation of
+SystemTap. For more examples, see the examples/small_demos/ directory in
+the source directory, the SystemTap wiki at <TT><A NAME="tex2html2"
+  HREF="http://sourceware.org/systemtap/wiki/HomePage">http://sourceware.org/systemtap/wiki/HomePage</A></TT>,
+or the SystemTap War Stories at <TT><A NAME="tex2html3"
+  HREF="http://sourceware.org/systemtap/wiki/WarStories">http://sourceware.org/systemtap/wiki/WarStories</A></TT> page.
+
+<P>
+
+<H3><A NAME="SECTION00024100000000000000">
+1.4.1 Basic SystemTap syntax and control structures</A>
+</H3>
+
+<P>
+The following code examples demonstrate SystemTap syntax and control structures.
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+global odds, evens
+
+probe begin {
+    # "no" and "ne" are local integers
+    for (i = 0; i &lt; 10; i++) {
+        if (i % 2) odds [no++] = i
+            else evens [ne++] = i
+    }
+
+    delete odds[2]
+    delete evens[3]
+    exit()
+}
+
+probe end {
+    foreach (x+ in odds)
+        printf ("odds[%d] = %d", x, odds[x])
+
+    foreach (x in evens-)
+        printf ("evens[%d] = %d", x, evens[x])
+}
+</PRE>
+</DD>
+</DL>This prints:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+odds[0] = 1
+odds[1] = 3
+odds[3] = 7
+odds[4] = 9
+evens[4] = 8
+evens[2] = 4
+evens[1] = 2
+evens[0] = 0
+</PRE>
+</DD>
+</DL>Note that all variable types are inferred, and that all locals and
+globals are initialized.  Integers are set to 0 and strings are set to
+the empty string.
+
+<P>
+
+<H3><A NAME="SECTION00024200000000000000">
+1.4.2 Primes between 0 and 49</A>
+</H3>
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+function isprime (x) {
+    if (x &lt; 2) return 0
+    for (i = 2; i &lt; x; i++) {
+        if (x % i == 0) return 0
+        if (i * i &gt; x) break
+    }
+    return 1
+}
+
+probe begin {
+    for (i = 0; i &lt; 50; i++)
+        if (isprime (i)) printf("%d\n", i)
+    exit()
+}
+</PRE>
+</DD>
+</DL>This prints:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+2
+3
+5
+7
+11
+13
+17
+19
+23
+29
+31
+37
+41
+43
+47
+</PRE>
+</DD>
+</DL>
+<P>
+
+<H3><A NAME="SECTION00024300000000000000"></A>
+<A NAME="74"></A>
+<BR>
+1.4.3 Recursive functions
+</H3>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+function fibonacci(i) {
+    if (i &lt; 1) error ("bad number")
+    if (i == 1) return 1
+    if (i == 2) return 2
+    return fibonacci (i-1) + fibonacci (i-2)
+}
+
+probe begin {
+    printf ("11th fibonacci number: %d", fibonacci (11))
+    exit ()
+}
+</PRE>
+</DD>
+</DL>This prints:
+
+<P>
+
+<DL COMPACT>
+<DT>
+<DD><PRE>
+11th fibonacci number: 118
+</PRE>
+</DD>
+</DL>Any larger number input to the function may exceed the MAXACTION or MAXNESTING
+limits, which will be caught at run time and result in an error. For more
+about limits see Section&nbsp;<A HREF="#sub:SystemTap-safety"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
+
+
+<H2><A NAME="SECTION00025000000000000000"></A>
+<A NAME="86"></A>
+<BR>
+1.5 The stap command
+</H2>
+The stap program is the front-end to the SystemTap tool. It accepts probing
+instructions written in its scripting language, translates those instructions
+into C code, compiles this C code, and loads the resulting kernel module
+into a running Linux kernel to perform the requested system trace or probe
+functions. You can supply the script in a named file, from standard input,
+or from the command line. The SystemTap script runs until one of the following
+conditions occurs:
+
+<P>
+
+<UL>
+<LI>The user interrupts the script with a CTRL-C.
+</LI>
+<LI>The script executes the exit() function.
+</LI>
+<LI>The script encounters a sufficient number of soft errors.
+</LI>
+<LI>The monitored command started with the stap program's
+<TT><B>-c</B></TT> option exits.
+</LI>
+</UL>
+
+<P>
+The stap command does the following:
+
+<P>
+
+<UL>
+<LI>Translates the script
+</LI>
+<LI>Generates and compiles a kernel module
+</LI>
+<LI>Inserts the module; output to stap's stdout
+</LI>
+<LI>CTRL-C unloads the module and terminates stap
+</LI>
+</UL>
+
+<P>
+For a full list of options to the stap command, see the stap(1) manual page.
+
+<P>
+
+<H2><A NAME="SECTION00026000000000000000"></A><A NAME="sub:SystemTap-safety"></A>
+<A NAME="93"></A>
+<BR>
+1.6 Safety and security
+</H2>
+SystemTap is an administrative tool. It exposes kernel internal data structures
+and potentially private user information. It requires root privileges to
+actually run the kernel objects it builds using the <B>sudo</B> command,
+applied to the <B>staprun</B> program.
+
+<P>
+staprun is a part of the SystemTap package, dedicated to module loading and
+unloading and kernel-to-user data transfer. Since staprun does not perform
+any additional security checks on the kernel objects it is given, do not
+give elevated privileges via sudo to untrusted users.
+
+<P>
+The translator asserts certain safety constraints. <A NAME="96"></A>It
+ensures that no handler routine can run for too long, allocate memory, perform
+unsafe operations, or unintentionally interfere with the kernel. Use of script
+global variables is locked to protect against manipulation by concurrent
+probe handlers. Use of <I>guru mode</I> constructs such as embedded C (see
+Section&nbsp;<A HREF="Components_SystemTap_script.html#sub:Embedded-C"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) can violate these constraints, leading to
+a kernel crash or data corruption.
+
+<P>
+The resource use limits are set by macros in the generated C code. These
+may be overridden with the -D flag. The following list describes a selection
+of these macros:
+
+<P>
+<B>MAXNESTING</B> - The maximum number of recursive function call levels. The default is 10.
+
+<P>
+<B>MAXSTRINGLEN</B> - The maximum length of strings. The default is 256 bytes
+for 32 bit machines and 512 bytes for all other machines.
+
+<P>
+<B>MAXTRYLOCK</B> - The maximum number of iterations to wait for locks on global variables before
+declaring possible deadlock and skipping the probe. The default is 1000.
+
+<P>
+<B>MAXACTION</B> - The maximum number of statements to execute during any single probe hit. The default is 1000.
+
+<P>
+<B>MAXMAPENTRIES</B> - The maximum number of rows in an array if the array size is not specified
+explicitly when declared. The default is 2048.
+
+<P>
+<B>MAXERRORS</B> - The maximum number of soft errors before an exit is triggered. The default is 0.
+
+<P>
+<B>MAXSKIPPED</B> - The maximum number of skipped reentrant probes before an exit is triggered. The default is 100.
+
+<P>
+<B>MINSTACKSPACE</B> - The minimum number of free kernel stack bytes required in order to run a
+probe handler. This number should be large enough for the probe handler's
+own needs, plus a safety margin.  The default is 1024.
+
+<P>
+If something goes wrong with stap or staprun after a probe has started running,
+you may safely kill both user processes, and remove the active probe kernel
+module with the rmmod command. Any pending trace messages may be lost.
+
+<P>
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html264"
+  HREF="Types_SystemTap_scripts.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html258"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html252"
+  HREF="Contents.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html260"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html262"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html265"
+  HREF="Types_SystemTap_scripts.html">2 Types of SystemTap</A>
+<B> Up:</B> <A NAME="tex2html259"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html253"
+  HREF="Contents.html">Contents</A>
+ &nbsp; <B>  <A NAME="tex2html261"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html263"
+  HREF="Index.html">Index</A></B> 
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/langref/Tapset_defined_functions.html b/langref/Tapset_defined_functions.html
new file mode 100644 (file)
index 0000000..75fdabc
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>10 Tapset-defined functions</TITLE>
+<META NAME="description" CONTENT="10 Tapset-defined functions">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Further_Reference.html">
+<LINK REL="previous" HREF="Formatted_output.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Further_Reference.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html520"
+  HREF="Further_Reference.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html514"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html508"
+  HREF="Formatted_output.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html516"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html518"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html521"
+  HREF="Further_Reference.html">11 For Further Reference</A>
+<B> Up:</B> <A NAME="tex2html515"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html509"
+  HREF="Formatted_output.html">9 Formatted output</A>
+ &nbsp; <B>  <A NAME="tex2html517"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html519"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:Predefined-Functions"></A>
+<BR>
+10 Tapset-defined functions
+</H1>
+
+<P>
+Unlike built-in functions, tapset-defined functions are implemented in tapset scripts.
+These are individually documented in the in <TT>tapset::*(3stap)</TT>, 
+<TT>function::*(3stap)</TT>,
+and <TT>probe::*(3stap)</TT> man pages, and implemented under
+<TT>/usr/share/systemtap/tapset</TT>.
+
+<P>
+<BR><HR>
+
+</BODY>
+</HTML>
diff --git a/langref/Types_SystemTap_scripts.html b/langref/Types_SystemTap_scripts.html
new file mode 100644 (file)
index 0000000..e19290d
--- /dev/null
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>2 Types of SystemTap scripts</TITLE>
+<META NAME="description" CONTENT="2 Types of SystemTap scripts">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Components_SystemTap_script.html">
+<LINK REL="previous" HREF="SystemTap_overview.html">
+<LINK REL="up" HREF="langref.html">
+<LINK REL="next" HREF="Components_SystemTap_script.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html287"
+  HREF="Components_SystemTap_script.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<A NAME="tex2html281"
+  HREF="langref.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
+<A NAME="tex2html275"
+  HREF="SystemTap_overview.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
+<A NAME="tex2html283"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html285"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html288"
+  HREF="Components_SystemTap_script.html">3 Components of a</A>
+<B> Up:</B> <A NAME="tex2html282"
+  HREF="langref.html">SystemTap Language Reference</A>
+<B> Previous:</B> <A NAME="tex2html276"
+  HREF="SystemTap_overview.html">1 SystemTap overview</A>
+ &nbsp; <B>  <A NAME="tex2html284"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html286"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html289"
+  HREF="Types_SystemTap_scripts.html#SECTION00031000000000000000">2.1 Probe scripts</A>
+<LI><A NAME="tex2html290"
+  HREF="Types_SystemTap_scripts.html#SECTION00032000000000000000">2.2 Tapset scripts</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+
+<H1><A NAME="SECTION00030000000000000000"></A><A NAME="sec:Types-of-SystemTap"></A>
+<BR>
+2 Types of SystemTap scripts
+</H1>
+
+<P>
+
+<H2><A NAME="SECTION00031000000000000000">
+2.1 Probe scripts</A>
+</H2>
+
+<P>
+Probe scripts are analogous to programs; these scripts identify probe points
+and associated handlers.
+
+<P>
+
+<H2><A NAME="SECTION00032000000000000000">
+2.2 Tapset scripts</A>
+</H2>
+
+<P>
+Tapset scripts are libraries of probe aliases and auxiliary functions.
+
+<P>
+The /usr/share/systemtap/tapset directory contains tapset scripts. While
+these scripts look like regular SystemTap scripts, they cannot be run directly.
+
+<P>
+<BR><HR>
+
+</BODY>
+</HTML>
index b82a067a05f43d8a4b55730a4f28662569fd5767..97deb6fa9e5336ff49858d44ad3f7b2b3f98f9ab 100644 (file)
@@ -2,17 +2,17 @@
 # Associate images original text with physical files.
 
 
-$key = q/2^{63};MSF=1.6;AAT/;
-$cached_env_img{$key} = q|<IMG
- WIDTH="25" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
- SRC="|."$dir".q|img1.png"
- ALT="$2^{63}$">|; 
-
 $key = q/2^{64};MSF=1.6;AAT/;
 $cached_env_img{$key} = q|<IMG
  WIDTH="25" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
  SRC="|."$dir".q|img2.png"
  ALT="$2^{64}$">|; 
 
+$key = q/2^{63};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="25" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
+ SRC="|."$dir".q|img1.png"
+ ALT="$2^{63}$">|; 
+
 1;
 
diff --git a/langref/index.html b/langref/index.html
new file mode 100644 (file)
index 0000000..d52c203
--- /dev/null
@@ -0,0 +1,433 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>SystemTap Language Reference</TITLE>
+<META NAME="description" CONTENT="SystemTap Language Reference">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Contents.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html16"
+  HREF="Contents.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png"> 
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
+<A NAME="tex2html12"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html14"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html17"
+  HREF="Contents.html">Contents</A>
+ &nbsp; <B>  <A NAME="tex2html13"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html15"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<P>
+
+<P>
+<H1 ALIGN="CENTER">SystemTap Language Reference</H1>
+<DIV>
+
+</DIV>
+This document was derived from other documents contributed to the SystemTap project by employees of Red Hat, IBM and Intel.
+<BR>
+
+<P>
+Copyright &#169; 2007-2013 Red Hat Inc.
+<BR>
+Copyright &#169; 2007-2009 IBM Corp.
+<BR>
+Copyright &#169; 2007 Intel Corporation.
+<BR>
+
+<P>
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+<BR>
+
+<P>
+The GNU Free Documentation License is available from
+<TT><A NAME="tex2html1"
+  HREF="http://www.gnu.org/licenses/fdl.html">http://www.gnu.org/licenses/fdl.html</A></TT> or by writing to
+the Free Software Foundation, Inc., 51 Franklin Street,
+Fifth Floor, Boston, MA 02110-1301, USA.
+
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></A>
+
+<UL>
+<LI><A NAME="tex2html18"
+  HREF="Contents.html">Contents</A>
+<LI><A NAME="tex2html19"
+  HREF="SystemTap_overview.html">1 SystemTap overview</A>
+<UL>
+<LI><A NAME="tex2html20"
+  HREF="SystemTap_overview.html#SECTION00021000000000000000">1.1 About this guide</A>
+<LI><A NAME="tex2html21"
+  HREF="SystemTap_overview.html#SECTION00022000000000000000">1.2 Reasons to use SystemTap</A>
+<LI><A NAME="tex2html22"
+  HREF="SystemTap_overview.html#SECTION00023000000000000000">1.3 Event-action language</A>
+<LI><A NAME="tex2html23"
+  HREF="SystemTap_overview.html#SECTION00024000000000000000">1.4 Sample SystemTap scripts</A>
+<UL>
+<LI><A NAME="tex2html24"
+  HREF="SystemTap_overview.html#SECTION00024100000000000000">1.4.1 Basic SystemTap syntax and control structures</A>
+<LI><A NAME="tex2html25"
+  HREF="SystemTap_overview.html#SECTION00024200000000000000">1.4.2 Primes between 0 and 49</A>
+<LI><A NAME="tex2html26"
+  HREF="SystemTap_overview.html#SECTION00024300000000000000">1.4.3 Recursive functions</A>
+</UL>
+<LI><A NAME="tex2html27"
+  HREF="SystemTap_overview.html#SECTION00025000000000000000">1.5 The stap command</A>
+<LI><A NAME="tex2html28"
+  HREF="SystemTap_overview.html#SECTION00026000000000000000">1.6 Safety and security</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html29"
+  HREF="Types_SystemTap_scripts.html">2 Types of SystemTap scripts</A>
+<UL>
+<LI><A NAME="tex2html30"
+  HREF="Types_SystemTap_scripts.html#SECTION00031000000000000000">2.1 Probe scripts</A>
+<LI><A NAME="tex2html31"
+  HREF="Types_SystemTap_scripts.html#SECTION00032000000000000000">2.2 Tapset scripts</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html32"
+  HREF="Components_SystemTap_script.html">3 Components of a SystemTap script</A>
+<UL>
+<LI><A NAME="tex2html33"
+  HREF="Components_SystemTap_script.html#SECTION00041000000000000000">3.1 Probe definitions</A>
+<LI><A NAME="tex2html34"
+  HREF="Components_SystemTap_script.html#SECTION00042000000000000000">3.2 Probe aliases</A>
+<UL>
+<LI><A NAME="tex2html35"
+  HREF="Components_SystemTap_script.html#SECTION00042100000000000000">3.2.1 Prologue-style aliases (=)</A>
+<LI><A NAME="tex2html36"
+  HREF="Components_SystemTap_script.html#SECTION00042200000000000000">3.2.2 Epilogue-style aliases (+=)</A>
+<LI><A NAME="tex2html37"
+  HREF="Components_SystemTap_script.html#SECTION00042300000000000000">3.2.3 Probe alias usage</A>
+<LI><A NAME="tex2html38"
+  HREF="Components_SystemTap_script.html#SECTION00042400000000000000">3.2.4 Alias suffixes</A>
+<LI><A NAME="tex2html39"
+  HREF="Components_SystemTap_script.html#SECTION00042500000000000000">3.2.5 Alias suffixes and wildcards</A>
+</UL>
+<LI><A NAME="tex2html40"
+  HREF="Components_SystemTap_script.html#SECTION00043000000000000000">3.3 Variables</A>
+<UL>
+<LI><A NAME="tex2html41"
+  HREF="Components_SystemTap_script.html#SECTION00043100000000000000">3.3.1 Unused variables</A>
+</UL>
+<LI><A NAME="tex2html42"
+  HREF="Components_SystemTap_script.html#SECTION00044000000000000000">3.4 Auxiliary functions</A>
+<LI><A NAME="tex2html43"
+  HREF="Components_SystemTap_script.html#SECTION00045000000000000000">3.5 Embedded C</A>
+<LI><A NAME="tex2html44"
+  HREF="Components_SystemTap_script.html#SECTION00046000000000000000">3.6 Embedded C functions</A>
+<LI><A NAME="tex2html45"
+  HREF="Components_SystemTap_script.html#SECTION00047000000000000000">3.7 Embedded C pragma comments</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html46"
+  HREF="Probe_points.html">4 Probe points</A>
+<UL>
+<LI><A NAME="tex2html47"
+  HREF="Probe_points.html#SECTION00051000000000000000">4.1 General syntax</A>
+<UL>
+<LI><A NAME="tex2html48"
+  HREF="Probe_points.html#SECTION00051100000000000000">4.1.1 Prefixes</A>
+<LI><A NAME="tex2html49"
+  HREF="Probe_points.html#SECTION00051200000000000000">4.1.2 Suffixes</A>
+<LI><A NAME="tex2html50"
+  HREF="Probe_points.html#SECTION00051300000000000000">4.1.3 Wildcarded file names, function names</A>
+<LI><A NAME="tex2html51"
+  HREF="Probe_points.html#SECTION00051400000000000000">4.1.4 Optional probe points</A>
+</UL>
+<LI><A NAME="tex2html52"
+  HREF="Probe_points.html#SECTION00052000000000000000">4.2 Built-in probe point types (DWARF probes)</A>
+<UL>
+<LI><A NAME="tex2html53"
+  HREF="Probe_points.html#SECTION00052100000000000000">4.2.1 kernel.function, module().function</A>
+<LI><A NAME="tex2html54"
+  HREF="Probe_points.html#SECTION00052200000000000000">4.2.2 kernel.statement, module().statement</A>
+</UL>
+<LI><A NAME="tex2html55"
+  HREF="Probe_points.html#SECTION00053000000000000000">4.3 Function return probes</A>
+<LI><A NAME="tex2html56"
+  HREF="Probe_points.html#SECTION00054000000000000000">4.4 DWARF-less probing</A>
+<LI><A NAME="tex2html57"
+  HREF="Probe_points.html#SECTION00055000000000000000">4.5 Userspace probing</A>
+<UL>
+<LI><A NAME="tex2html58"
+  HREF="Probe_points.html#SECTION00055100000000000000">4.5.1 Begin/end variants</A>
+<LI><A NAME="tex2html59"
+  HREF="Probe_points.html#SECTION00055200000000000000">4.5.2 Syscall variants</A>
+<LI><A NAME="tex2html60"
+  HREF="Probe_points.html#SECTION00055300000000000000">4.5.3 Function/statement variants</A>
+<LI><A NAME="tex2html61"
+  HREF="Probe_points.html#SECTION00055400000000000000">4.5.4 Absolute variant</A>
+<LI><A NAME="tex2html62"
+  HREF="Probe_points.html#SECTION00055500000000000000">4.5.5 Process probe paths</A>
+<LI><A NAME="tex2html63"
+  HREF="Probe_points.html#SECTION00055600000000000000">4.5.6 Target process mode</A>
+<LI><A NAME="tex2html64"
+  HREF="Probe_points.html#SECTION00055700000000000000">4.5.7 Instruction probes</A>
+<LI><A NAME="tex2html65"
+  HREF="Probe_points.html#SECTION00055800000000000000">4.5.8 Static userspace probing</A>
+</UL>
+<LI><A NAME="tex2html66"
+  HREF="Probe_points.html#SECTION00056000000000000000">4.6 Java probes</A>
+<LI><A NAME="tex2html67"
+  HREF="Probe_points.html#SECTION00057000000000000000">4.7 PROCFS probes</A>
+<LI><A NAME="tex2html68"
+  HREF="Probe_points.html#SECTION00058000000000000000">4.8 Marker probes</A>
+<LI><A NAME="tex2html69"
+  HREF="Probe_points.html#SECTION00059000000000000000">4.9 Tracepoints</A>
+<LI><A NAME="tex2html70"
+  HREF="Probe_points.html#SECTION000510000000000000000">4.10 Syscall probes</A>
+<LI><A NAME="tex2html71"
+  HREF="Probe_points.html#SECTION000511000000000000000">4.11 Timer probes</A>
+<LI><A NAME="tex2html72"
+  HREF="Probe_points.html#SECTION000512000000000000000">4.12 Special probe points</A>
+<UL>
+<LI><A NAME="tex2html73"
+  HREF="Probe_points.html#SECTION000512100000000000000">4.12.1 begin</A>
+<LI><A NAME="tex2html74"
+  HREF="Probe_points.html#SECTION000512200000000000000">4.12.2 end</A>
+<LI><A NAME="tex2html75"
+  HREF="Probe_points.html#SECTION000512300000000000000">4.12.3 error</A>
+<LI><A NAME="tex2html76"
+  HREF="Probe_points.html#SECTION000512400000000000000">4.12.4 begin, end, and error probe sequence</A>
+<LI><A NAME="tex2html77"
+  HREF="Probe_points.html#SECTION000512500000000000000">4.12.5 never</A>
+</UL>
+</UL>
+<BR>
+<LI><A NAME="tex2html78"
+  HREF="Language_elements.html">5 Language elements</A>
+<UL>
+<LI><A NAME="tex2html79"
+  HREF="Language_elements.html#SECTION00061000000000000000">5.1 Identifiers</A>
+<LI><A NAME="tex2html80"
+  HREF="Language_elements.html#SECTION00062000000000000000">5.2 Data types</A>
+<UL>
+<LI><A NAME="tex2html81"
+  HREF="Language_elements.html#SECTION00062100000000000000">5.2.1 Literals</A>
+<LI><A NAME="tex2html82"
+  HREF="Language_elements.html#SECTION00062200000000000000">5.2.2 Integers</A>
+<LI><A NAME="tex2html83"
+  HREF="Language_elements.html#SECTION00062300000000000000">5.2.3 Strings</A>
+<LI><A NAME="tex2html84"
+  HREF="Language_elements.html#SECTION00062400000000000000">5.2.4 Associative arrays</A>
+<LI><A NAME="tex2html85"
+  HREF="Language_elements.html#SECTION00062500000000000000">5.2.5 Statistics</A>
+</UL>
+<LI><A NAME="tex2html86"
+  HREF="Language_elements.html#SECTION00063000000000000000">5.3 Semicolons</A>
+<LI><A NAME="tex2html87"
+  HREF="Language_elements.html#SECTION00064000000000000000">5.4 Comments</A>
+<LI><A NAME="tex2html88"
+  HREF="Language_elements.html#SECTION00065000000000000000">5.5 Whitespace</A>
+<LI><A NAME="tex2html89"
+  HREF="Language_elements.html#SECTION00066000000000000000">5.6 Expressions</A>
+<UL>
+<LI><A NAME="tex2html90"
+  HREF="Language_elements.html#SECTION00066100000000000000">5.6.1 Binary numeric operators</A>
+<LI><A NAME="tex2html91"
+  HREF="Language_elements.html#SECTION00066200000000000000">5.6.2 Binary string operators</A>
+<LI><A NAME="tex2html92"
+  HREF="Language_elements.html#SECTION00066300000000000000">5.6.3 Numeric assignment operators</A>
+<LI><A NAME="tex2html93"
+  HREF="Language_elements.html#SECTION00066400000000000000">5.6.4 String assignment operators</A>
+<LI><A NAME="tex2html94"
+  HREF="Language_elements.html#SECTION00066500000000000000">5.6.5 Unary numeric operators</A>
+<LI><A NAME="tex2html95"
+  HREF="Language_elements.html#SECTION00066600000000000000">5.6.6 Numeric &amp; string comparison, regular expression matching operators</A>
+<LI><A NAME="tex2html96"
+  HREF="Language_elements.html#SECTION00066700000000000000">5.6.7 Ternary operator</A>
+<LI><A NAME="tex2html97"
+  HREF="Language_elements.html#SECTION00066800000000000000">5.6.8 Grouping operator</A>
+<LI><A NAME="tex2html98"
+  HREF="Language_elements.html#SECTION00066900000000000000">5.6.9 Function call</A>
+<LI><A NAME="tex2html99"
+  HREF="Language_elements.html#SECTION000661000000000000000">5.6.10 $ptr-&gt;member</A>
+<LI><A NAME="tex2html100"
+  HREF="Language_elements.html#SECTION000661100000000000000">5.6.11 Pointer typecasting</A>
+<LI><A NAME="tex2html101"
+  HREF="Language_elements.html#SECTION000661200000000000000">5.6.12 &lt;value&gt; in &lt;array_name&gt;</A>
+<LI><A NAME="tex2html102"
+  HREF="Language_elements.html#SECTION000661300000000000000">5.6.13 [ &lt;value&gt;, ... ] in &lt;array_name&gt;</A>
+</UL>
+<LI><A NAME="tex2html103"
+  HREF="Language_elements.html#SECTION00067000000000000000">5.7 Literals passed in from the stap command line</A>
+<UL>
+<LI><A NAME="tex2html104"
+  HREF="Language_elements.html#SECTION00067100000000000000">5.7.1 $1 ... $&lt;NN&gt; for literal pasting</A>
+<LI><A NAME="tex2html105"
+  HREF="Language_elements.html#SECTION00067200000000000000">5.7.2 @1 ... @&lt;NN&gt; for strings</A>
+<LI><A NAME="tex2html106"
+  HREF="Language_elements.html#SECTION00067300000000000000">5.7.3 Examples</A>
+</UL>
+<LI><A NAME="tex2html107"
+  HREF="Language_elements.html#SECTION00068000000000000000">5.8 Conditional compilation</A>
+<UL>
+<LI><A NAME="tex2html108"
+  HREF="Language_elements.html#SECTION00068100000000000000">5.8.1 Conditions</A>
+<LI><A NAME="tex2html109"
+  HREF="Language_elements.html#SECTION00068200000000000000">5.8.2 Conditions based on available target variables</A>
+<LI><A NAME="tex2html110"
+  HREF="Language_elements.html#SECTION00068300000000000000">5.8.3 Conditions based on kernel version: kernel_v, kernel_vr</A>
+<LI><A NAME="tex2html111"
+  HREF="Language_elements.html#SECTION00068400000000000000">5.8.4 Conditions based on architecture: arch</A>
+<LI><A NAME="tex2html112"
+  HREF="Language_elements.html#SECTION00068500000000000000">5.8.5 Conditions based on privilege level: systemtap_privilege</A>
+<LI><A NAME="tex2html113"
+  HREF="Language_elements.html#SECTION00068600000000000000">5.8.6 True and False Tokens</A>
+</UL>
+<LI><A NAME="tex2html114"
+  HREF="Language_elements.html#SECTION00069000000000000000">5.9 Preprocessor macros</A>
+<UL>
+<LI><A NAME="tex2html115"
+  HREF="Language_elements.html#SECTION00069100000000000000">5.9.1 Local macros</A>
+<LI><A NAME="tex2html116"
+  HREF="Language_elements.html#SECTION00069200000000000000">5.9.2 Library macros</A>
+</UL>
+</UL>
+<BR>
+<LI><A NAME="tex2html117"
+  HREF="Statement_types.html">6 Statement types</A>
+<UL>
+<LI><A NAME="tex2html118"
+  HREF="Statement_types.html#SECTION00071000000000000000">6.1 break and continue</A>
+<LI><A NAME="tex2html119"
+  HREF="Statement_types.html#SECTION00072000000000000000">6.2 try/catch</A>
+<LI><A NAME="tex2html120"
+  HREF="Statement_types.html#SECTION00073000000000000000">6.3 delete</A>
+<LI><A NAME="tex2html121"
+  HREF="Statement_types.html#SECTION00074000000000000000">6.4 EXP (expression)</A>
+<LI><A NAME="tex2html122"
+  HREF="Statement_types.html#SECTION00075000000000000000">6.5 for</A>
+<LI><A NAME="tex2html123"
+  HREF="Statement_types.html#SECTION00076000000000000000">6.6 foreach</A>
+<LI><A NAME="tex2html124"
+  HREF="Statement_types.html#SECTION00077000000000000000">6.7 if</A>
+<LI><A NAME="tex2html125"
+  HREF="Statement_types.html#SECTION00078000000000000000">6.8 next</A>
+<LI><A NAME="tex2html126"
+  HREF="Statement_types.html#SECTION00079000000000000000">6.9 ; (null statement)</A>
+<LI><A NAME="tex2html127"
+  HREF="Statement_types.html#SECTION000710000000000000000">6.10 return</A>
+<LI><A NAME="tex2html128"
+  HREF="Statement_types.html#SECTION000711000000000000000">6.11 { } (statement block)</A>
+<LI><A NAME="tex2html129"
+  HREF="Statement_types.html#SECTION000712000000000000000">6.12 while</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html130"
+  HREF="Associative_arrays.html">7 Associative arrays</A>
+<UL>
+<LI><A NAME="tex2html131"
+  HREF="Associative_arrays.html#SECTION00081000000000000000">7.1 Examples</A>
+<LI><A NAME="tex2html132"
+  HREF="Associative_arrays.html#SECTION00082000000000000000">7.2 Types of values</A>
+<LI><A NAME="tex2html133"
+  HREF="Associative_arrays.html#SECTION00083000000000000000">7.3 Array capacity</A>
+<LI><A NAME="tex2html134"
+  HREF="Associative_arrays.html#SECTION00084000000000000000">7.4 Array wrapping</A>
+<LI><A NAME="tex2html135"
+  HREF="Associative_arrays.html#SECTION00085000000000000000">7.5 Iteration, foreach</A>
+<LI><A NAME="tex2html136"
+  HREF="Associative_arrays.html#SECTION00086000000000000000">7.6 Deletion</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html137"
+  HREF="Statistics_aggregates.html">8 Statistics (aggregates)</A>
+<UL>
+<LI><A NAME="tex2html138"
+  HREF="Statistics_aggregates.html#SECTION00091000000000000000">8.1 The aggregation (&lt; &lt; &lt;) operator</A>
+<LI><A NAME="tex2html139"
+  HREF="Statistics_aggregates.html#SECTION00092000000000000000">8.2 Extraction functions</A>
+<LI><A NAME="tex2html140"
+  HREF="Statistics_aggregates.html#SECTION00093000000000000000">8.3 Integer extractors</A>
+<UL>
+<LI><A NAME="tex2html141"
+  HREF="Statistics_aggregates.html#SECTION00093100000000000000">8.3.1 @count(s)</A>
+<LI><A NAME="tex2html142"
+  HREF="Statistics_aggregates.html#SECTION00093200000000000000">8.3.2 @sum(s)</A>
+<LI><A NAME="tex2html143"
+  HREF="Statistics_aggregates.html#SECTION00093300000000000000">8.3.3 @min(s)</A>
+<LI><A NAME="tex2html144"
+  HREF="Statistics_aggregates.html#SECTION00093400000000000000">8.3.4 @max(s)</A>
+<LI><A NAME="tex2html145"
+  HREF="Statistics_aggregates.html#SECTION00093500000000000000">8.3.5 @avg(s)</A>
+</UL>
+<LI><A NAME="tex2html146"
+  HREF="Statistics_aggregates.html#SECTION00094000000000000000">8.4 Histogram extractors</A>
+<UL>
+<LI><A NAME="tex2html147"
+  HREF="Statistics_aggregates.html#SECTION00094100000000000000">8.4.1 @hist_linear</A>
+<LI><A NAME="tex2html148"
+  HREF="Statistics_aggregates.html#SECTION00094200000000000000">8.4.2 @hist_log</A>
+</UL>
+<LI><A NAME="tex2html149"
+  HREF="Statistics_aggregates.html#SECTION00095000000000000000">8.5 Deletion</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html150"
+  HREF="Formatted_output.html">9 Formatted output</A>
+<UL>
+<LI><A NAME="tex2html151"
+  HREF="Formatted_output.html#SECTION000101000000000000000">9.1 print</A>
+<LI><A NAME="tex2html152"
+  HREF="Formatted_output.html#SECTION000102000000000000000">9.2 printf</A>
+<LI><A NAME="tex2html153"
+  HREF="Formatted_output.html#SECTION000103000000000000000">9.3 printd</A>
+<LI><A NAME="tex2html154"
+  HREF="Formatted_output.html#SECTION000104000000000000000">9.4 printdln</A>
+<LI><A NAME="tex2html155"
+  HREF="Formatted_output.html#SECTION000105000000000000000">9.5 println</A>
+<LI><A NAME="tex2html156"
+  HREF="Formatted_output.html#SECTION000106000000000000000">9.6 sprint</A>
+<LI><A NAME="tex2html157"
+  HREF="Formatted_output.html#SECTION000107000000000000000">9.7 sprintf</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html158"
+  HREF="Tapset_defined_functions.html">10 Tapset-defined functions</A>
+<LI><A NAME="tex2html159"
+  HREF="Further_Reference.html">11 For Further Reference</A>
+<LI><A NAME="tex2html160"
+  HREF="Index.html">Index</A>
+<LI><A NAME="tex2html161"
+  HREF="About_this_document.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+
+</BODY>
+</HTML>
index b2dee4f86f6737fda8a38318835fe8fef5da25b3..76b19d54bf52341e6c1e0b11f9efadd6d99c8852 100644 (file)
 # Associate internals original text with physical files.
 
 
-$key = q/sub:Probe-aliases/;
-$ref_files{$key} = "$dir".q|Components_SystemTap_script.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/dwarfprobes/;
+$key = q/sec:beginendvariants/;
 $ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:foreach/;
-$ref_files{$key} = "$dir".q|Statement_types.html|; 
+$key = q/sec:insnprobes/;
+$ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sub:Auxiliary-functions/;
 $ref_files{$key} = "$dir".q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:targetprocessmode/;
+$key = q/dwarfprobes/;
 $ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Predefined-Functions/;
-$ref_files{$key} = "$dir".q|Tapset_defined_functions.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:For-Further-Reference/;
-$ref_files{$key} = "$dir".q|Further_Reference.html|; 
+$key = q/sec:targetprocessmode/;
+$ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sec:absolutevariant/;
 $ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:paths/;
-$ref_files{$key} = "$dir".q|Probe_points.html|; 
+$key = q/sec:Associative-Arrays/;
+$ref_files{$key} = "$dir".q|Associative_arrays.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sec:tracepoints/;
 $ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:SystemTap-safety/;
-$ref_files{$key} = "$dir".q|SystemTap_overview.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:Statement-Types/;
-$ref_files{$key} = "$dir".q|Statement_types.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:syscall/;
-$ref_files{$key} = "$dir".q|Probe_points.html|; 
-$noresave{$key} = "$nosave";
-
 $key = q/sec:Language-Elements/;
 $ref_files{$key} = "$dir".q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Array-Wrapping/;
-$ref_files{$key} = "$dir".q|Associative_arrays.html|; 
+$key = q/sub:Ternary-operator/;
+$ref_files{$key} = "$dir".q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sec:function-statement/;
 $ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Optional-probe-points/;
+$key = q/sec:syscallvariants/;
 $ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Literals-passed-in/;
-$ref_files{$key} = "$dir".q|Language_elements.html|; 
+$key = q/sec:Probe-Points/;
+$ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Strings/;
-$ref_files{$key} = "$dir".q|Language_elements.html|; 
+$key = q/sec:Statement-Types/;
+$ref_files{$key} = "$dir".q|Statement_types.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:staticuserspace/;
+$key = q/sec:Types-of-SystemTap/;
+$ref_files{$key} = "$dir".q|Types_SystemTap_scripts.html|; 
+$noresave{$key} = "$nosave";
+
+$key = q/sec:syscall/;
 $ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/sub:Literals-passed-in/;
+$ref_files{$key} = "$dir".q|Language_elements.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/sub:Embedded-C/;
 $ref_files{$key} = "$dir".q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:insnprobes/;
-$ref_files{$key} = "$dir".q|Probe_points.html|; 
+$key = q/sec:For-Further-Reference/;
+$ref_files{$key} = "$dir".q|Further_Reference.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Probe-Points/;
-$ref_files{$key} = "$dir".q|Probe_points.html|; 
+$key = q/sub:Array-Wrapping/;
+$ref_files{$key} = "$dir".q|Associative_arrays.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:syscallvariants/;
-$ref_files{$key} = "$dir".q|Probe_points.html|; 
+$key = q/sub:Data-types/;
+$ref_files{$key} = "$dir".q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Associative-Arrays/;
-$ref_files{$key} = "$dir".q|Associative_arrays.html|; 
+$key = q/sub:Probe-aliases/;
+$ref_files{$key} = "$dir".q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Variables/;
-$ref_files{$key} = "$dir".q|Components_SystemTap_script.html|; 
+$key = q/sub:SystemTap-safety/;
+$ref_files{$key} = "$dir".q|SystemTap_overview.html|; 
+$noresave{$key} = "$nosave";
+
+$key = q/sub:Integers/;
+$ref_files{$key} = "$dir".q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sec:Statistics/;
 $ref_files{$key} = "$dir".q|Statistics_aggregates.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/sec:paths/;
+$ref_files{$key} = "$dir".q|Probe_points.html|; 
+$noresave{$key} = "$nosave";
+
+$key = q/sec:staticuserspace/;
+$ref_files{$key} = "$dir".q|Probe_points.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/sub:Embedded-C-Functions/;
 $ref_files{$key} = "$dir".q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Data-types/;
-$ref_files{$key} = "$dir".q|Language_elements.html|; 
+$key = q/sec:SystemTap-Overview/;
+$ref_files{$key} = "$dir".q|SystemTap_overview.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Integers/;
-$ref_files{$key} = "$dir".q|Language_elements.html|; 
+$key = q/sub:Variables/;
+$ref_files{$key} = "$dir".q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Types-of-SystemTap/;
-$ref_files{$key} = "$dir".q|Types_SystemTap_scripts.html|; 
+$key = q/sub:Optional-probe-points/;
+$ref_files{$key} = "$dir".q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sub:delete/;
 $ref_files{$key} = "$dir".q|Statement_types.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Ternary-operator/;
-$ref_files{$key} = "$dir".q|Language_elements.html|; 
+$key = q/sub:foreach/;
+$ref_files{$key} = "$dir".q|Statement_types.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:SystemTap-Overview/;
-$ref_files{$key} = "$dir".q|SystemTap_overview.html|; 
+$key = q/sub:Strings/;
+$ref_files{$key} = "$dir".q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:beginendvariants/;
-$ref_files{$key} = "$dir".q|Probe_points.html|; 
+$key = q/sec:Predefined-Functions/;
+$ref_files{$key} = "$dir".q|Tapset_defined_functions.html|; 
 $noresave{$key} = "$nosave";
 
 1;
index debf5f37df8f940e94b121edbb27a7e45ca7865f..797c85eee349a4784391a02b2fd8213560f27314 100644 (file)
@@ -2,32 +2,24 @@
 # Associate labels original text with physical files.
 
 
-$key = q/sub:foreach/;
-$external_labels{$key} = "$URL/" . q|Statement_types.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/dwarfprobes/;
+$key = q/sec:absolutevariant/;
 $external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Probe-aliases/;
-$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
+$key = q/sec:Associative-Arrays/;
+$external_labels{$key} = "$URL/" . q|Associative_arrays.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:absolutevariant/;
+$key = q/sec:tracepoints/;
 $external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:paths/;
+$key = q/sec:beginendvariants/;
 $external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:For-Further-Reference/;
-$external_labels{$key} = "$URL/" . q|Further_Reference.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:Predefined-Functions/;
-$external_labels{$key} = "$URL/" . q|Tapset_defined_functions.html|; 
+$key = q/sec:insnprobes/;
+$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sec:targetprocessmode/;
@@ -38,108 +30,116 @@ $key = q/sub:Auxiliary-functions/;
 $external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Literals-passed-in/;
-$external_labels{$key} = "$URL/" . q|Language_elements.html|; 
+$key = q/dwarfprobes/;
+$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Optional-probe-points/;
-$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
+$key = q/sub:Embedded-C/;
+$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Language-Elements/;
+$key = q/sub:Literals-passed-in/;
 $external_labels{$key} = "$URL/" . q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Array-Wrapping/;
-$external_labels{$key} = "$URL/" . q|Associative_arrays.html|; 
+$key = q/sec:syscallvariants/;
+$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sec:function-statement/;
 $external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:syscall/;
-$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
+$key = q/sub:Ternary-operator/;
+$external_labels{$key} = "$URL/" . q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Statement-Types/;
-$external_labels{$key} = "$URL/" . q|Statement_types.html|; 
+$key = q/sec:Language-Elements/;
+$external_labels{$key} = "$URL/" . q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:SystemTap-safety/;
-$external_labels{$key} = "$URL/" . q|SystemTap_overview.html|; 
+$key = q/sec:syscall/;
+$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:tracepoints/;
-$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
+$key = q/sec:Types-of-SystemTap/;
+$external_labels{$key} = "$URL/" . q|Types_SystemTap_scripts.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Embedded-C/;
-$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
+$key = q/sec:Statement-Types/;
+$external_labels{$key} = "$URL/" . q|Statement_types.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:staticuserspace/;
+$key = q/sec:Probe-Points/;
 $external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Strings/;
+$key = q/sub:Integers/;
 $external_labels{$key} = "$URL/" . q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Probe-Points/;
-$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
+$key = q/sec:Statistics/;
+$external_labels{$key} = "$URL/" . q|Statistics_aggregates.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:insnprobes/;
-$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
+$key = q/sub:Array-Wrapping/;
+$external_labels{$key} = "$URL/" . q|Associative_arrays.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:syscallvariants/;
-$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
+$key = q/sec:For-Further-Reference/;
+$external_labels{$key} = "$URL/" . q|Further_Reference.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Embedded-C-Functions/;
-$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
+$key = q/sub:SystemTap-safety/;
+$external_labels{$key} = "$URL/" . q|SystemTap_overview.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Statistics/;
-$external_labels{$key} = "$URL/" . q|Statistics_aggregates.html|; 
+$key = q/sub:Probe-aliases/;
+$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Variables/;
-$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
+$key = q/sub:Data-types/;
+$external_labels{$key} = "$URL/" . q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Associative-Arrays/;
-$external_labels{$key} = "$URL/" . q|Associative_arrays.html|; 
+$key = q/sub:delete/;
+$external_labels{$key} = "$URL/" . q|Statement_types.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:beginendvariants/;
+$key = q/sub:Optional-probe-points/;
 $external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:SystemTap-Overview/;
-$external_labels{$key} = "$URL/" . q|SystemTap_overview.html|; 
+$key = q/sub:foreach/;
+$external_labels{$key} = "$URL/" . q|Statement_types.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Ternary-operator/;
+$key = q/sec:Predefined-Functions/;
+$external_labels{$key} = "$URL/" . q|Tapset_defined_functions.html|; 
+$noresave{$key} = "$nosave";
+
+$key = q/sub:Strings/;
 $external_labels{$key} = "$URL/" . q|Language_elements.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:delete/;
-$external_labels{$key} = "$URL/" . q|Statement_types.html|; 
+$key = q/sec:paths/;
+$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sec:Types-of-SystemTap/;
-$external_labels{$key} = "$URL/" . q|Types_SystemTap_scripts.html|; 
+$key = q/sec:SystemTap-Overview/;
+$external_labels{$key} = "$URL/" . q|SystemTap_overview.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Integers/;
-$external_labels{$key} = "$URL/" . q|Language_elements.html|; 
+$key = q/sub:Variables/;
+$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/sub:Data-types/;
-$external_labels{$key} = "$URL/" . q|Language_elements.html|; 
+$key = q/sec:staticuserspace/;
+$external_labels{$key} = "$URL/" . q|Probe_points.html|; 
+$noresave{$key} = "$nosave";
+
+$key = q/sub:Embedded-C-Functions/;
+$external_labels{$key} = "$URL/" . q|Components_SystemTap_script.html|; 
 $noresave{$key} = "$nosave";
 
 1;
diff --git a/langref/langref.html b/langref/langref.html
new file mode 100644 (file)
index 0000000..d52c203
--- /dev/null
@@ -0,0 +1,433 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 2012 (1.2)
+original version by:  Nikos Drakos, CBLU, University of Leeds
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>SystemTap Language Reference</TITLE>
+<META NAME="description" CONTENT="SystemTap Language Reference">
+<META NAME="keywords" CONTENT="langref">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="langref.css">
+
+<LINK REL="next" HREF="Contents.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html16"
+  HREF="Contents.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png"> 
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
+<A NAME="tex2html12"
+  HREF="Contents.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
+<A NAME="tex2html14"
+  HREF="Index.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
+<BR>
+<B> Next:</B> <A NAME="tex2html17"
+  HREF="Contents.html">Contents</A>
+ &nbsp; <B>  <A NAME="tex2html13"
+  HREF="Contents.html">Contents</A></B> 
+ &nbsp; <B>  <A NAME="tex2html15"
+  HREF="Index.html">Index</A></B> 
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<P>
+
+<P>
+<H1 ALIGN="CENTER">SystemTap Language Reference</H1>
+<DIV>
+
+</DIV>
+This document was derived from other documents contributed to the SystemTap project by employees of Red Hat, IBM and Intel.
+<BR>
+
+<P>
+Copyright &#169; 2007-2013 Red Hat Inc.
+<BR>
+Copyright &#169; 2007-2009 IBM Corp.
+<BR>
+Copyright &#169; 2007 Intel Corporation.
+<BR>
+
+<P>
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+<BR>
+
+<P>
+The GNU Free Documentation License is available from
+<TT><A NAME="tex2html1"
+  HREF="http://www.gnu.org/licenses/fdl.html">http://www.gnu.org/licenses/fdl.html</A></TT> or by writing to
+the Free Software Foundation, Inc., 51 Franklin Street,
+Fifth Floor, Boston, MA 02110-1301, USA.
+
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></A>
+
+<UL>
+<LI><A NAME="tex2html18"
+  HREF="Contents.html">Contents</A>
+<LI><A NAME="tex2html19"
+  HREF="SystemTap_overview.html">1 SystemTap overview</A>
+<UL>
+<LI><A NAME="tex2html20"
+  HREF="SystemTap_overview.html#SECTION00021000000000000000">1.1 About this guide</A>
+<LI><A NAME="tex2html21"
+  HREF="SystemTap_overview.html#SECTION00022000000000000000">1.2 Reasons to use SystemTap</A>
+<LI><A NAME="tex2html22"
+  HREF="SystemTap_overview.html#SECTION00023000000000000000">1.3 Event-action language</A>
+<LI><A NAME="tex2html23"
+  HREF="SystemTap_overview.html#SECTION00024000000000000000">1.4 Sample SystemTap scripts</A>
+<UL>
+<LI><A NAME="tex2html24"
+  HREF="SystemTap_overview.html#SECTION00024100000000000000">1.4.1 Basic SystemTap syntax and control structures</A>
+<LI><A NAME="tex2html25"
+  HREF="SystemTap_overview.html#SECTION00024200000000000000">1.4.2 Primes between 0 and 49</A>
+<LI><A NAME="tex2html26"
+  HREF="SystemTap_overview.html#SECTION00024300000000000000">1.4.3 Recursive functions</A>
+</UL>
+<LI><A NAME="tex2html27"
+  HREF="SystemTap_overview.html#SECTION00025000000000000000">1.5 The stap command</A>
+<LI><A NAME="tex2html28"
+  HREF="SystemTap_overview.html#SECTION00026000000000000000">1.6 Safety and security</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html29"
+  HREF="Types_SystemTap_scripts.html">2 Types of SystemTap scripts</A>
+<UL>
+<LI><A NAME="tex2html30"
+  HREF="Types_SystemTap_scripts.html#SECTION00031000000000000000">2.1 Probe scripts</A>
+<LI><A NAME="tex2html31"
+  HREF="Types_SystemTap_scripts.html#SECTION00032000000000000000">2.2 Tapset scripts</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html32"
+  HREF="Components_SystemTap_script.html">3 Components of a SystemTap script</A>
+<UL>
+<LI><A NAME="tex2html33"
+  HREF="Components_SystemTap_script.html#SECTION00041000000000000000">3.1 Probe definitions</A>
+<LI><A NAME="tex2html34"
+  HREF="Components_SystemTap_script.html#SECTION00042000000000000000">3.2 Probe aliases</A>
+<UL>
+<LI><A NAME="tex2html35"
+  HREF="Components_SystemTap_script.html#SECTION00042100000000000000">3.2.1 Prologue-style aliases (=)</A>
+<LI><A NAME="tex2html36"
+  HREF="Components_SystemTap_script.html#SECTION00042200000000000000">3.2.2 Epilogue-style aliases (+=)</A>
+<LI><A NAME="tex2html37"
+  HREF="Components_SystemTap_script.html#SECTION00042300000000000000">3.2.3 Probe alias usage</A>
+<LI><A NAME="tex2html38"
+  HREF="Components_SystemTap_script.html#SECTION00042400000000000000">3.2.4 Alias suffixes</A>
+<LI><A NAME="tex2html39"
+  HREF="Components_SystemTap_script.html#SECTION00042500000000000000">3.2.5 Alias suffixes and wildcards</A>
+</UL>
+<LI><A NAME="tex2html40"
+  HREF="Components_SystemTap_script.html#SECTION00043000000000000000">3.3 Variables</A>
+<UL>
+<LI><A NAME="tex2html41"
+  HREF="Components_SystemTap_script.html#SECTION00043100000000000000">3.3.1 Unused variables</A>
+</UL>
+<LI><A NAME="tex2html42"
+  HREF="Components_SystemTap_script.html#SECTION00044000000000000000">3.4 Auxiliary functions</A>
+<LI><A NAME="tex2html43"
+  HREF="Components_SystemTap_script.html#SECTION00045000000000000000">3.5 Embedded C</A>
+<LI><A NAME="tex2html44"
+  HREF="Components_SystemTap_script.html#SECTION00046000000000000000">3.6 Embedded C functions</A>
+<LI><A NAME="tex2html45"
+  HREF="Components_SystemTap_script.html#SECTION00047000000000000000">3.7 Embedded C pragma comments</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html46"
+  HREF="Probe_points.html">4 Probe points</A>
+<UL>
+<LI><A NAME="tex2html47"
+  HREF="Probe_points.html#SECTION00051000000000000000">4.1 General syntax</A>
+<UL>
+<LI><A NAME="tex2html48"
+  HREF="Probe_points.html#SECTION00051100000000000000">4.1.1 Prefixes</A>
+<LI><A NAME="tex2html49"
+  HREF="Probe_points.html#SECTION00051200000000000000">4.1.2 Suffixes</A>
+<LI><A NAME="tex2html50"
+  HREF="Probe_points.html#SECTION00051300000000000000">4.1.3 Wildcarded file names, function names</A>
+<LI><A NAME="tex2html51"
+  HREF="Probe_points.html#SECTION00051400000000000000">4.1.4 Optional probe points</A>
+</UL>
+<LI><A NAME="tex2html52"
+  HREF="Probe_points.html#SECTION00052000000000000000">4.2 Built-in probe point types (DWARF probes)</A>
+<UL>
+<LI><A NAME="tex2html53"
+  HREF="Probe_points.html#SECTION00052100000000000000">4.2.1 kernel.function, module().function</A>
+<LI><A NAME="tex2html54"
+  HREF="Probe_points.html#SECTION00052200000000000000">4.2.2 kernel.statement, module().statement</A>
+</UL>
+<LI><A NAME="tex2html55"
+  HREF="Probe_points.html#SECTION00053000000000000000">4.3 Function return probes</A>
+<LI><A NAME="tex2html56"
+  HREF="Probe_points.html#SECTION00054000000000000000">4.4 DWARF-less probing</A>
+<LI><A NAME="tex2html57"
+  HREF="Probe_points.html#SECTION00055000000000000000">4.5 Userspace probing</A>
+<UL>
+<LI><A NAME="tex2html58"
+  HREF="Probe_points.html#SECTION00055100000000000000">4.5.1 Begin/end variants</A>
+<LI><A NAME="tex2html59"
+  HREF="Probe_points.html#SECTION00055200000000000000">4.5.2 Syscall variants</A>
+<LI><A NAME="tex2html60"
+  HREF="Probe_points.html#SECTION00055300000000000000">4.5.3 Function/statement variants</A>
+<LI><A NAME="tex2html61"
+  HREF="Probe_points.html#SECTION00055400000000000000">4.5.4 Absolute variant</A>
+<LI><A NAME="tex2html62"
+  HREF="Probe_points.html#SECTION00055500000000000000">4.5.5 Process probe paths</A>
+<LI><A NAME="tex2html63"
+  HREF="Probe_points.html#SECTION00055600000000000000">4.5.6 Target process mode</A>
+<LI><A NAME="tex2html64"
+  HREF="Probe_points.html#SECTION00055700000000000000">4.5.7 Instruction probes</A>
+<LI><A NAME="tex2html65"
+  HREF="Probe_points.html#SECTION00055800000000000000">4.5.8 Static userspace probing</A>
+</UL>
+<LI><A NAME="tex2html66"
+  HREF="Probe_points.html#SECTION00056000000000000000">4.6 Java probes</A>
+<LI><A NAME="tex2html67"
+  HREF="Probe_points.html#SECTION00057000000000000000">4.7 PROCFS probes</A>
+<LI><A NAME="tex2html68"
+  HREF="Probe_points.html#SECTION00058000000000000000">4.8 Marker probes</A>
+<LI><A NAME="tex2html69"
+  HREF="Probe_points.html#SECTION00059000000000000000">4.9 Tracepoints</A>
+<LI><A NAME="tex2html70"
+  HREF="Probe_points.html#SECTION000510000000000000000">4.10 Syscall probes</A>
+<LI><A NAME="tex2html71"
+  HREF="Probe_points.html#SECTION000511000000000000000">4.11 Timer probes</A>
+<LI><A NAME="tex2html72"
+  HREF="Probe_points.html#SECTION000512000000000000000">4.12 Special probe points</A>
+<UL>
+<LI><A NAME="tex2html73"
+  HREF="Probe_points.html#SECTION000512100000000000000">4.12.1 begin</A>
+<LI><A NAME="tex2html74"
+  HREF="Probe_points.html#SECTION000512200000000000000">4.12.2 end</A>
+<LI><A NAME="tex2html75"
+  HREF="Probe_points.html#SECTION000512300000000000000">4.12.3 error</A>
+<LI><A NAME="tex2html76"
+  HREF="Probe_points.html#SECTION000512400000000000000">4.12.4 begin, end, and error probe sequence</A>
+<LI><A NAME="tex2html77"
+  HREF="Probe_points.html#SECTION000512500000000000000">4.12.5 never</A>
+</UL>
+</UL>
+<BR>
+<LI><A NAME="tex2html78"
+  HREF="Language_elements.html">5 Language elements</A>
+<UL>
+<LI><A NAME="tex2html79"
+  HREF="Language_elements.html#SECTION00061000000000000000">5.1 Identifiers</A>
+<LI><A NAME="tex2html80"
+  HREF="Language_elements.html#SECTION00062000000000000000">5.2 Data types</A>
+<UL>
+<LI><A NAME="tex2html81"
+  HREF="Language_elements.html#SECTION00062100000000000000">5.2.1 Literals</A>
+<LI><A NAME="tex2html82"
+  HREF="Language_elements.html#SECTION00062200000000000000">5.2.2 Integers</A>
+<LI><A NAME="tex2html83"
+  HREF="Language_elements.html#SECTION00062300000000000000">5.2.3 Strings</A>
+<LI><A NAME="tex2html84"
+  HREF="Language_elements.html#SECTION00062400000000000000">5.2.4 Associative arrays</A>
+<LI><A NAME="tex2html85"
+  HREF="Language_elements.html#SECTION00062500000000000000">5.2.5 Statistics</A>
+</UL>
+<LI><A NAME="tex2html86"
+  HREF="Language_elements.html#SECTION00063000000000000000">5.3 Semicolons</A>
+<LI><A NAME="tex2html87"
+  HREF="Language_elements.html#SECTION00064000000000000000">5.4 Comments</A>
+<LI><A NAME="tex2html88"
+  HREF="Language_elements.html#SECTION00065000000000000000">5.5 Whitespace</A>
+<LI><A NAME="tex2html89"
+  HREF="Language_elements.html#SECTION00066000000000000000">5.6 Expressions</A>
+<UL>
+<LI><A NAME="tex2html90"
+  HREF="Language_elements.html#SECTION00066100000000000000">5.6.1 Binary numeric operators</A>
+<LI><A NAME="tex2html91"
+  HREF="Language_elements.html#SECTION00066200000000000000">5.6.2 Binary string operators</A>
+<LI><A NAME="tex2html92"
+  HREF="Language_elements.html#SECTION00066300000000000000">5.6.3 Numeric assignment operators</A>
+<LI><A NAME="tex2html93"
+  HREF="Language_elements.html#SECTION00066400000000000000">5.6.4 String assignment operators</A>
+<LI><A NAME="tex2html94"
+  HREF="Language_elements.html#SECTION00066500000000000000">5.6.5 Unary numeric operators</A>
+<LI><A NAME="tex2html95"
+  HREF="Language_elements.html#SECTION00066600000000000000">5.6.6 Numeric &amp; string comparison, regular expression matching operators</A>
+<LI><A NAME="tex2html96"
+  HREF="Language_elements.html#SECTION00066700000000000000">5.6.7 Ternary operator</A>
+<LI><A NAME="tex2html97"
+  HREF="Language_elements.html#SECTION00066800000000000000">5.6.8 Grouping operator</A>
+<LI><A NAME="tex2html98"
+  HREF="Language_elements.html#SECTION00066900000000000000">5.6.9 Function call</A>
+<LI><A NAME="tex2html99"
+  HREF="Language_elements.html#SECTION000661000000000000000">5.6.10 $ptr-&gt;member</A>
+<LI><A NAME="tex2html100"
+  HREF="Language_elements.html#SECTION000661100000000000000">5.6.11 Pointer typecasting</A>
+<LI><A NAME="tex2html101"
+  HREF="Language_elements.html#SECTION000661200000000000000">5.6.12 &lt;value&gt; in &lt;array_name&gt;</A>
+<LI><A NAME="tex2html102"
+  HREF="Language_elements.html#SECTION000661300000000000000">5.6.13 [ &lt;value&gt;, ... ] in &lt;array_name&gt;</A>
+</UL>
+<LI><A NAME="tex2html103"
+  HREF="Language_elements.html#SECTION00067000000000000000">5.7 Literals passed in from the stap command line</A>
+<UL>
+<LI><A NAME="tex2html104"
+  HREF="Language_elements.html#SECTION00067100000000000000">5.7.1 $1 ... $&lt;NN&gt; for literal pasting</A>
+<LI><A NAME="tex2html105"
+  HREF="Language_elements.html#SECTION00067200000000000000">5.7.2 @1 ... @&lt;NN&gt; for strings</A>
+<LI><A NAME="tex2html106"
+  HREF="Language_elements.html#SECTION00067300000000000000">5.7.3 Examples</A>
+</UL>
+<LI><A NAME="tex2html107"
+  HREF="Language_elements.html#SECTION00068000000000000000">5.8 Conditional compilation</A>
+<UL>
+<LI><A NAME="tex2html108"
+  HREF="Language_elements.html#SECTION00068100000000000000">5.8.1 Conditions</A>
+<LI><A NAME="tex2html109"
+  HREF="Language_elements.html#SECTION00068200000000000000">5.8.2 Conditions based on available target variables</A>
+<LI><A NAME="tex2html110"
+  HREF="Language_elements.html#SECTION00068300000000000000">5.8.3 Conditions based on kernel version: kernel_v, kernel_vr</A>
+<LI><A NAME="tex2html111"
+  HREF="Language_elements.html#SECTION00068400000000000000">5.8.4 Conditions based on architecture: arch</A>
+<LI><A NAME="tex2html112"
+  HREF="Language_elements.html#SECTION00068500000000000000">5.8.5 Conditions based on privilege level: systemtap_privilege</A>
+<LI><A NAME="tex2html113"
+  HREF="Language_elements.html#SECTION00068600000000000000">5.8.6 True and False Tokens</A>
+</UL>
+<LI><A NAME="tex2html114"
+  HREF="Language_elements.html#SECTION00069000000000000000">5.9 Preprocessor macros</A>
+<UL>
+<LI><A NAME="tex2html115"
+  HREF="Language_elements.html#SECTION00069100000000000000">5.9.1 Local macros</A>
+<LI><A NAME="tex2html116"
+  HREF="Language_elements.html#SECTION00069200000000000000">5.9.2 Library macros</A>
+</UL>
+</UL>
+<BR>
+<LI><A NAME="tex2html117"
+  HREF="Statement_types.html">6 Statement types</A>
+<UL>
+<LI><A NAME="tex2html118"
+  HREF="Statement_types.html#SECTION00071000000000000000">6.1 break and continue</A>
+<LI><A NAME="tex2html119"
+  HREF="Statement_types.html#SECTION00072000000000000000">6.2 try/catch</A>
+<LI><A NAME="tex2html120"
+  HREF="Statement_types.html#SECTION00073000000000000000">6.3 delete</A>
+<LI><A NAME="tex2html121"
+  HREF="Statement_types.html#SECTION00074000000000000000">6.4 EXP (expression)</A>
+<LI><A NAME="tex2html122"
+  HREF="Statement_types.html#SECTION00075000000000000000">6.5 for</A>
+<LI><A NAME="tex2html123"
+  HREF="Statement_types.html#SECTION00076000000000000000">6.6 foreach</A>
+<LI><A NAME="tex2html124"
+  HREF="Statement_types.html#SECTION00077000000000000000">6.7 if</A>
+<LI><A NAME="tex2html125"
+  HREF="Statement_types.html#SECTION00078000000000000000">6.8 next</A>
+<LI><A NAME="tex2html126"
+  HREF="Statement_types.html#SECTION00079000000000000000">6.9 ; (null statement)</A>
+<LI><A NAME="tex2html127"
+  HREF="Statement_types.html#SECTION000710000000000000000">6.10 return</A>
+<LI><A NAME="tex2html128"
+  HREF="Statement_types.html#SECTION000711000000000000000">6.11 { } (statement block)</A>
+<LI><A NAME="tex2html129"
+  HREF="Statement_types.html#SECTION000712000000000000000">6.12 while</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html130"
+  HREF="Associative_arrays.html">7 Associative arrays</A>
+<UL>
+<LI><A NAME="tex2html131"
+  HREF="Associative_arrays.html#SECTION00081000000000000000">7.1 Examples</A>
+<LI><A NAME="tex2html132"
+  HREF="Associative_arrays.html#SECTION00082000000000000000">7.2 Types of values</A>
+<LI><A NAME="tex2html133"
+  HREF="Associative_arrays.html#SECTION00083000000000000000">7.3 Array capacity</A>
+<LI><A NAME="tex2html134"
+  HREF="Associative_arrays.html#SECTION00084000000000000000">7.4 Array wrapping</A>
+<LI><A NAME="tex2html135"
+  HREF="Associative_arrays.html#SECTION00085000000000000000">7.5 Iteration, foreach</A>
+<LI><A NAME="tex2html136"
+  HREF="Associative_arrays.html#SECTION00086000000000000000">7.6 Deletion</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html137"
+  HREF="Statistics_aggregates.html">8 Statistics (aggregates)</A>
+<UL>
+<LI><A NAME="tex2html138"
+  HREF="Statistics_aggregates.html#SECTION00091000000000000000">8.1 The aggregation (&lt; &lt; &lt;) operator</A>
+<LI><A NAME="tex2html139"
+  HREF="Statistics_aggregates.html#SECTION00092000000000000000">8.2 Extraction functions</A>
+<LI><A NAME="tex2html140"
+  HREF="Statistics_aggregates.html#SECTION00093000000000000000">8.3 Integer extractors</A>
+<UL>
+<LI><A NAME="tex2html141"
+  HREF="Statistics_aggregates.html#SECTION00093100000000000000">8.3.1 @count(s)</A>
+<LI><A NAME="tex2html142"
+  HREF="Statistics_aggregates.html#SECTION00093200000000000000">8.3.2 @sum(s)</A>
+<LI><A NAME="tex2html143"
+  HREF="Statistics_aggregates.html#SECTION00093300000000000000">8.3.3 @min(s)</A>
+<LI><A NAME="tex2html144"
+  HREF="Statistics_aggregates.html#SECTION00093400000000000000">8.3.4 @max(s)</A>
+<LI><A NAME="tex2html145"
+  HREF="Statistics_aggregates.html#SECTION00093500000000000000">8.3.5 @avg(s)</A>
+</UL>
+<LI><A NAME="tex2html146"
+  HREF="Statistics_aggregates.html#SECTION00094000000000000000">8.4 Histogram extractors</A>
+<UL>
+<LI><A NAME="tex2html147"
+  HREF="Statistics_aggregates.html#SECTION00094100000000000000">8.4.1 @hist_linear</A>
+<LI><A NAME="tex2html148"
+  HREF="Statistics_aggregates.html#SECTION00094200000000000000">8.4.2 @hist_log</A>
+</UL>
+<LI><A NAME="tex2html149"
+  HREF="Statistics_aggregates.html#SECTION00095000000000000000">8.5 Deletion</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html150"
+  HREF="Formatted_output.html">9 Formatted output</A>
+<UL>
+<LI><A NAME="tex2html151"
+  HREF="Formatted_output.html#SECTION000101000000000000000">9.1 print</A>
+<LI><A NAME="tex2html152"
+  HREF="Formatted_output.html#SECTION000102000000000000000">9.2 printf</A>
+<LI><A NAME="tex2html153"
+  HREF="Formatted_output.html#SECTION000103000000000000000">9.3 printd</A>
+<LI><A NAME="tex2html154"
+  HREF="Formatted_output.html#SECTION000104000000000000000">9.4 printdln</A>
+<LI><A NAME="tex2html155"
+  HREF="Formatted_output.html#SECTION000105000000000000000">9.5 println</A>
+<LI><A NAME="tex2html156"
+  HREF="Formatted_output.html#SECTION000106000000000000000">9.6 sprint</A>
+<LI><A NAME="tex2html157"
+  HREF="Formatted_output.html#SECTION000107000000000000000">9.7 sprintf</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html158"
+  HREF="Tapset_defined_functions.html">10 Tapset-defined functions</A>
+<LI><A NAME="tex2html159"
+  HREF="Further_Reference.html">11 For Further Reference</A>
+<LI><A NAME="tex2html160"
+  HREF="Index.html">Index</A>
+<LI><A NAME="tex2html161"
+  HREF="About_this_document.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+
+</BODY>
+</HTML>
This page took 0.175977 seconds and 5 git commands to generate.