diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2010-03-07 21:13:39 -0500 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2010-03-07 21:14:03 -0500 |
commit | 14f0bb1853f944681823fbc72460f6eac6b58f2d (patch) | |
tree | c67abd3e72cf104386ec06298786d72bb4cab51b /testsuite/systemtap.examples/general/varwatch.stp | |
parent | 01c829fe9f5a670ba37a970c66723e8737fe0287 (diff) | |
download | systemtap-steved-14f0bb1853f944681823fbc72460f6eac6b58f2d.tar.gz systemtap-steved-14f0bb1853f944681823fbc72460f6eac6b58f2d.tar.xz systemtap-steved-14f0bb1853f944681823fbc72460f6eac6b58f2d.zip |
new sample: varwatch
Diffstat (limited to 'testsuite/systemtap.examples/general/varwatch.stp')
-rw-r--r-- | testsuite/systemtap.examples/general/varwatch.stp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/testsuite/systemtap.examples/general/varwatch.stp b/testsuite/systemtap.examples/general/varwatch.stp new file mode 100644 index 00000000..845ca166 --- /dev/null +++ b/testsuite/systemtap.examples/general/varwatch.stp @@ -0,0 +1,28 @@ +#! /usr/bin/env stap + +global var, varerr + +probe $1 { + t=tid() # or t=0 for thread-agnostic checking + if (@defined($2)) { + try { + newvar = $2; + if (var[t] != newvar) { + printf("%s %s changed in thread %d from %s to %s\n", pp(), @2, t, sprint(var[t]), sprint(newvar)); + var[t] = newvar; + } + } catch { varerr ++ } # error during $2 resolution or perhaps var[] assignment + } +} + +probe kprocess.release { # if using per-thread checking + delete var[$p->pid] # thread +} + +probe never { + var[0]="" # assigns a type to var in case no probes match $1 above +} + +probe error,end { + if (varerr) printf("%s %s access errors: %d", @1, @2, varerr); +} |