diff options
author | Mark Wielaard <mjw@redhat.com> | 2009-03-20 14:33:38 +0100 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2009-03-20 14:33:38 +0100 |
commit | 8813a27cd47e035806cb3d859cfd95d3e0fb76bc (patch) | |
tree | 3455d8db07f2f2e7b9e5f9af1c3d9c28afdd238e /tapsets.cxx | |
parent | feec037da31161fdd4fa8cac7159ec7c99cc46a0 (diff) | |
download | systemtap-steved-8813a27cd47e035806cb3d859cfd95d3e0fb76bc.tar.gz systemtap-steved-8813a27cd47e035806cb3d859cfd95d3e0fb76bc.tar.xz systemtap-steved-8813a27cd47e035806cb3d859cfd95d3e0fb76bc.zip |
Emit vma callbacks for itrace.
* tapsets.cxx (itrace_derived_probe_group::emit_module_decls): Emit vma
callbacks.
(itrace_derived_probe_group::emit_module_init): Activate vma callbacks.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r-- | tapsets.cxx | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tapsets.cxx b/tapsets.cxx index a668f016..8118c838 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -6453,6 +6453,23 @@ itrace_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline(-1) << "return rc;"; s.op->newline(-1) << "}"; + // Emit vma callbacks. + s.op->newline() << "static struct stap_task_finder_target stap_itrace_vmcbs[] = {"; + s.op->indent(1); + if (! probes_by_path.empty()) + { + for (p_b_path_iterator it = probes_by_path.begin(); + it != probes_by_path.end(); it++) + emit_vma_callback_probe_decl (s, it->first, (int64_t)0); + } + if (! probes_by_pid.empty()) + { + for (p_b_pid_iterator it = probes_by_pid.begin(); + it != probes_by_pid.end(); it++) + emit_vma_callback_probe_decl (s, "", it->first); + } + s.op->newline(-1) << "};"; + s.op->newline() << "static struct stap_itrace_probe stap_itrace_probes[] = {"; s.op->indent(1); @@ -6494,6 +6511,14 @@ itrace_derived_probe_group::emit_module_init (systemtap_session& s) return; s.op->newline(); + s.op->newline() << "/* ---- itrace vma callbacks ---- */"; + s.op->newline() << "for (i=0; i<ARRAY_SIZE(stap_itrace_vmcbs); i++) {"; + s.op->indent(1); + s.op->newline() << "struct stap_task_finder_target *r = &stap_itrace_vmcbs[i];"; + s.op->newline() << "rc = stap_register_task_finder_target(r);"; + s.op->newline(-1) << "}"; + + s.op->newline(); s.op->newline() << "/* ---- itrace probes ---- */"; s.op->newline() << "for (i=0; i<" << num_probes << "; i++) {"; |