summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/ChangeLog40
-rw-r--r--doc/Makefile.am1
-rw-r--r--doc/Makefile.in244
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml50
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Arrays.xml26
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Errors.xml12
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml21
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Scripts.xml1059
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml2
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml19
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml11
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml37
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml13
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml2
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml17
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml2
-rw-r--r--doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp6
-rwxr-xr-xdoc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp36
-rw-r--r--doc/SystemTap_Tapset_Reference/Makefile.am44
-rw-r--r--doc/SystemTap_Tapset_Reference/Makefile.in134
-rw-r--r--doc/SystemTap_Tapset_Reference/tapsets.tmpl15
21 files changed, 1046 insertions, 745 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 9f992132..b3fd1d78 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,43 @@
+2009-01-21 William Cohen <wcohen@redhat.com>
+
+ * S_T_R/tapsets.tmpl: Use context-symbols.stp and context-unwind.stp.
+
+2009-01-21 William Cohen <wcohen@redhat.com>
+
+ * S_T_R/tapsets.tmpl: Update copyright date and correct paragraph.
+
+2009-01-12 William Cohen <wcohen@redhat.com>
+
+ * S_T_R/tapsets.tmpl: Correct author's name.
+
+2009-01-07 William Cohen <wcohen@redhat.com>
+
+ * S_T_R/Makefile.am: Use BUILD_REFDOCS.
+ * S_T_R/Makefile.in: Regenerated.
+
+2009-01-06 Frank Ch. Eigler <fche@elastic.org>
+
+ * S_T_R/Makefile.am: Regenerate docs only as necessary, via
+ stamp-* files for html/man, and cmp for tapsets.xml.
+ * S_T_R/Makefile.in: Regenerated.
+
+2008-12-30 Dave Brolley <brolley@redhat.com>
+
+ PR9692
+ * Makefile.in: Regenerated.
+ * SystemTap_Tapset_Reference/Makefile.in: Regenerated.
+
+2008-12-24 Dave Brolley <brolley@redhat.com>
+
+ * Makefile.in: Regenerated.
+ * SystemTap_Tapset_Reference/Makefile.in: Regenerated.
+
+2008-12-21 Will Cohen <wcohen@redhat.com>
+
+ * Makefile.am: Add generations of tapset reference manual material.
+ * SystemTap_Tapset_Reference/Makefile.am: Install tapset reference man.
+ * Makfile.am, SystemTap_Tapset_Reference/Makefile.in: Regenerated.
+
2008-11-26 Will Cohen <wcohen@redhat.com>
* SystemTap_Tapset_Reference/tapsets.tmpl: Add scsi.
diff --git a/doc/Makefile.am b/doc/Makefile.am
index fb228897..55291f7f 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -3,6 +3,7 @@
PDF_FILES = tutorial.pdf langref.pdf
DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap
+SUBDIRS = SystemTap_Tapset_Reference
if BUILD_DOCS
all-local: $(PDF_FILES)
diff --git a/doc/Makefile.in b/doc/Makefile.in
index c003c742..776381d8 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -42,6 +42,18 @@ CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -90,6 +102,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PIELDFLAGS = @PIELDFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
PROCFLAGS = @PROCFLAGS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
@@ -121,6 +134,7 @@ have_dvips = @have_dvips@
have_latex = @have_latex@
have_latex2html = @have_latex2html@
have_ps2pdf = @have_ps2pdf@
+have_xmlto = @have_xmlto@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
@@ -132,6 +146,10 @@ localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
+nspr_CFLAGS = @nspr_CFLAGS@
+nspr_LIBS = @nspr_LIBS@
+nss_CFLAGS = @nss_CFLAGS@
+nss_LIBS = @nss_LIBS@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -150,8 +168,9 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
PDF_FILES = tutorial.pdf langref.pdf
DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap
+SUBDIRS = SystemTap_Tapset_Reference
SUFFIXES = ps pdf dvi ps tex
-all: all-am
+all: all-recursive
.SUFFIXES:
.SUFFIXES: ps pdf dvi ps tex .dvi .pdf .ps .tex
@@ -184,12 +203,137 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
tags: TAGS
-TAGS:
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
ctags: CTAGS
-CTAGS:
-
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -217,20 +361,38 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
check-am: all-am
-check: check-am
+check: check-recursive
@BUILD_DOCS_FALSE@all-local:
all-am: Makefile all-local
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-installcheck: installcheck-am
+installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
@@ -249,21 +411,21 @@ maintainer-clean-generic:
@BUILD_DOCS_FALSE@uninstall-local:
@BUILD_DOCS_FALSE@clean-local:
@BUILD_DOCS_FALSE@install-data-hook:
-clean: clean-am
+clean: clean-recursive
clean-am: clean-generic clean-local mostlyclean-am
-distclean: distclean-am
+distclean: distclean-recursive
-rm -f Makefile
-distclean-am: clean-am distclean-generic
+distclean-am: clean-am distclean-generic distclean-tags
-dvi: dvi-am
+dvi: dvi-recursive
dvi-am:
-html: html-am
+html: html-recursive
-info: info-am
+info: info-recursive
info-am:
@@ -271,52 +433,56 @@ install-data-am:
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-am
+install-dvi: install-dvi-recursive
install-exec-am:
-install-html: install-html-am
+install-html: install-html-recursive
-install-info: install-info-am
+install-info: install-info-recursive
install-man:
-install-pdf: install-pdf-am
+install-pdf: install-pdf-recursive
-install-ps: install-ps-am
+install-ps: install-ps-recursive
installcheck-am:
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
-pdf: pdf-am
+pdf: pdf-recursive
pdf-am:
-ps: ps-am
+ps: ps-recursive
ps-am:
uninstall-am: uninstall-local
-.MAKE: install-am install-data-am install-strip
-
-.PHONY: all all-am all-local check check-am clean clean-generic \
- clean-local distclean distclean-generic distdir dvi dvi-am \
- html html-am info info-am install install-am install-data \
- install-data-am install-data-hook install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-data-am install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am all-local check check-am clean clean-generic \
+ clean-local ctags ctags-recursive distclean distclean-generic \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-data-hook install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am uninstall uninstall-am uninstall-local
+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-local
@BUILD_DOCS_TRUE@all-local: $(PDF_FILES)
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml b/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml
index 789bf607..00a8673c 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml
@@ -505,7 +505,7 @@ probe timer.s(3)
}
</screen>
-<para>This <command>foreach</command> statement instructs the script to process the elements in the array <command>reads</command> in descending order (of associated value). The <command>limit 10</command> option instructs the script to only process the first ten elements in the array (i.e. the first 10, starting with the highest value).</para>
+<para>This <command>foreach</command> statement instructs the script to process the elements in the array <command>reads</command> in descending order (of associated value). The <command>limit 10</command> option instructs the <command>foreach</command> to only process the first ten iterations (i.e. print the first 10, starting with the highest value).</para>
</section>
<section id="arrayops-deleting">
@@ -665,7 +665,7 @@ probe vfs.read
probe timer.s(3)
{
printf("=======\n")
- foreach (count in reads+)
+ foreach (count in reads-)
printf("%s : %d \n", count, reads[count])
delete reads
}
@@ -673,7 +673,7 @@ probe timer.s(3)
probe end
{
printf("TOTALS\n")
- foreach (total in totalreads+)
+ foreach (total in totalreads-)
printf("%s : %d \n", total, totalreads[total])
}
</screen>
@@ -788,7 +788,7 @@ probe timer.s(3)
</formalpara>
<screen>
-if([<replaceable>index_expression</replaceable>] in <replaceable>array_name</replaceable>)
+if([<replaceable>index_expression</replaceable>] in <replaceable>array_name</replaceable>) <replaceable>statement</replaceable>
</screen>
<para>To illustrate this, consider the following example:</para>
@@ -962,23 +962,23 @@ probe vfs.read
<indexterm>
<primary>array operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>count (integer extractor)</tertiary>
+<tertiary>@count (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>count (integer extractor)</tertiary>
+<tertiary>@count (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>computing for statistical aggregates</primary>
<secondary>array operations</secondary>
-<tertiary>count (integer extractor)</tertiary>
+<tertiary>@count (integer extractor)</tertiary>
</indexterm>
<indexterm>
-<primary>count (integer extractor)</primary>
+ <primary>@count (integer extractor)</primary>
<secondary>computing for statistical aggregates</secondary>
<tertiary>array operations</tertiary>
</indexterm>
@@ -997,23 +997,23 @@ probe vfs.read
<indexterm>
<primary>array operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>sum (integer extractor)</tertiary>
+<tertiary>@sum (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>sum (integer extractor)</tertiary>
+<tertiary>@sum (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>computing for statistical aggregates</primary>
<secondary>array operations</secondary>
-<tertiary>sum (integer extractor)</tertiary>
+<tertiary>@sum (integer extractor)</tertiary>
</indexterm>
<indexterm>
-<primary>sum (integer extractor)</primary>
+ <primary>@sum (integer extractor)</primary>
<secondary>computing for statistical aggregates</secondary>
<tertiary>array operations</tertiary>
</indexterm>
@@ -1033,23 +1033,23 @@ probe vfs.read
<indexterm>
<primary>array operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>min (integer extractor)</tertiary>
+<tertiary>@min (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>min (integer extractor)</tertiary>
+<tertiary>@min (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>computing for statistical aggregates</primary>
<secondary>array operations</secondary>
-<tertiary>min (integer extractor)</tertiary>
+<tertiary>@min (integer extractor)</tertiary>
</indexterm>
<indexterm>
-<primary>min (integer extractor)</primary>
+ <primary>@min (integer extractor)</primary>
<secondary>computing for statistical aggregates</secondary>
<tertiary>array operations</tertiary>
</indexterm>
@@ -1069,23 +1069,23 @@ probe vfs.read
<indexterm>
<primary>array operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>max (integer extractor)</tertiary>
+<tertiary>@max (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>max (integer extractor)</tertiary>
+<tertiary>@max (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>computing for statistical aggregates</primary>
<secondary>array operations</secondary>
-<tertiary>max (integer extractor)</tertiary>
+<tertiary>@max (integer extractor)</tertiary>
</indexterm>
<indexterm>
-<primary>max (integer extractor)</primary>
+ <primary>@max (integer extractor)</primary>
<secondary>computing for statistical aggregates</secondary>
<tertiary>array operations</tertiary>
</indexterm>
@@ -1105,23 +1105,23 @@ probe vfs.read
<indexterm>
<primary>array operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>avg (integer extractor)</tertiary>
+<tertiary>@avg (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>operations</primary>
<secondary>computing for statistical aggregates</secondary>
-<tertiary>avg (integer extractor)</tertiary>
+<tertiary>@avg (integer extractor)</tertiary>
</indexterm>
<indexterm>
<primary>computing for statistical aggregates</primary>
<secondary>array operations</secondary>
-<tertiary>avg (integer extractor)</tertiary>
+<tertiary>@avg (integer extractor)</tertiary>
</indexterm>
<indexterm>
-<primary>avg (integer extractor)</primary>
+ <primary>@avg (integer extractor)</primary>
<secondary>computing for statistical aggregates</secondary>
<tertiary>array operations</tertiary>
</indexterm>
@@ -1163,7 +1163,7 @@ probe vfs.read
}
probe timer.s(3)
{
- foreach([var1,var2] in reads)
+ foreach([var1,var2] in reads)
printf("%s (%d) : %d \n", var1, var2, @count(reads[var1,var2]))
}
</programlisting>
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml b/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml
index 63c3df04..3d3dec01 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml
@@ -6,7 +6,7 @@
<title>Associative Arrays</title>
<indexterm>
<primary>arrays</primary>
-<secondary>introduction</secondary>
+<seealso>associative arrays</seealso>
</indexterm>
<indexterm>
@@ -20,11 +20,13 @@
<!-- next 2 indexterms for key pairs -->
+<!--
<indexterm>
<primary>arrays</primary>
<secondary>introduction</secondary>
<tertiary>key pairs</tertiary>
</indexterm>
+-->
<indexterm>
<primary>associative arrays</primary>
@@ -38,14 +40,14 @@
<tertiary>arrays</tertiary>
</indexterm>
-<!-- next 2 indexterms for unique keys -->
+<!-- next 2 indexterms for unique keys
<indexterm>
<primary>arrays</primary>
<secondary>introduction</secondary>
<tertiary>unique keys</tertiary>
</indexterm>
-
+-->
<indexterm>
<primary>associative arrays</primary>
<secondary>introduction</secondary>
@@ -58,14 +60,14 @@
<tertiary>arrays</tertiary>
</indexterm>
-<!-- next 2 indexterms for associated values -->
+<!-- next 2 indexterms for associated values
<indexterm>
<primary>arrays</primary>
<secondary>introduction</secondary>
<tertiary>associated values</tertiary>
</indexterm>
-
+-->
<indexterm>
<primary>associative arrays</primary>
<secondary>introduction</secondary>
@@ -78,14 +80,14 @@
<tertiary>arrays</tertiary>
</indexterm>
-<!-- next 2 indexterms for index expression -->
+<!-- next 2 indexterms for index expression
<indexterm>
<primary>arrays</primary>
<secondary>introduction</secondary>
<tertiary>index expression</tertiary>
</indexterm>
-
+-->
<indexterm>
<primary>associative arrays</primary>
<secondary>introduction</secondary>
@@ -99,13 +101,13 @@
</indexterm>
<para>Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they are declared as <command>global</command> variables in the SystemTap script. The syntax for accessing an element in an associative array is similar to that of <command>awk</command>, and is as follows:</para>
-<!-- next 3 indexterms for syntax -->
+<!-- next 3 indexterms for syntax
<indexterm>
<primary>arrays</primary>
<secondary>introduction</secondary>
<tertiary>syntax</tertiary>
</indexterm>
-
+-->
<indexterm>
<primary>associative arrays</primary>
<secondary>introduction</secondary>
@@ -131,14 +133,14 @@
<para>Here, the <command><replaceable>array_name</replaceable></command> is any arbitrary name the array uses. The <command><replaceable>index_expression</replaceable></command> is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named <command>foo</command> that specifies the ages of three people (i.e. the unique keys): <command>tom</command>, <command>dick</command>, and <command>harry</command>. To assign them the ages (i.e. associated values) of 23, 24, and 25 respectively, we'd use the following array statements:</para>
-<!-- next 2 indexterms for example -->
+<!-- next 2 indexterms for example
<indexterm>
<primary>arrays</primary>
<secondary>introduction</secondary>
<tertiary>example</tertiary>
</indexterm>
-
+-->
<indexterm>
<primary>associative arrays</primary>
<secondary>introduction</secondary>
@@ -159,7 +161,7 @@ foo["harry"] = 25
</screen>
</example>
-<para>You can specify up to 5 index expressons in an array statement, each one delimited by a comma (<command>,</command>). This is useful if you wish to have a key that contains multiple pieces of information. The following line from <xref linkend="scriptdisktop"/> uses 5 elements for the key: process ID, executable name, user ID, parent ID, and string "W". It associates the value of <command>devname</command> with that key.</para>
+<para>You can specify up to 5 index expressons in an array statement, each one delimited by a comma (<command>,</command>). This is useful if you wish to have a key that contains multiple pieces of information. The following line from <xref linkend="scriptdisktop"/> uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of <command>devname</command> with that key.</para>
<screen>
device[pid(),execname(),uid(),ppid(),"W"] = devname
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Errors.xml b/doc/SystemTap_Beginners_Guide/en-US/Errors.xml
index ffb70470..62e89580 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Errors.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Errors.xml
@@ -101,7 +101,7 @@
replicate?</remark>
<para>
- The following invalid SystemTap script is missing the its probe
+ The following invalid SystemTap script is missing its probe
handlers:
</para>
@@ -473,8 +473,9 @@ probe syscall.open
<computeroutput><replaceable>foo</replaceable></computeroutput> refers
to. This usually means that SystemTap could not find a match for
<computeroutput><replaceable>foo</replaceable></computeroutput> in the
- tapset library. The <replaceable>N</replaceable> refers to the column
- the error occurred in.</para>
+ tapset library. The <replaceable>N</replaceable> refers to the
+ line and column of
+ the error.</para>
</formalpara>
<remark>how to explain N in previous? "The divergence from the “tree” of probe point namespace is at position N (starting with zero at left)." (from tutorial) </remark>
@@ -807,6 +808,7 @@ An array containing aggregate values contains too many distinct key pairs at thi
<para>
Too many levels of function call nesting were attempted.
+ The default nesting of function calls allowed is 10.
</para>
</formalpara>
@@ -843,7 +845,9 @@ An array containing aggregate values contains too many distinct key pairs at thi
<tertiary>understainding SystemTap errors</tertiary>
</indexterm>
<para>
- The probe handler attempted to execute too many statements in the probe handler.
+ The probe handler attempted to execute too many statements in the
+ probe handler. The default number of actions allow in a probe handler
+ is 1000.
</para>
</formalpara>
diff --git a/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml b/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml
index a139015d..89334eff 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml
@@ -45,7 +45,7 @@
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>SystemTap handler constructs</secondary>
<tertiary>variables</tertiary>
</indexterm>
@@ -73,7 +73,7 @@ name, assign a value from a function or expression to it, and use it in an expre
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>SystemTap handler constructs</secondary>
<tertiary><command>global</command></tertiary>
</indexterm>
@@ -130,7 +130,7 @@ probe timer.jiffies(100) { count_jiffies ++ }
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>conditional statements</secondary>
</indexterm>
<para>
@@ -153,7 +153,7 @@ You can do this by using <emphasis>conditionals</emphasis> in handlers. SystemTa
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>conditional statements</secondary>
<tertiary>if/else</tertiary>
</indexterm>
@@ -177,7 +177,8 @@ The <command><replaceable>statement1</replaceable></command> is executed if the
<command><replaceable>condition</replaceable></command> expression is
non-zero. The <command><replaceable>statement2</replaceable></command> is
executed if the <command><replaceable>condition</replaceable></command>
-expression is zero. The <command>else</command> is optional. Both
+expression is zero. The <command>else</command> clause
+(<command>else</command> <replaceable>statement2</replaceable>)is optional. Both
<command><replaceable>statement1</replaceable></command> and
<command><replaceable>statement2</replaceable></command> can be statement
blocks.
@@ -219,7 +220,7 @@ probe end
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>conditional statements</secondary>
<tertiary>while loops</tertiary>
</indexterm>
@@ -271,7 +272,7 @@ printf("goodbye world\n")
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>conditional statements</secondary>
<tertiary>for loops</tertiary>
</indexterm>
@@ -326,7 +327,7 @@ while (<replaceable>conditional</replaceable>) {
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>conditional statements</secondary>
<tertiary>conditional operators</tertiary>
</indexterm>
@@ -374,7 +375,7 @@ while (<replaceable>conditional</replaceable>) {
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>SystemTap handler constructs</secondary>
<tertiary>command-line arguments</tertiary>
</indexterm>
@@ -407,7 +408,7 @@ probe kernel.function(@1).return { }
</indexterm>
<indexterm>
-<primary>SystemTap handlers</primary>
+ <primary>SystemTap statements</primary>
<secondary>SystemTap handler constructs</secondary>
<tertiary>variable notations</tertiary>
</indexterm>
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml
index a0fc7d52..88aa42ab 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml
@@ -129,7 +129,7 @@
</indexterm>
<para>
SystemTap scripts use the file extension <filename>.stp</filename>, and
- are conatains probes written in the following format:
+ contains probes written in the following format:
</para>
</formalpara>
<screen>
@@ -547,14 +547,14 @@ probe timer.s(4)
</section>
<!-- stophere -->
- <section id="systemtapscript-handler">
- <title>Systemtap Handler/Body</title>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>introduction</secondary>
-</indexterm>
- <para> Consider the following sample script: </para>
-
+<section id="systemtapscript-handler">
+ <title>Systemtap Handler/Body</title>
+ <indexterm>
+ <primary>handlers</primary>
+ <secondary>introduction</secondary>
+ </indexterm>
+ <para> Consider the following sample script: </para>
+
<example id="helloworld"><title>helloworld.stp</title>
<programlisting>
probe begin
@@ -564,108 +564,108 @@ probe begin
}
</programlisting>
</example>
-
- <para>
- In <xref linkend="helloworld"/>, the event <command>begin</command>
- (i.e. the start of the session) triggers the handler enclosed in
- <command>{ }</command>, which simply prints <command>hello
- world</command>, then exits.
- </para>
-
- <note>
- <title>Note</title>
-<indexterm>
-<primary>Handlers</primary>
-<secondary><command>exit()</command></secondary>
-</indexterm>
-
-<indexterm>
-<primary><command>exit()</command></primary>
-<secondary>Handlers</secondary>
-</indexterm>
- <para>
- SystemTap scripts continue to run until the
- <command>exit()</command> function executes. If the users wants to stop
- the execution of the script, it can interrupted manually with
- <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>.
- </para>
- </note>
-
- <formalpara id="printf">
- <title>printf ( ) Statements</title>
-<indexterm>
- <primary><command>printf()</command></primary>
- <secondary>format strings</secondary>
- </indexterm>
-
- <para>
- The <command>printf ()</command> statement is one of the simplest
- functions for printing data. <command>printf ()</command> can also be
- used to display data using a wide variety of SystemTap functions in the
- following format:
- </para>
- </formalpara>
-
-
-<programlisting>
-printf ("<replaceable>format string</replaceable>\n", <replaceable>arguments</replaceable>)
-</programlisting>
-<indexterm>
-<primary><command>printf()</command></primary>
-<secondary>format strings</secondary>
-</indexterm>
-
-<indexterm>
-<primary>format strings</primary>
-<secondary><command>printf()</command></secondary>
-</indexterm>
- <para>
- The <replaceable>format string</replaceable> specifies how
- <replaceable>arguments</replaceable> should be printed. The format string
- of <xref linkend="helloworld"/> simply instructs SystemTap to print
- <command>hello world</command>, and contains no format specifiers.
- </para>
-<indexterm>
-<primary><command>printf()</command></primary>
-<secondary>format specifiers</secondary>
-</indexterm>
-
-<indexterm>
-<primary>format specifiers</primary>
-<secondary><command>printf()</command></secondary>
-</indexterm>
- <para>
- You can use the format specifiers <command>%s</command> (for strings)
- and <command>%d</command> (for numbers) in format strings, depending on
- your list of arguments. Format strings can have multiple format
- specifiers, each matching a corresponding argument; multiple arguments
- are delimited by a comma (<command>,</command>).
- </para>
-
- <note>
- <title>Note</title>
-<indexterm>
-<primary><command>printf()</command></primary>
-<secondary>syntax and format</secondary>
-</indexterm>
-
-<indexterm>
-<primary>syntax and format</primary>
-<secondary><command>printf()</command></secondary>
-</indexterm>
-<indexterm>
-<primary>format and syntax</primary>
-<secondary><command>printf()</command></secondary>
-</indexterm>
- <para>Semantically, the SystemTap <command>printf</command> function is
- very similar to its C language counterpart. The aforementioned syntax
- and format for SystemTap's <command>printf</command> function is
- identical to that of the C-style <command>printf</command>.
- </para>
- </note>
-
- <para> To illustrate this, consider the following probe example: </para>
-
+
+ <para>
+ In <xref linkend="helloworld"/>, the event <command>begin</command>
+ (i.e. the start of the session) triggers the handler enclosed in
+ <command>{ }</command>, which simply prints <command>hello
+ world</command> followed by a new-line, then exits.
+ </para>
+
+ <note>
+ <title>Note</title>
+ <indexterm>
+ <primary>functions (used in handlers)</primary>
+ <secondary><command>exit()</command></secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary><command>exit()</command></primary>
+ <secondary>functions</secondary>
+ </indexterm>
+ <para>
+ SystemTap scripts continue to run until the
+ <command>exit()</command> function executes. If the users wants to stop
+ the execution of the script, it can interrupted manually with
+ <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>.
+ </para>
+ </note>
+
+ <formalpara id="printf">
+ <title>printf ( ) Statements</title>
+ <indexterm>
+ <primary><command>printf()</command></primary>
+ <secondary>format strings</secondary>
+ </indexterm>
+
+ <para>
+ The <command>printf ()</command> statement is one of the simplest
+ functions for printing data. <command>printf ()</command> can also be
+ used to display data using a wide variety of SystemTap functions in the
+ following format:
+ </para>
+ </formalpara>
+
+
+ <programlisting>
+ printf ("<replaceable>format string</replaceable>\n", <replaceable>arguments</replaceable>)
+ </programlisting>
+ <indexterm>
+ <primary><command>printf()</command></primary>
+ <secondary>format strings</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>format strings</primary>
+ <secondary><command>printf()</command></secondary>
+ </indexterm>
+ <para>
+ The <replaceable>format string</replaceable> specifies how
+ <replaceable>arguments</replaceable> should be printed. The format string
+ of <xref linkend="helloworld"/> simply instructs SystemTap to print
+ <command>hello world</command>, and contains no format specifiers.
+ </para>
+ <indexterm>
+ <primary><command>printf()</command></primary>
+ <secondary>format specifiers</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>format specifiers</primary>
+ <secondary><command>printf()</command></secondary>
+ </indexterm>
+ <para>
+ You can use the format specifiers <command>%s</command> (for strings)
+ and <command>%d</command> (for numbers) in format strings, depending on
+ your list of arguments. Format strings can have multiple format
+ specifiers, each matching a corresponding argument; multiple arguments
+ are delimited by a comma (<command>,</command>).
+ </para>
+
+ <note>
+ <title>Note</title>
+ <indexterm>
+ <primary><command>printf()</command></primary>
+ <secondary>syntax and format</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>syntax and format</primary>
+ <secondary><command>printf()</command></secondary>
+ </indexterm>
+ <indexterm>
+ <primary>format and syntax</primary>
+ <secondary><command>printf()</command></secondary>
+ </indexterm>
+ <para>Semantically, the SystemTap <command>printf</command> function is
+ very similar to its C language counterpart. The aforementioned syntax
+ and format for SystemTap's <command>printf</command> function is
+ identical to that of the C-style <command>printf</command>.
+ </para>
+ </note>
+
+ <para> To illustrate this, consider the following probe example: </para>
+
<example id="syscall-open">
<title>variables-in-printf-statements.stp</title>
<programlisting>
@@ -675,19 +675,19 @@ probe syscall.open
}
</programlisting>
</example>
-
- <para>
- <xref linkend="syscall-open"/> instructs SystemTap to probe all entries to
- the system call <command>open</command>; for each event, it prints the
- current <command>execname()</command> (a string with the executable name) and
- <command>pid()</command> (the current process ID number), followed by the word
- <command>open</command>. A snippet of this probe's output would look like:
- </para>
-
- <remark>editorial review: does a clarification that "format specifier1" is
- to "argument1", "format specifier2" is to "argument2", or is this clear
- enough? </remark>
-
+
+ <para>
+ <xref linkend="syscall-open"/> instructs SystemTap to probe all entries to
+ the system call <command>open</command>; for each event, it prints the
+ current <command>execname()</command> (a string with the executable name) and
+ <command>pid()</command> (the current process ID number), followed by the word
+ <command>open</command>. A snippet of this probe's output would look like:
+ </para>
+
+ <remark>editorial review: does a clarification that "format specifier1" is
+ to "argument1", "format specifier2" is to "argument2", or is this clear
+ enough? </remark>
+
<screen>
vmware-guestd(2206) open
hald(2360) open
@@ -698,245 +698,253 @@ df(3433) open
df(3433) open
hald(2360) open
</screen>
-
- <formalpara id="systemtapscript-functions">
- <title>SystemTap Functions</title>
-<indexterm>
-<primary>functions</primary>
-</indexterm>
-
-<indexterm>
-<primary>SystemTap script functions</primary>
-</indexterm>
-
-<indexterm>
- <primary>Handlers</primary>
- <secondary>handler functions</secondary>
-</indexterm>
-
-<indexterm>
- <primary>handler functions</primary>
- <secondary>Handlers</secondary>
-</indexterm>
-
- <para>
- SystemTap supports a wide variety of functions that can be used as
- <command>printf ()</command> arguments. <xref linkend="syscall-open"/>
- uses the SystemTap functions <command>execname()</command> (name of the
- process that called a kernel function/performed a system call) and
- <command>pid()</command> (current process ID).
- </para>
- </formalpara>
-
- <remark>is "handler function" an appropriate term? wcohen: use "SystemTap functions" to match up language in man pages</remark>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-</indexterm>
-
- <para>The following is a list of commonly-used SystemTap functions:</para>
-<variablelist>
-
-<varlistentry>
- <term>tid()</term>
- <listitem>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>tid()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>tid()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>tid()</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
-
- <para>The ID of the current thread.</para>
- </listitem>
-</varlistentry>
-
-<varlistentry>
- <term>uid()</term>
- <listitem>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>uid()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>uid()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>uid()</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
- <para>The ID of the current user.</para>
- </listitem>
-</varlistentry>
-
-<varlistentry>
- <term>cpu()</term>
- <listitem>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>cpu()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>cpu()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>cpu()</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
- <para>The current CPU number.</para>
- </listitem>
-</varlistentry>
-
-<varlistentry>
- <term>gettimeofday_s()</term>
- <listitem>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>gettimeofday_s()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>gettimeofday_s()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>gettimeofday_s()</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
-
- <para>The number of seconds since UNIX epoch (January 1, 1970).</para>
- </listitem>
-</varlistentry>
-
-<varlistentry>
- <term>ctime()</term>
- <listitem>
+
+ <formalpara id="systemtapscript-functions">
+ <title>SystemTap Functions</title>
+ <indexterm>
+ <primary>functions</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SystemTap script functions</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>handler functions</primary>
+ </indexterm>
+
<para>
- Convert number of seconds since UNIX epoch to date.</para>
- </listitem>
-</varlistentry>
-
-<!--
-<varlistentry>
- <term>get_cycles()</term>
- <listitem>
- <para>A snapshot of the hardware cycle counter.</para>
- </listitem>
-</varlistentry>
--->
-
-<varlistentry>
- <term>pp()</term>
- <listitem>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>pp()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>pp()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>pp()</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
- <para>A string describing the probe point currently being handled.</para>
- </listitem>
-</varlistentry>
-<!-- removed, doesnt work as expected anymore
-<varlistentry>
- <term>probefunc()</term>
- <listitem>
- <para>If known, the name of the function in which the probe was placed.</para>
- </listitem>
-</varlistentry>
--->
-
-<varlistentry>
- <term>thread_indent()</term>
- <listitem>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>thread_indent()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>thread_indent()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>thread_indent()</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
- <para>
- This particular function is quite useful, providing you with a way
- to better organize your print results. The function takes one
- argument, an indentation delta, which indicates how many
- spaces to add or remove from a thread's "indentation counter".
- It then returns a
- string with some generic trace data along with an appropriate number
- of indentation spaces.
- </para>
+ SystemTap supports a wide variety of functions that can be used as
+ <command>printf ()</command> arguments. <xref linkend="syscall-open"/>
+ uses the SystemTap functions <command>execname()</command> (name of the
+ process that called a kernel function/performed a system call) and
+ <command>pid()</command> (current process ID).
+ </para>
+ </formalpara>
+
+ <remark>is "handler function" an appropriate term? wcohen: use "SystemTap functions" to match up language in man pages</remark>
+
+ <para>The following is a list of commonly-used SystemTap functions:</para>
+ <variablelist>
- <para>
- The generic data included in the returned string includes a
- timestamp (number of microseconds since the
- first call to <command>thread_indent()</command> by the thread),
- a process name, and the thread ID. This allows you to
- identify what functions were called, who called them, and the
- duration of each function call.
- </para>
-
- <para>
- If call entries and exits immediately precede each other, it is easy
- to match them. However, in most cases, after a first function call
- entry is made several other call entries and exits may be made
- before the first call exits. The indentation counter helps you match
- an entry with its corresponding exit by indenting the next function
- call if it is not the exit of the previous one.
- </para>
+ <varlistentry>
+ <term>tid()</term>
+ <listitem>
+ <indexterm>
+ <primary>functions</primary>
+ <secondary><command>tid()</command></secondary>
+<!-- <tertiary><command>tid()</command></tertiary> -->
+ </indexterm>
+
+ <indexterm>
+ <primary>functions</primary>
+ <secondary><command>tid()</command></secondary>
+<!-- <tertiary></tertiary> -->
+ </indexterm>
+
+ <indexterm>
+ <primary><command>tid()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler </tertiary> -->
+ </indexterm>
+
+ <para>The ID of the current thread.</para>
+ </listitem>
+ </varlistentry>
- <para>
- Consider the following example on the use of
- <command>thread_indent()</command>:
- </para>
+ <varlistentry>
+ <term>uid()</term>
+ <listitem>
+ <indexterm>
+ <primary>functions</primary>
+ <!--<secondary>handler functions</secondary>-->
+ <secondary><command>uid()</command></secondary>
+ </indexterm>
+<!--
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>uid()</command></tertiary>
+ </indexterm>
+ -->
+ <indexterm>
+ <primary><command>uid()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler functions</tertiary> -->
+ </indexterm>
+ <para>The ID of the current user.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>cpu()</term>
+ <listitem>
+ <indexterm>
+ <primary>functions</primary>
+ <!--<secondary>handler functions</secondary>-->
+ <secondary><command>cpu()</command></secondary>
+ </indexterm>
+<!--
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>cpu()</command></tertiary>
+ </indexterm>
+ -->
+ <indexterm>
+ <primary><command>cpu()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler functions</tertiary> -->
+ </indexterm>
+ <para>The current CPU number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>gettimeofday_s()</term>
+ <listitem>
+ <indexterm>
+ <primary>functions</primary>
+ <!--<secondary>handler functions</secondary>-->
+ <secondary><command>gettimeofday_s()</command></secondary>
+ </indexterm>
+<!--
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>gettimeofday_s()</command></tertiary>
+ </indexterm>
+ -->
+ <indexterm>
+ <primary><command>gettimeofday_s()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler functions</tertiary> -->
+ </indexterm>
+
+ <para>The number of seconds since UNIX epoch (January 1, 1970).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>ctime()</term>
+ <listitem>
+ <indexterm>
+ <primary>functions</primary>
+ <!--<secondary>handler functions</secondary>-->
+ <secondary><command>ctime()</command></secondary>
+ </indexterm>
+<!--
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>ctime()</command></tertiary>
+ </indexterm>
+ -->
+ <indexterm>
+ <primary><command>ctime()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler functions</tertiary> -->
+ </indexterm>
+ <para>
+ Convert number of seconds since UNIX epoch to date.
+ </para>
+ </listitem>
+ </varlistentry>
+ <!--
+ <varlistentry>
+ <term>get_cycles()</term>
+ <listitem>
+ <para>A snapshot of the hardware cycle counter.</para>
+ </listitem>
+ </varlistentry>
+ -->
+
+ <varlistentry>
+ <term>pp()</term>
+ <listitem>
+ <indexterm>
+ <primary>functions</primary>
+ <!--<secondary>handler functions</secondary>-->
+ <secondary><command>pp()</command></secondary>
+ </indexterm>
+<!--
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>pp()</command></tertiary>
+ </indexterm>
+ -->
+ <indexterm>
+ <primary><command>pp()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler functions</tertiary> -->
+ </indexterm>
+ <para>A string describing the probe point currently being handled.</para>
+ </listitem>
+ </varlistentry>
+ <!-- removed, doesnt work as expected anymore
+ <varlistentry>
+ <term>probefunc()</term>
+ <listitem>
+ <para>If known, the name of the function in which the probe was placed.</para>
+ </listitem>
+ </varlistentry>
+ -->
+
+ <varlistentry>
+ <term>thread_indent()</term>
+ <listitem>
+ <indexterm>
+ <primary>functions</primary>
+ <!--<secondary>handler functions</secondary>-->
+ <secondary><command>thread_indent()</command></secondary>
+ </indexterm>
+<!--
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>thread_indent()</command></tertiary>
+ </indexterm>
+ -->
+ <indexterm>
+ <primary><command>thread_indent()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler functions</tertiary> -->
+ </indexterm>
+ <para>
+ This particular function is quite useful, providing you with a way
+ to better organize your print results. The function takes one
+ argument, an indentation delta, which indicates how many
+ spaces to add or remove from a thread's "indentation counter".
+ It then returns a
+ string with some generic trace data along with an appropriate number
+ of indentation spaces.
+ </para>
+
+ <para>
+ The generic data included in the returned string includes a
+ timestamp (number of microseconds since the
+ first call to <command>thread_indent()</command> by the thread),
+ a process name, and the thread ID. This allows you to
+ identify what functions were called, who called them, and the
+ duration of each function call.
+ </para>
+
+ <para>
+ If call entries and exits immediately precede each other, it is easy
+ to match them. However, in most cases, after a first function call
+ entry is made several other call entries and exits may be made
+ before the first call exits. The indentation counter helps you match
+ an entry with its corresponding exit by indenting the next function
+ call if it is not the exit of the previous one.
+ </para>
+
+ <para>
+ Consider the following example on the use of
+ <command>thread_indent()</command>:
+ </para>
+
<example id="thread_indent"><title>thread_indent.stp</title>
<programlisting>
probe kernel.function("*@net/socket.c")
@@ -949,108 +957,122 @@ probe kernel.function("*@net/socket.c").return
}
</programlisting>
</example>
-
- <para>
- <xref linkend="thread_indent"/> prints out the
- <command>thread_indent()</command> and probe functions at each event
- in the following format:</para>
-
+
+ <para>
+ <xref linkend="thread_indent"/> prints out the
+ <command>thread_indent()</command> and probe functions at each event
+ in the following format:</para>
+
<screen>
- 0 ftp(7223): -&gt; sys_socketcall
- 1159 ftp(7223): -&gt; sys_socket
- 2173 ftp(7223): -&gt; __sock_create
- 2286 ftp(7223): -&gt; sock_alloc_inode
- 2737 ftp(7223): &lt;- sock_alloc_inode
- 3349 ftp(7223): -&gt; sock_alloc
- 3389 ftp(7223): &lt;- sock_alloc
- 3417 ftp(7223): &lt;- __sock_create
- 4117 ftp(7223): -&gt; sock_create
- 4160 ftp(7223): &lt;- sock_create
- 4301 ftp(7223): -&gt; sock_map_fd
- 4644 ftp(7223): -&gt; sock_map_file
- 4699 ftp(7223): &lt;- sock_map_file
- 4715 ftp(7223): &lt;- sock_map_fd
- 4732 ftp(7223): &lt;- sys_socket
- 4775 ftp(7223): &lt;- sys_socketcall
+0 ftp(7223): -&gt; sys_socketcall
+1159 ftp(7223): -&gt; sys_socket
+2173 ftp(7223): -&gt; __sock_create
+2286 ftp(7223): -&gt; sock_alloc_inode
+2737 ftp(7223): &lt;- sock_alloc_inode
+3349 ftp(7223): -&gt; sock_alloc
+3389 ftp(7223): &lt;- sock_alloc
+3417 ftp(7223): &lt;- __sock_create
+4117 ftp(7223): -&gt; sock_create
+4160 ftp(7223): &lt;- sock_create
+4301 ftp(7223): -&gt; sock_map_fd
+4644 ftp(7223): -&gt; sock_map_file
+4699 ftp(7223): &lt;- sock_map_file
+4715 ftp(7223): &lt;- sock_map_fd
+4732 ftp(7223): &lt;- sys_socket
+4775 ftp(7223): &lt;- sys_socketcall
</screen>
-
-<para>This sample output contains the following information:</para>
-
-<itemizedlist>
- <listitem><para>The time (in microseconds) since the initial <command>thread_ident()</command> call for the thread (included in the string from <command>thread_ident()</command>).</para></listitem>
-
- <listitem><para>The process name (and its corresponding ID) that made the function call (included in the string from <command>thread_ident()</command>).</para></listitem>
-
- <listitem><para>An arrow signifying whether the call was an entry (<computeroutput>&lt;-</computeroutput>) or an exit (<computeroutput>-></computeroutput>); the indentations help you match specific function call entries with their corresponding exits.</para></listitem>
-
- <listitem><para>The name of the function called by the process.</para></listitem>
-</itemizedlist>
-
-<remark>remember to add a reference later to "tapsets" from here, to clarify
-that thread_indent is defined in tapsets as a special function of sorts</remark>
-
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>name</term>
- <listitem>
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>name</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>name</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>name</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
- <para>Identifies the name of a specific system call. This variable can
- only be used in probes that use the event
- <command>syscall.<replaceable>system_call</replaceable></command>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>target()</term>
- <listitem>
-
-<indexterm>
-<primary>Handlers</primary>
-<secondary>handler functions</secondary>
-<tertiary><command>target()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary>handler functions</primary>
-<secondary>Handlers</secondary>
-<tertiary><command>target()</command></tertiary>
-</indexterm>
-
-<indexterm>
-<primary><command>target()</command></primary>
-<secondary>Handlers</secondary>
-<tertiary>handler functions</tertiary>
-</indexterm>
- <para>
- Used in conjunction with <command>stap
- <replaceable>script</replaceable> -x <replaceable>process
- ID</replaceable></command> or <command>stap
- <replaceable>script</replaceable> -c
- <replaceable>command</replaceable></command>. If you want to specify
- a script to take an argument of a process ID or command, use
- <command>target()</command> as the variable in the script to refer
- to it. For example:
- </para>
-
+
+ <para>This sample output contains the following information:</para>
+
+ <itemizedlist>
+ <listitem><para>The time (in microseconds) since the initial <command>thread_ident()</command> call for the thread (included in the string from <command>thread_ident()</command>).</para></listitem>
+
+ <listitem><para>The process name (and its corresponding ID) that made the function call (included in the string from <command>thread_ident()</command>).</para></listitem>
+
+ <listitem><para>An arrow signifying whether the call was an entry (<computeroutput>&lt;-</computeroutput>) or an exit (<computeroutput>-></computeroutput>); the indentations help you match specific function call entries with their corresponding exits.</para></listitem>
+
+ <listitem><para>The name of the function called by the process.</para></listitem>
+ </itemizedlist>
+
+ <remark>remember to add a reference later to "tapsets" from here, to clarify
+ that thread_indent is defined in tapsets as a special function of sorts</remark>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+<indexterm>
+<primary>local variables</primary>
+<secondary>name</secondary>
+</indexterm>
+
+<indexterm>
+<primary>variables (local)</primary>
+<secondary>name</secondary>
+</indexterm>
+
+<indexterm>
+<primary>name</primary>
+<secondary>local variables</secondary>
+</indexterm>
+<!-- <indexterm>
+ <primary>functions</primary>
+ <secondary>handler functions</secondary>
+ <tertiary><command>name</command></tertiary>
+ </indexterm>
+
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>name</command></tertiary>
+ </indexterm>
+
+ <indexterm>
+ <primary><command>name</command></primary>
+ <secondary>Handlers</secondary>
+ <tertiary>handler functions</tertiary>
+ </indexterm>-->
+ <para>Identifies the name of a specific system call. This variable can
+ only be used in probes that use the event
+ <command>syscall.<replaceable>system_call</replaceable></command>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>target()</term>
+ <listitem>
+
+ <indexterm>
+ <primary>functions</primary>
+<!-- <secondary>handler functions</secondary> -->
+ <secondary><command>target()</command></secondary>
+ </indexterm>
+<!--
+ <indexterm>
+ <primary>handler functions</primary>
+ <secondary>Handlers</secondary>
+ <tertiary><command>target()</command></tertiary>
+ </indexterm>
+ -->
+ <indexterm>
+ <primary><command>target()</command></primary>
+ <secondary>functions</secondary>
+<!-- <tertiary>handler functions</tertiary> -->
+ </indexterm>
+ <para>
+ Used in conjunction with <command>stap
+ <replaceable>script</replaceable> -x <replaceable>process
+ ID</replaceable></command> or <command>stap
+ <replaceable>script</replaceable> -c
+ <replaceable>command</replaceable></command>. If you want to specify
+ a script to take an argument of a process ID or command, use
+ <command>target()</command> as the variable in the script to refer
+ to it. For example:
+ </para>
+
<example id="targetexample">
<title>targetexample.stp</title>
<programlisting>
@@ -1060,65 +1082,64 @@ probe syscall.* {
}
</programlisting>
</example>
-
- <para>
- When <xref linkend="targetexample"/> is run with the argument
- <command>-x <replaceable>process ID</replaceable></command>, it
- watches all system calls (as specified by the event
- <command>syscall.*</command>) and prints out the name of all system
- calls made by the specified process.
- </para>
-
- <para>
- This has the same effect as specifying <command>if (pid() ==
- <replaceable>process ID</replaceable>)</command> each time you wish
- to target a specific process. However, using
- <command>target()</command> makes it easier for you to re-use the
- script, giving you the ability to simply pass a process ID as an
- argument each time you wish to run the script (e.g. <command>stap
- targetexample.stp -x <replaceable>process ID</replaceable></command>).
- </para>
-<!--
-<note>
- <title>Note</title>
- <para>In <xref linkend="targetexample"/>, <command>name</command> instructs SystemTap to capture the name of the process</para>
-</note> -->
-
- </listitem>
- </varlistentry>
-
-<!--
-<varlistentry>
- <term></term>
- <listitem>
- <para></para>
- </listitem>
-</varlistentry>
--->
- </variablelist>
-
- <para>For more information about supported SystemTap functions, refer to
- <command>man stapfuncs</command>.
- </para>
-
-<remark>will need a complete listing of supported handler functions? also, SystemTap function descriptions seem ambiguous, please advise.</remark>
-
-<!--
-<para>
- <replaceable>variable</replaceable> can be either <command>%s</command> for strings, or <command>%d</command> for numbers, depending on the <replaceable>handler function</replaceable> used. Each <command>printf ()</command> statement can contain multiple <replaceable>variable</replaceable>s, with each one corresponding to a matching <replaceable>handler function</replaceable>. Multiple <replaceable>handler function</replaceable>s are delimited by comma (<command>,</command>).
-</para>
-
- <command>printf ()</command> is a SystemTap-supported C statement, and can also trap data using a wide variety
-
- SystemTap supports a wide variety of handler functions that can trap data when triggered by events. One way to display these functions is to use the <command>print()</command>
-</para>
-
-
-<para>
- <xref linkend="wildcards"/> illustrates an example of a SystemTap script that contains no handlers. SystemTap will still be able to run the script, but no information will be displayed.
-</para>
--->
-
+
+ <para>
+ When <xref linkend="targetexample"/> is run with the argument
+ <command>-x <replaceable>process ID</replaceable></command>, it
+ watches all system calls (as specified by the event
+ <command>syscall.*</command>) and prints out the name of all system
+ calls made by the specified process.
+ </para>
+
+ <para>
+ This has the same effect as specifying <command>if (pid() ==
+ <replaceable>process ID</replaceable>)</command> each time you wish
+ to target a specific process. However, using
+ <command>target()</command> makes it easier for you to re-use the
+ script, giving you the ability to simply pass a process ID as an
+ argument each time you wish to run the script (e.g. <command>stap
+ targetexample.stp -x <replaceable>process ID</replaceable></command>).
+ </para>
+ <!--
+ <note>
+ <title>Note</title>
+ <para>In <xref linkend="targetexample"/>, <command>name</command> instructs SystemTap to capture the name of the process</para>
+ </note> -->
+
+ </listitem>
+ </varlistentry>
+
+ <!--
+ <varlistentry>
+ <term></term>
+ <listitem>
+ <para></para>
+ </listitem>
+ </varlistentry>
+ -->
+ </variablelist>
+
+ <para>For more information about supported SystemTap functions, refer to
+ <command>man stapfuncs</command>.
+ </para>
+
+ <remark>will need a complete listing of supported handler functions? also, SystemTap function descriptions seem ambiguous, please advise.</remark>
+
+ <!--
+ <para>
+ <replaceable>variable</replaceable> can be either <command>%s</command> for strings, or <command>%d</command> for numbers, depending on the <replaceable>handler function</replaceable> used. Each <command>printf ()</command> statement can contain multiple <replaceable>variable</replaceable>s, with each one corresponding to a matching <replaceable>handler function</replaceable>. Multiple <replaceable>handler function</replaceable>s are delimited by comma (<command>,</command>).
+ </para>
+
+ <command>printf ()</command> is a SystemTap-supported C statement, and can also trap data using a wide variety
+
+ SystemTap supports a wide variety of handler functions that can trap data when triggered by events. One way to display these functions is to use the <command>print()</command>
+ </para>
+
+
+ <para>
+ <xref linkend="wildcards"/> illustrates an example of a SystemTap script that contains no handlers. SystemTap will still be able to run the script, but no information will be displayed.
+ </para>
+ -->
+
</section>
-
</section>
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml b/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml
index 4e61e247..d9fe6ab4 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml
@@ -53,7 +53,7 @@
expiration, session termination, etc. A handler is a series of script
language statements that specify the work to be done whenever the event
occurs. This work normally includes extracting data from the event context,
- storing them into internal variables, or printing results.
+ storing them into internal variables, and printing results.
</para>
<section id="understanding-architecture-tools">
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml
index 42f1986b..8a786d82 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml
@@ -107,7 +107,24 @@
<para>The time and date in the output of <xref linkend="scriptdisktop"/> is returned by the functions <command>ctime()</command> and <command>gettimeofday_s()</command>. <command>ctime()</command> derives calendar time in terms of seconds passed since the Unix epoch (January 1, 1970). <command>gettimeofday_s()</command> counts the <emphasis>actual</emphasis> number of seconds since Unix epoch, which gives a fairly accurate human-readable timestamp for the output.</para>
-
+<!-- next 3 indexterms for $return -->
+<indexterm>
+ <primary>local variables</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>$return</tertiary>
+</indexterm>
+
+<indexterm>
+ <primary>variables (local)</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>$return</tertiary>
+</indexterm>
+
+<indexterm>
+ <primary>$return</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>local variables</tertiary>
+</indexterm>
<para>
In this script, the <command>$return</command> is a local variable that stores the
actual number of bytes each process reads or writes from the virtual file system.
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml
index 098524ae..47cc4e16 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml
@@ -59,7 +59,8 @@ no script in examples
<remark>need to add references to sources/man pages that explain how "dev_nr = $file->f_dentry->d_inode->i_sb->s_dev" and "($1 &lt;&lt; 20 | $2)".</remark>
-<para><xref linkend="inodewatch"/> takes the following information about the file as an argument:</para>
+<para><xref linkend="inodewatch"/> takes the following information about the
+file as arguments on the command line:</para>
<indexterm>
<primary>script examples</primary>
<secondary>file device number (integer format)</secondary>
@@ -81,7 +82,9 @@ no script in examples
</indexterm>
<itemizedlist>
- <listitem><para>The file's device number, in integer format. When this is passed to the script as the first argument, be sure to replace any <computeroutput>0</computeroutput> with a space.</para></listitem>
+ <listitem><para>The file's major device number.</para></listitem>
+
+ <listitem><para>The file's minor device number.</para></listitem>
<listitem><para>The file's <command>inode</command> number.</para></listitem>
</itemizedlist>
@@ -121,9 +124,9 @@ no script in examples
<secondary>examples of SystemTap scripts</secondary>
</indexterm>
-<para><computeroutput>805</computeroutput> is the device number, while <computeroutput>1078319</computeroutput> is the <command>inode</command> number. To start monitoring <filename>/etc/crontab</filename>, run <command>stap inodewatch.stp 8 5 1078319</command>.</para>
+<para><computeroutput>805</computeroutput> is the base-16 (hexadecimal) device number. The lower two digits are the minor device number and the upper digits are the major number. <computeroutput>1078319</computeroutput> is the <command>inode</command> number. To start monitoring <filename>/etc/crontab</filename>, run <command>stap inodewatch.stp 0x8 0x05 1078319</command> (The <command>0x</command> prefixes indicate base-16 values.</para>
-<para>The output of this command contains the name and ID of any process performing a read/write, the function it is performing (i.e. <command>vfs_read</command> or <command>vfs_write</command>), the device number (in hex format), and the <command>inode</command> number. <xref linkend="inodewatchoutput"/> contains the output of <command>stap inodewatch.stp 8 5 1078319</command> (when <command>cat /etc/crontab</command> is executed while the script is running) :</para>
+<para>The output of this command contains the name and ID of any process performing a read/write, the function it is performing (i.e. <command>vfs_read</command> or <command>vfs_write</command>), the device number (in hex format), and the <command>inode</command> number. <xref linkend="inodewatchoutput"/> contains the output of <command>stap inodewatch.stp 0x8 0x05 1078319</command> (when <command>cat /etc/crontab</command> is executed while the script is running) :</para>
<example id="inodewatchoutput">
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml
index 21b6db9d..4d7d6b17 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml
@@ -52,6 +52,26 @@
of microseconds it takes for any reads or writes to finish and tracks the amount of data (in
bytes) read from or written to the file.
</para>
+<!-- next 2 indexterms for $count -->
+
+<indexterm>
+ <primary>local variables</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>$count</tertiary>
+</indexterm>
+
+<indexterm>
+ <primary>variables (local)</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>$count</tertiary>
+</indexterm>
+
+<indexterm>
+ <primary>$count</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>local variables</tertiary>
+</indexterm>
+
<para>
<xref linkend="iotime"/> also uses the local variable <command>$count</command> to track the
@@ -68,13 +88,14 @@
<title><xref linkend="iotime"/> Sample Output</title>
<screen>
[...]
-3123380 2460 (pcscd) access /dev/bus/usb/005/001 read: 0 write: 0
-825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0
-825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9
-117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0
-117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7
-3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0
-3973744 2886 (sendmail) iotime /proc/loadavg time: 11
+825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0
+825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9
+[...]
+117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0
+117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7
+[...]
+3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0
+3973744 2886 (sendmail) iotime /proc/loadavg time: 11
[...]
</screen>
</example>
@@ -137,4 +158,4 @@ print("\n")
}
-->
-</section> \ No newline at end of file
+</section>
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml
index c51d4b66..2d7e3595 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml
@@ -63,20 +63,23 @@
<primary>if/else conditionals, alternative syntax</primary>
<secondary>examples of SystemTap scripts</secondary>
</indexterm>
-<para>Note that <command>function print_activity()</command> uses the following constructs:</para>
+<para>Note that <command>function print_activity()</command> uses the following
+expressions:</para>
<screen>
-n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0,
+n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0
n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0
</screen>
-<para>These constructs are if/else conditionals. The first statement is simply a more concise way of writing:</para>
+<para>These expressions are if/else conditionals.
+The first statement is simply a more concise way of writing the following
+psuedo code:</para>
<screen>
if n_recv != 0 then
- @sum(ifrecv[pid, dev, exec, uid])/1024
+ @sum(ifrecv[pid, dev, exec, uid])/1024
else
- 0
+ 0
</screen>
<para><xref linkend="nettop"/> tracks which processes are generating network traffic on the system, and provides the following information about each process:</para>
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml
index 9a9e1c55..6e913b48 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml
@@ -51,7 +51,7 @@
<title>socket-trace.stp</title>
<para>
<programlisting>
- <xi:include parse="text" href="extras/testsuite/systemtap.examples/network/socket-trace.stp" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include parse="text" href="extras/testsuite/systemtap.examples/network/socket-trace.stp" xmlns:xi="http://www.w3.org/2001/XInclude" />
</programlisting>
</para>
</formalpara>
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml
index ab260d63..1af1475d 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml
@@ -55,7 +55,24 @@
executables. This information is tracked and printed out in 1-second intervals, and in
descending order.
</para>
+<!-- next 3 indexterms for $return -->
+<indexterm>
+ <primary>local variables</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>$return</tertiary>
+</indexterm>
+<indexterm>
+ <primary>variables (local)</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>$return</tertiary>
+</indexterm>
+
+<indexterm>
+ <primary>$return</primary>
+ <secondary>sample usage</secondary>
+ <tertiary>local variables</tertiary>
+</indexterm>
<para>
Note that <xref linkend="traceio"/> also uses the local variable <command>$return</command>,
which is also used by <xref linkend="scriptdisktop"/> from <xref linkend="disktop"/>.
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml
index 4fc7ecc2..7451de98 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml
+++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml
@@ -50,7 +50,7 @@
</para>
<formalpara id="traceio2">
- <title>traceio2-simple.stp</title>
+ <title>traceio2.stp</title>
<para>
<programlisting>
<xi:include parse="text" href="extras/testsuite/systemtap.examples/io/traceio2.stp" xmlns:xi="http://www.w3.org/2001/XInclude" />
diff --git a/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp b/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp
index a14f7731..a16ee4a2 100644
--- a/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp
+++ b/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp
@@ -68,10 +68,10 @@ probe syscall.write.return {
probe syscall.close {
if (filehandles[pid(), $fd] != "") {
printf("%d %s access %s read: %d write: %d\n", timestamp(), proc(),
- filehandles[pid(), $fd], fileread[pid(), $fd], filewrite[pid(), $fd])
+ filehandles[pid(), $fd], fileread[pid(), $fd], filewrite[pid(), $fd])
if (@count(time_io[pid(), $fd]))
printf("%d %s iotime %s time: %d\n", timestamp(), proc(),
- filehandles[pid(), $fd], @sum(time_io[pid(), $fd]))
+ filehandles[pid(), $fd], @sum(time_io[pid(), $fd]))
}
delete fileread[pid(), $fd]
delete filewrite[pid(), $fd]
@@ -79,4 +79,4 @@ probe syscall.close {
delete fd_io[pid()]
delete entry_io[pid()]
delete time_io[pid(),$fd]
-} \ No newline at end of file
+}
diff --git a/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp b/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp
index 17cf50a5..1a3e2e03 100755
--- a/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp
+++ b/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp
@@ -1,39 +1,39 @@
function trace(entry_p) {
- if(tid() in trace)
- printf("%s%s%s\n",thread_indent(entry_p),
- (entry_p>0?"->":"<-"),
- probefunc())
+ if(tid() in trace)
+ printf("%s%s%s\n",thread_indent(entry_p),
+ (entry_p>0?"->":"<-"),
+ probefunc())
}
global trace
probe kernel.function(@1).call {
- if (execname() == "stapio") next # skip our own helper process
- trace[tid()] = 1
- trace(1)
+ if (execname() == "stapio") next # skip our own helper process
+ trace[tid()] = 1
+ trace(1)
}
probe kernel.function(@1).return {
- trace(-1)
- delete trace[tid()]
+ trace(-1)
+ delete trace[tid()]
}
probe kernel.function(@2).call { trace(1) }
probe kernel.function(@2).return { trace(-1) }
function trace(entry_p) {
- if(tid() in trace)
- printf("%s%s%s\n",thread_indent(entry_p),
- (entry_p>0?"->":"<-"),
- probefunc())
+ if(tid() in trace)
+ printf("%s%s%s\n",thread_indent(entry_p),
+ (entry_p>0?"->":"<-"),
+ probefunc())
}
global trace
probe kernel.function(@1).call {
- if (execname() == "stapio") next # skip our own helper process
- trace[tid()] = 1
- trace(1)
+ if (execname() == "stapio") next # skip our own helper process
+ trace[tid()] = 1
+ trace(1)
}
probe kernel.function(@1).return {
- trace(-1)
- delete trace[tid()]
+ trace(-1)
+ delete trace[tid()]
}
probe kernel.function(@2).call { trace(1) }
diff --git a/doc/SystemTap_Tapset_Reference/Makefile.am b/doc/SystemTap_Tapset_Reference/Makefile.am
index c196e977..9e7d2069 100644
--- a/doc/SystemTap_Tapset_Reference/Makefile.am
+++ b/doc/SystemTap_Tapset_Reference/Makefile.am
@@ -1,6 +1,11 @@
# Makefile.am --- automake input file for systemtap tapset reference manual
## process this file with automake to produce Makefile.in
+DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap
+MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man5
+HTML_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap/tapsets
+
+
###
# The build process is as follows (targets):
# (xmldocs) [by docproc]
@@ -9,29 +14,38 @@
# +--> DIR=file (htmldocs) [by xmlto]
# +--> man/ (mandocs) [by xmlto]
-bin_PROGRAMS = docproc
-docproc_SOURCES = docproc.c
-
-all: pdfdocs htmldocs mandocs
-
-
+noinst_PROGRAMS = docproc
SRCTREE=$(abs_top_srcdir)/
DOCPROC=$(abs_builddir)/docproc
-xmldocs: docproc
- SRCTREE=$(SRCTREE) $(DOCPROC) doc $(abs_srcdir)/tapsets.tmpl > tapsets.xml
-
-htmldocs: xmldocs
+if BUILD_REFDOCS
+all: tapsets.pdf stamp-htmldocs stamp-mandocs
+tapsets.xml: docproc $(shell find $(SRCTREE) -name '*.stp')
+ SRCTREE=$(SRCTREE) $(DOCPROC) doc $(abs_srcdir)/tapsets.tmpl > tapsets.xml.new
+ if cmp tapsets.xml.new tapsets.xml >/dev/null ; then \
+ echo tapsets.xml unchanged; \
+ else \
+ mv tapsets.xml.new tapsets.xml; \
+ fi
+
+stamp-htmldocs: tapsets.xml
xmlto html -o tapsets tapsets.xml
+ touch stamp-htmldocs
-pdfdocs: xmldocs
+tapsets.pdf: tapsets.xml
xmlto pdf tapsets.xml
-mandocs: xmldocs
+stamp-mandocs: tapsets.xml
xmlto man -o man5 tapsets.xml
+ touch stamp-mandocs
#FIXME need to figure out where to install things appropriately
#installmandocs: mandocs
-# $(MKDIR_P) /usr/local/man/man5/
-# install Documentation/DocBook/man/*.5.gz /usr/local/man/man5/
-
+install-data-hook:
+ $(MKDIR_P) $(DOC_INSTALL_DIR)
+ $(INSTALL_DATA) tapsets.pdf $(DOC_INSTALL_DIR)
+ $(MKDIR_P) $(MAN_INSTALL_DIR)
+ $(INSTALL_DATA) man5/* $(MAN_INSTALL_DIR)
+ $(MKDIR_P) $(HTML_INSTALL_DIR)
+ $(INSTALL_DATA) tapsets/* $(HTML_INSTALL_DIR)
+endif
diff --git a/doc/SystemTap_Tapset_Reference/Makefile.in b/doc/SystemTap_Tapset_Reference/Makefile.in
index b61be1b7..f840d8c5 100644
--- a/doc/SystemTap_Tapset_Reference/Makefile.in
+++ b/doc/SystemTap_Tapset_Reference/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,14 +16,6 @@
# Makefile.am --- automake input file for systemtap tapset reference manual
-###
-# The build process is as follows (targets):
-# (xmldocs) [by docproc]
-# file.tmpl --> file.xml +--> file.ps (psdocs) [by xmlto]
-# +--> file.pdf (pdfdocs) [by xmlto]
-# +--> DIR=file (htmldocs) [by xmlto]
-# +--> man/ (mandocs) [by xmlto]
-
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -40,7 +32,7 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
-bin_PROGRAMS = docproc$(EXEEXT)
+noinst_PROGRAMS = docproc$(EXEEXT)
subdir = doc/SystemTap_Tapset_Reference
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -50,21 +42,19 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(bin_PROGRAMS)
-am_docproc_OBJECTS = docproc.$(OBJEXT)
-docproc_OBJECTS = $(am_docproc_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+docproc_SOURCES = docproc.c
+docproc_OBJECTS = docproc.$(OBJEXT)
docproc_LDADD = $(LDADD)
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(docproc_SOURCES)
-DIST_SOURCES = $(docproc_SOURCES)
+SOURCES = docproc.c
+DIST_SOURCES = docproc.c
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -115,6 +105,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PIELDFLAGS = @PIELDFLAGS@
+PKG_CONFIG = @PKG_CONFIG@
PROCFLAGS = @PROCFLAGS@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
@@ -146,6 +137,7 @@ have_dvips = @have_dvips@
have_latex = @have_latex@
have_latex2html = @have_latex2html@
have_ps2pdf = @have_ps2pdf@
+have_xmlto = @have_xmlto@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
@@ -157,6 +149,10 @@ localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
+nspr_CFLAGS = @nspr_CFLAGS@
+nspr_LIBS = @nspr_LIBS@
+nss_CFLAGS = @nss_CFLAGS@
+nss_LIBS = @nss_LIBS@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -173,7 +169,9 @@ sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-docproc_SOURCES = docproc.c
+DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap
+MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man5
+HTML_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap/tapsets
SRCTREE = $(abs_top_srcdir)/
DOCPROC = $(abs_builddir)/docproc
all: all-am
@@ -209,29 +207,9 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- if test -f $$p \
- ; then \
- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- else :; fi; \
- done
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
- rm -f "$(DESTDIR)$(bindir)/$$f"; \
- done
-
-clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
docproc$(EXEEXT): $(docproc_OBJECTS) $(docproc_DEPENDENCIES)
@rm -f docproc$(EXEEXT)
$(LINK) $(docproc_OBJECTS) $(docproc_LDADD) $(LIBS)
@@ -263,8 +241,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -276,8 +254,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -287,12 +265,13 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
+ here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
@@ -335,9 +314,6 @@ check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
- for dir in "$(DESTDIR)$(bindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -362,9 +338,10 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+@BUILD_REFDOCS_FALSE@install-data-hook:
clean: clean-am
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
@@ -383,10 +360,12 @@ info: info-am
info-am:
install-data-am:
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
install-dvi: install-dvi-am
-install-exec-am: install-binPROGRAMS
+install-exec-am:
install-html: install-html-am
@@ -417,42 +396,53 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-binPROGRAMS
+uninstall-am:
-.MAKE: install-am install-strip
+.MAKE: install-am install-data-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic ctags distclean distclean-compile \
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-noinstPROGRAMS ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-binPROGRAMS \
- install-data install-data-am install-dvi install-dvi-am \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-hook install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-binPROGRAMS
-
+ uninstall-am
-all: pdfdocs htmldocs mandocs
-xmldocs: docproc
- SRCTREE=$(SRCTREE) $(DOCPROC) doc $(abs_srcdir)/tapsets.tmpl > tapsets.xml
+@BUILD_REFDOCS_TRUE@all: tapsets.pdf stamp-htmldocs stamp-mandocs
+@BUILD_REFDOCS_TRUE@tapsets.xml: docproc $(shell find $(SRCTREE) -name '*.stp')
+@BUILD_REFDOCS_TRUE@ SRCTREE=$(SRCTREE) $(DOCPROC) doc $(abs_srcdir)/tapsets.tmpl > tapsets.xml.new
+@BUILD_REFDOCS_TRUE@ if cmp tapsets.xml.new tapsets.xml >/dev/null ; then \
+@BUILD_REFDOCS_TRUE@ echo tapsets.xml unchanged; \
+@BUILD_REFDOCS_TRUE@ else \
+@BUILD_REFDOCS_TRUE@ mv tapsets.xml.new tapsets.xml; \
+@BUILD_REFDOCS_TRUE@ fi
-htmldocs: xmldocs
- xmlto html -o tapsets tapsets.xml
+@BUILD_REFDOCS_TRUE@stamp-htmldocs: tapsets.xml
+@BUILD_REFDOCS_TRUE@ xmlto html -o tapsets tapsets.xml
+@BUILD_REFDOCS_TRUE@ touch stamp-htmldocs
-pdfdocs: xmldocs
- xmlto pdf tapsets.xml
+@BUILD_REFDOCS_TRUE@tapsets.pdf: tapsets.xml
+@BUILD_REFDOCS_TRUE@ xmlto pdf tapsets.xml
-mandocs: xmldocs
- xmlto man -o man5 tapsets.xml
+@BUILD_REFDOCS_TRUE@stamp-mandocs: tapsets.xml
+@BUILD_REFDOCS_TRUE@ xmlto man -o man5 tapsets.xml
+@BUILD_REFDOCS_TRUE@ touch stamp-mandocs
#FIXME need to figure out where to install things appropriately
#installmandocs: mandocs
-# $(MKDIR_P) /usr/local/man/man5/
-# install Documentation/DocBook/man/*.5.gz /usr/local/man/man5/
+@BUILD_REFDOCS_TRUE@install-data-hook:
+@BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR)
+@BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) tapsets.pdf $(DOC_INSTALL_DIR)
+@BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(MAN_INSTALL_DIR)
+@BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) man5/* $(MAN_INSTALL_DIR)
+@BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(HTML_INSTALL_DIR)
+@BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) tapsets/* $(HTML_INSTALL_DIR)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/doc/SystemTap_Tapset_Reference/tapsets.tmpl b/doc/SystemTap_Tapset_Reference/tapsets.tmpl
index 00dcd92f..f1750d45 100644
--- a/doc/SystemTap_Tapset_Reference/tapsets.tmpl
+++ b/doc/SystemTap_Tapset_Reference/tapsets.tmpl
@@ -8,7 +8,7 @@
<authorgroup>
<author>
- <firstname>Willliam</firstname>
+ <firstname>William</firstname>
<surname>Cohen</surname>
<affiliation>
<address>
@@ -19,7 +19,7 @@
</authorgroup>
<copyright>
- <year>2008</year>
+ <year>2008, 2009</year>
<holder>Red Hat, Inc.</holder>
</copyright>
@@ -92,11 +92,10 @@
</para>
<para>
- In some cases, tapsets do not have a <replaceable>return</replaceable> v
-alue. This
- simply means that the tapset does not extract anything from the kernel.
-This is common among
- asynchronous events such as timers, exit functions, and print functions.
+ In some cases, tapsets do not have a <replaceable>return</replaceable>
+ value. This simply means that the tapset does not extract anything from
+ the kernel. This is common among asynchronous events such as timers,
+ exit functions, and print functions.
</para>
<!--
@@ -122,6 +121,8 @@ This is common among
and the current register values for the processor.
</para>
!Itapset/context.stp
+!Itapset/context-symbols.stp
+!Itapset/context-unwind.stp
</chapter>
<chapter id="timestamp_stp">