summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorfche <fche>2006-06-02 18:09:29 +0000
committerfche <fche>2006-06-02 18:09:29 +0000
commit6e3347a9815f4a457b6393a22f21b6f2c6b588af (patch)
tree601c0606344da1c306fe96ee32a264a29c42b5a0 /tapsets.cxx
parent988b22347d6598de909457326d9a7a470e3f631c (diff)
downloadsystemtap-steved-6e3347a9815f4a457b6393a22f21b6f2c6b588af.tar.gz
systemtap-steved-6e3347a9815f4a457b6393a22f21b6f2c6b588af.tar.xz
systemtap-steved-6e3347a9815f4a457b6393a22f21b6f2c6b588af.zip
2006-06-02 Frank Ch. Eigler <fche@elastic.org>
PR 2645. * stapprobes.5.in: Document "?" probe point suffix. * parse.cxx (parse_probe_point): Recognize "?" optional suffix. * elaborate.cxx (derive_probes): Observe probe_point->optional. * staptree.h, staptree.cxx: Corresponding changes. * tapsets.cxx (never_derived_probe, never_builder): New classes. (register_standard_tapsets): Support "never" probe point. * testsuite/buildok/six.stp, parseok/five.stp: Modifed tests. * translate.cxx (emit_module_init): Format "-t" (benchmarking) cycle-time reports similarly to "-v" (verbose) times.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx52
1 files changed, 50 insertions, 2 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index 048243bb..866c6757 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -187,7 +187,6 @@ derived_probe::emit_probe_epilogue (translator_output* o)
-
// ------------------------------------------------------------------------
// begin/end probes are run right during registration / deregistration
// ------------------------------------------------------------------------
@@ -272,6 +271,54 @@ be_derived_probe::emit_probe_entries (translator_output* o)
// ------------------------------------------------------------------------
+// never probes are never run
+// ------------------------------------------------------------------------
+
+struct never_derived_probe: public derived_probe
+{
+ never_derived_probe (probe* p): derived_probe (p) {}
+ never_derived_probe (probe* p, probe_point* l): derived_probe (p, l) {}
+
+ void emit_registrations (translator_output* o);
+ void emit_deregistrations (translator_output* o);
+ void emit_probe_entries (translator_output* o);
+};
+
+
+struct never_builder: public derived_probe_builder
+{
+ never_builder() {}
+ virtual void build(systemtap_session & sess,
+ probe * base,
+ probe_point * location,
+ std::map<std::string, literal *> const & parameters,
+ vector<derived_probe *> & finished_results)
+ {
+ finished_results.push_back(new never_derived_probe(base, location));
+ }
+};
+
+
+void
+never_derived_probe::emit_registrations (translator_output* o)
+{
+}
+
+
+void
+never_derived_probe::emit_deregistrations (translator_output* o)
+{
+}
+
+
+void
+never_derived_probe::emit_probe_entries (translator_output* o)
+{
+}
+
+
+
+// ------------------------------------------------------------------------
// Dwarf derived probes.
// ------------------------------------------------------------------------
@@ -4150,10 +4197,11 @@ bad_time:
void
register_standard_tapsets(systemtap_session & s)
{
- // Rudimentary binders for begin and end targets
s.pattern_root->bind("begin")->bind(new be_builder(true));
s.pattern_root->bind("end")->bind(new be_builder(false));
+ s.pattern_root->bind("never")->bind(new never_builder());
+
s.pattern_root->bind("timer")->bind_num("jiffies")->bind(new timer_builder());
s.pattern_root->bind("timer")->bind_num("jiffies")->bind_num("randomize")->bind(new timer_builder());
s.pattern_root->bind("timer")->bind_num("ms")->bind(new timer_builder(true));