diff options
author | fche <fche> | 2006-06-02 18:09:29 +0000 |
---|---|---|
committer | fche <fche> | 2006-06-02 18:09:29 +0000 |
commit | 6e3347a9815f4a457b6393a22f21b6f2c6b588af (patch) | |
tree | 601c0606344da1c306fe96ee32a264a29c42b5a0 /tapsets.cxx | |
parent | 988b22347d6598de909457326d9a7a470e3f631c (diff) | |
download | systemtap-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.cxx | 52 |
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)); |