diff options
Diffstat (limited to 'doc')
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): -> sys_socketcall - 1159 ftp(7223): -> sys_socket - 2173 ftp(7223): -> __sock_create - 2286 ftp(7223): -> sock_alloc_inode - 2737 ftp(7223): <- sock_alloc_inode - 3349 ftp(7223): -> sock_alloc - 3389 ftp(7223): <- sock_alloc - 3417 ftp(7223): <- __sock_create - 4117 ftp(7223): -> sock_create - 4160 ftp(7223): <- sock_create - 4301 ftp(7223): -> sock_map_fd - 4644 ftp(7223): -> sock_map_file - 4699 ftp(7223): <- sock_map_file - 4715 ftp(7223): <- sock_map_fd - 4732 ftp(7223): <- sys_socket - 4775 ftp(7223): <- sys_socketcall +0 ftp(7223): -> sys_socketcall +1159 ftp(7223): -> sys_socket +2173 ftp(7223): -> __sock_create +2286 ftp(7223): -> sock_alloc_inode +2737 ftp(7223): <- sock_alloc_inode +3349 ftp(7223): -> sock_alloc +3389 ftp(7223): <- sock_alloc +3417 ftp(7223): <- __sock_create +4117 ftp(7223): -> sock_create +4160 ftp(7223): <- sock_create +4301 ftp(7223): -> sock_map_fd +4644 ftp(7223): -> sock_map_file +4699 ftp(7223): <- sock_map_file +4715 ftp(7223): <- sock_map_fd +4732 ftp(7223): <- sys_socket +4775 ftp(7223): <- 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><-</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><-</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 << 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"> |