]>
Commit | Line | Data |
---|---|---|
b55bc428 | 1 | // -*- C++ -*- |
30263a73 | 2 | // Copyright (C) 2005-2010 Red Hat Inc. |
b55bc428 FCE |
3 | // |
4 | // This file is part of systemtap, and is free software. You can | |
5 | // redistribute it and/or modify it under the terms of the GNU General | |
6 | // Public License (GPL); either version 2, or (at your option) any | |
7 | // later version. | |
8 | ||
98afd80e FCE |
9 | #ifndef TAPSETS_H |
10 | #define TAPSETS_H | |
11 | ||
b55bc428 FCE |
12 | #include "config.h" |
13 | #include "staptree.h" | |
14 | #include "elaborate.h" | |
b55bc428 | 15 | |
b20febf3 FCE |
16 | void register_standard_tapsets(systemtap_session& sess); |
17 | std::vector<derived_probe_group*> all_session_groups(systemtap_session& s); | |
faea5e16 | 18 | std::string common_probe_init (derived_probe* p); |
912e8c59 | 19 | void common_probe_entryfn_prologue (translator_output* o, std::string statestr, |
faea5e16 | 20 | std::string probe, bool overload_processing = true); |
912e8c59 JS |
21 | void common_probe_entryfn_epilogue (translator_output* o, bool overload_processing = true); |
22 | ||
47e0478e | 23 | void register_tapset_been(systemtap_session& sess); |
93646f4d | 24 | void register_tapset_itrace(systemtap_session& sess); |
dd0e4fa7 | 25 | void register_tapset_mark(systemtap_session& sess); |
7a212aa8 | 26 | void register_tapset_procfs(systemtap_session& sess); |
912e8c59 | 27 | void register_tapset_timers(systemtap_session& sess); |
83ea76b1 | 28 | void register_tapset_perf(systemtap_session& sess); |
b84779a5 | 29 | void register_tapset_utrace(systemtap_session& sess); |
912e8c59 | 30 | |
7a212aa8 | 31 | |
912e8c59 JS |
32 | // ------------------------------------------------------------------------ |
33 | // Generic derived_probe_group: contains an ordinary vector of the | |
34 | // given type. It provides only the enrollment function. | |
b20febf3 | 35 | |
912e8c59 JS |
36 | template <class DP> struct generic_dpg: public derived_probe_group |
37 | { | |
38 | protected: | |
39 | std::vector <DP*> probes; | |
40 | public: | |
41 | generic_dpg () {} | |
42 | void enroll (DP* probe) { probes.push_back (probe); } | |
43 | }; | |
b55bc428 | 44 | |
7a212aa8 JS |
45 | |
46 | // ------------------------------------------------------------------------ | |
47 | // An update visitor that allows replacing assignments with a function call | |
48 | ||
49 | struct var_expanding_visitor: public update_visitor | |
50 | { | |
51 | static unsigned tick; | |
52 | std::stack<functioncall**> target_symbol_setter_functioncalls; | |
30263a73 | 53 | std::stack<defined_op*> defined_ops; |
a50de939 | 54 | std::set<std::string> valid_ops; |
87214add | 55 | const std::string *op; |
7a212aa8 | 56 | |
a50de939 | 57 | var_expanding_visitor (); |
7a212aa8 | 58 | void visit_assignment (assignment* e); |
87214add JS |
59 | void visit_pre_crement (pre_crement* e); |
60 | void visit_post_crement (post_crement* e); | |
61 | void visit_delete_statement (delete_statement* s); | |
30263a73 | 62 | void visit_defined_op (defined_op* e); |
87214add JS |
63 | |
64 | private: | |
65 | bool rewrite_lvalue(const token *tok, const std::string& eop, | |
66 | expression*& lvalue, expression*& rvalue); | |
7a212aa8 JS |
67 | }; |
68 | ||
b55bc428 | 69 | #endif // TAPSETS_H |
73267b89 JS |
70 | |
71 | /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ |