summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base/be_order.stp
diff options
context:
space:
mode:
authorjistone <jistone>2006-12-08 02:17:09 +0000
committerjistone <jistone>2006-12-08 02:17:09 +0000
commit16e8f21f336bcfc16a1174be8a8143668dbd0118 (patch)
treec967ecdec501b69910a16ee0f50317434ed49675 /testsuite/systemtap.base/be_order.stp
parente0d86324628566cedd055ed038fd487c12db676a (diff)
downloadsystemtap-steved-16e8f21f336bcfc16a1174be8a8143668dbd0118.tar.gz
systemtap-steved-16e8f21f336bcfc16a1174be8a8143668dbd0118.tar.xz
systemtap-steved-16e8f21f336bcfc16a1174be8a8143668dbd0118.zip
2006-12-07 Josh Stone <joshua.i.stone@intel.com>
PR 3624. * tapsets.cxx (struct be_derived_probe): Add a new priority parameter for begin/end probes, and a comparison function for sorting. (be_builder::build): Parse the priority & pass it to be_derived_probe. (be_derived_probe_group::emit_module_init, emit_module_exit): Sort the probe list by priority before emitting any code. (register_standard_tapsets): Add new begin/end variants. * parse.cxx (parser::parse_literal): Allow negative numeric literals, by checking for a '-' unary operator right before a number. testsuite/ * systemtap.base/be_order.exp, systemtap.base/be_order.stp, semok/beginend.stp: New tests for begin/end priorities. * lib/stap_run.exp: Anchor OUTPUT_CHECK_STRING to the end of output. * systemtap.base/maxactive.exp: Fix to compare output to the end. * systemtap.base/probefunc.exp: Ditto. * systemtap.samples/ioblocktest.exp: Ditto. * systemtap.samples/ioblocktest.stp: Ditto. * systemtap.samples/tcptest.exp: Ditto.
Diffstat (limited to 'testsuite/systemtap.base/be_order.stp')
-rw-r--r--testsuite/systemtap.base/be_order.stp37
1 files changed, 37 insertions, 0 deletions
diff --git a/testsuite/systemtap.base/be_order.stp b/testsuite/systemtap.base/be_order.stp
new file mode 100644
index 00000000..eb8ef0c8
--- /dev/null
+++ b/testsuite/systemtap.base/be_order.stp
@@ -0,0 +1,37 @@
+/*
+ * add.stp
+ *
+ * Check that ordering of begin/end probes works
+ */
+
+probe begin { log("systemtap starting probe") }
+probe end { log("systemtap ending probe") }
+
+global beginstr, endstr
+
+probe begin { beginstr .= "c" }
+probe begin(1) { beginstr .= "d" }
+probe begin(-1) { beginstr .= "b" }
+probe begin(0) { beginstr .= "c" }
+probe begin(9223372036854775807) { beginstr .= "e" }
+probe begin(-9223372036854775808) { beginstr .= "a" }
+
+probe end { endstr .= "x" }
+probe end(1) { endstr .= "y" }
+probe end(-1) { endstr .= "w" }
+probe end(0) { endstr .= "x" }
+probe end(9223372036854775807) {
+ endstr .= "z"
+
+ if (beginstr == "abccde")
+ log("systemtap test success")
+ else
+ printf("systemtap test failure - beginstr:%s != abccde\n", beginstr)
+
+ if (endstr == "vwxxyz")
+ log("systemtap test success")
+ else
+ printf("systemtap test failure - endstr:%s != vwxxyz\n", endstr)
+}
+probe end(-9223372036854775808) { endstr .= "v" }
+