+++ /dev/null
-<!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>
- <B> <A NAME="tex2html555"
- HREF="Contents.html">Contents</A></B>
- <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 © 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 © 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/stapdocsjJY/htdocs/langref/</TT>
-<P>
-The translation was initiated by mcermak on 2014-05-16
-<BR><HR>
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html450"
- HREF="Contents.html">Contents</A></B>
- <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 <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[<size>]
-</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%[<size>], 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>
- <B> <A NAME="tex2html450"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html452"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html300"
- HREF="Contents.html">Contents</A></B>
- <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 <alias> = <probepoint> { <prologue_stmts> }
-probe <alias> += <probepoint> { <epilogue_stmts> }
-</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 "<TT><B>+=</B></TT>"
-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[=<value>], var2[=<value>]
-</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 <name>[:<type>] ( <arg1>[:<type>], ... ) { <stmts> }
-</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 <A HREF="#sub:Variables"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> and Section <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 <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 <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 <linux/in.h>
-#include <linux/ip.h>
-%} /* <-- 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 ();
-%} /* <-- function body */
-
-/* Determines whether an IP packet is TCP, based on the iphdr: */
-function is_tcp_packet:long(iphdr) {
- protocol = @cast(iphdr, "iphdr")->protocol
- return (protocol == %{ IPPROTO_TCP %}) /* <-- 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 <name>:<type> ( <arg1>:<type>, ... ) %{ <C_stmts> %}
-</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->dev->name</TT> in
-embedded C, use the following code.
-
-<P>
-
-<DL COMPACT>
-<DT>
-<DD><PRE>
-struct net_device *dev;
-char *name;
-dev = kread(&(skb->dev));
-name = kread(&(dev->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->foo</code> and <code>THIS->__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>
- <B> <A NAME="tex2html300"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html302"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <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 (< < <) 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>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html496"
- HREF="Contents.html">Contents</A></B>
- <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 < 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&
-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>
- <B> <A NAME="tex2html496"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html498"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html531"
- HREF="Contents.html">Contents</A></B>
- <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>
+++ /dev/null
-<!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>
- <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>< < <</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>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html372"
- HREF="Contents.html">Contents</A></B>
- <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 & 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->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 <value> in <array_name></A>
-<LI><A NAME="tex2html400"
- HREF="Language_elements.html#SECTION000661300000000000000">5.6.13 [ <value>, ... ] in <array_name></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 ... $<NN> for literal pasting</A>
-<LI><A NAME="tex2html403"
- HREF="Language_elements.html#SECTION00067200000000000000">5.7.2 @1 ... @<NN> 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"
- /* --> becomes "foobar" */
-
-str2 = "a good way to do a multi-line\n"
- "string literal"
- /* --> becomes "a good way to do a multi-line\nstring literal" */
-
-str3 = "also a good way to " @1 " splice command line args"
- /* --> 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 <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 <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 <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>* / % + - >> << & ^
-| && ||</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>= *= /= %= += -= >>= <<=
-&= ^= |=</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 & string comparison, regular expression matching operators
-</H3>
-<TT>< > <= >= == !=</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->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"])->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")->parent->tgid
-</PRE>
-</DD>
-</DL>
-<P>
-The translator can create its own module with type information from a
-header surrounded by angle brackets (<TT>< ></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", "<sys/time.h>")->tv_sec
-@cast(task, "task_struct", "kernel<linux/sched.h>")->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->type == 1) {
- value = @cast($var->data, "type1")->bar
- } else {
- value = @cast($var->data, "type2")->baz
- }
- print(value)
-}
-</PRE>
-</DD>
-</DL>
-<P>
-
-<H3><A NAME="SECTION000661200000000000000"></A>
-<A NAME="818"></A>
-<BR>
-5.6.12 <value> in <array_name>
-</H3>
-This expression evaluates to true if the array contains an element with the
-specified index.
-
-<P>
-
-<H3><A NAME="SECTION000661300000000000000">
-5.6.13 [ <value>, ... ] in <array_name></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 <A HREF="#sub:Integers"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>.
-For information about strings, see Section <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 ... $<NN> for literal pasting
-</H3>
-Use <TT>$1 ... $<NN></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 ... @<NN> for strings</A>
-</H3>
-
-<P>
-Use <TT>@1 ... @<NN></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 "mystring" 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 <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>
-%( <condition> %? <code> [ %: <code> ] %)
-</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 ``<'', ``<='', ``=='', ``!='', ``>'',
-or ``>='',
-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".
-
-<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 <= "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 <= "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>
- <B> <A NAME="tex2html372"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html374"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html327"
- HREF="Contents.html">Contents</A></B>
- <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 "[]", 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->field</TT> or <TT>@var("var@file.c")->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>&$var</TT> or <TT>&@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>&var->field</TT>,
-<TT>&@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 <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"> </TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>handle</TT></TD>
-<TD ALIGN="RIGHT">the application handle</TD>
-<TD ALIGN="CENTER"> </TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>LABEL</TT></TD>
-<TD ALIGN="RIGHT">corresponds to the <TT>.mark</TT> argument</TD>
-<TD ALIGN="CENTER"> </TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>arg1</TT></TD>
-<TD ALIGN="RIGHT">the argument</TD>
-<TD ALIGN="CENTER"> </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 <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>
- <B> <A NAME="tex2html327"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html329"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html424"
- HREF="Contents.html">Contents</A></B>
- <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 <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 ("") 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>
- <B> <A NAME="tex2html424"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html426"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html470"
- HREF="Contents.html">Contents</A></B>
- <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 (< < <) 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 <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 (< < <) operator</A>
-</H2>
-<A NAME="1358"></A>
-The aggregation operator is ``< < <'',
-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 <<< delta_timestamp
-writes[execname()] <<< 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=< num> ,
-where < num> specifies how many
-empty buckets at the top and bottom of the range to print.
-The default is 2. A < num> of 0
-removes all empty buckets. A negative < num>
-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 <<< 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 <<< 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>
- <B> <A NAME="tex2html470"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html472"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html261"
- HREF="Contents.html">Contents</A></B>
- <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 <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 "breakpoint command lists"
-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 < 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 < 2) return 0
- for (i = 2; i < x; i++) {
- if (x % i == 0) return 0
- if (i * i > x) break
- }
- return 1
-}
-
-probe begin {
- for (i = 0; i < 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 < 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 <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 <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>
- <B> <A NAME="tex2html261"
- HREF="Contents.html">Contents</A></B>
- <B> <A NAME="tex2html263"
- HREF="Index.html">Index</A></B>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html517"
- HREF="Contents.html">Contents</A></B>
- <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>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html284"
- HREF="Contents.html">Contents</A></B>
- <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>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html13"
- HREF="Contents.html">Contents</A></B>
- <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 © 2007-2013 Red Hat Inc.
-<BR>
-Copyright © 2007-2009 IBM Corp.
-<BR>
-Copyright © 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 & 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->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 <value> in <array_name></A>
-<LI><A NAME="tex2html102"
- HREF="Language_elements.html#SECTION000661300000000000000">5.6.13 [ <value>, ... ] in <array_name></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 ... $<NN> for literal pasting</A>
-<LI><A NAME="tex2html105"
- HREF="Language_elements.html#SECTION00067200000000000000">5.7.2 @1 ... @<NN> 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 (< < <) 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>
+++ /dev/null
-<!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>
- <B> <A NAME="tex2html13"
- HREF="Contents.html">Contents</A></B>
- <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 © 2007-2013 Red Hat Inc.
-<BR>
-Copyright © 2007-2009 IBM Corp.
-<BR>
-Copyright © 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 & 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->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 <value> in <array_name></A>
-<LI><A NAME="tex2html102"
- HREF="Language_elements.html#SECTION000661300000000000000">5.6.13 [ <value>, ... ] in <array_name></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 ... $<NN> for literal pasting</A>
-<LI><A NAME="tex2html105"
- HREF="Language_elements.html#SECTION00067200000000000000">5.7.2 @1 ... @<NN> 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 (< < <) 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>