task_finder.cxx - systemtap
Data types defined
Functions defined
Source code
#include "session.h"
#include "tapsets.h"
#include "task_finder.h"
#include "translate.h"
#include "util.h"
#include <cstring>
#include <string>
using namespace std;
using namespace __gnu_cxx;
struct task_finder_derived_probe: public derived_probe
{
task_finder_derived_probe (): derived_probe (0, 0) { assert(0); }
};
struct task_finder_derived_probe_group: public generic_dpg<task_finder_derived_probe>
{
public:
void emit_module_decls (systemtap_session& ) { }
void emit_module_init (systemtap_session& s);
void emit_module_post_init (systemtap_session& s);
void emit_module_exit (systemtap_session& s);
bool need_vma_tracker;
};
void
task_finder_derived_probe_group::emit_module_init (systemtap_session& s)
{
s.op->newline();
if (need_vma_tracker)
{
s.op->newline() << "/* ---- vma tracker ---- */";
s.op->newline() << "rc = _stp_vma_init();";
s.op->newline();
}
s.op->newline() << "/* ---- task finder ---- */";
s.op->newline() << "if (rc == 0) {";
s.op->newline(1) << "rc = stap_start_task_finder();";
s.op->newline() << "if (rc) {";
s.op->newline(1) << "stap_stop_task_finder();";
s.op->newline(-1) << "}";
s.op->newline(-1) << "}";
}
void
task_finder_derived_probe_group::emit_module_post_init (systemtap_session& s)
{
s.op->newline() << "/* ---- task finder ---- */";
s.op->newline() << "stap_task_finder_post_init();";
}
void
task_finder_derived_probe_group::emit_module_exit (systemtap_session& s)
{
s.op->newline();
s.op->newline() << "/* ---- task finder ---- */";
s.op->newline() << "stap_stop_task_finder();";
if (need_vma_tracker)
{
s.op->newline();
s.op->newline() << "/* ---- vma tracker ---- */";
s.op->newline() << "_stp_vma_done();";
}
}
void
enable_task_finder(systemtap_session& s)
{
if (! s.task_finder_derived_probes)
{
s.task_finder_derived_probes = new task_finder_derived_probe_group();
s.task_finder_derived_probes->need_vma_tracker = false;
}
}
void
enable_vma_tracker(systemtap_session& s)
{
enable_task_finder(s);
s.task_finder_derived_probes->need_vma_tracker = true;
}
bool
vma_tracker_enabled(systemtap_session& s)
{
return (s.task_finder_derived_probes
&& s.task_finder_derived_probes->need_vma_tracker);
}