From 6e3347a9815f4a457b6393a22f21b6f2c6b588af Mon Sep 17 00:00:00 2001 From: fche Date: Fri, 2 Jun 2006 18:09:29 +0000 Subject: 2006-06-02 Frank Ch. Eigler 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. --- tapsets.cxx | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to 'tapsets.cxx') 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 // ------------------------------------------------------------------------ @@ -271,6 +270,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 const & parameters, + vector & 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)); -- cgit