summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
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));