]>
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 | |
5261f7ab DS |
16 | void check_process_probe_kernel_support(systemtap_session& s); |
17 | ||
b20febf3 FCE |
18 | void register_standard_tapsets(systemtap_session& sess); |
19 | std::vector<derived_probe_group*> all_session_groups(systemtap_session& s); | |
faea5e16 | 20 | std::string common_probe_init (derived_probe* p); |
71db462b | 21 | void common_probe_entryfn_prologue (systemtap_session& s, std::string statestr, |
6eefe942 MW |
22 | std::string probe, std::string probe_type, |
23 | bool overload_processing = true); | |
f887a8c9 DS |
24 | void common_probe_entryfn_epilogue (systemtap_session& s, |
25 | bool overload_processing); | |
912e8c59 | 26 | |
47e0478e | 27 | void register_tapset_been(systemtap_session& sess); |
93646f4d | 28 | void register_tapset_itrace(systemtap_session& sess); |
dd0e4fa7 | 29 | void register_tapset_mark(systemtap_session& sess); |
7a212aa8 | 30 | void register_tapset_procfs(systemtap_session& sess); |
912e8c59 | 31 | void register_tapset_timers(systemtap_session& sess); |
8d9609f5 | 32 | void register_tapset_netfilter(systemtap_session& sess); |
83ea76b1 | 33 | void register_tapset_perf(systemtap_session& sess); |
b84779a5 | 34 | void register_tapset_utrace(systemtap_session& sess); |
e7d4410d | 35 | void register_tapset_java(systemtap_session& sess); |
912e8c59 | 36 | |
05fb3e0c WF |
37 | std::string path_remove_sysroot(const systemtap_session& sess, |
38 | const std::string& path); | |
7a212aa8 | 39 | |
912e8c59 JS |
40 | // ------------------------------------------------------------------------ |
41 | // Generic derived_probe_group: contains an ordinary vector of the | |
42 | // given type. It provides only the enrollment function. | |
b20febf3 | 43 | |
912e8c59 JS |
44 | template <class DP> struct generic_dpg: public derived_probe_group |
45 | { | |
46 | protected: | |
47 | std::vector <DP*> probes; | |
48 | public: | |
49 | generic_dpg () {} | |
50 | void enroll (DP* probe) { probes.push_back (probe); } | |
51 | }; | |
b55bc428 | 52 | |
7a212aa8 JS |
53 | |
54 | // ------------------------------------------------------------------------ | |
55 | // An update visitor that allows replacing assignments with a function call | |
56 | ||
57 | struct var_expanding_visitor: public update_visitor | |
58 | { | |
59 | static unsigned tick; | |
60 | std::stack<functioncall**> target_symbol_setter_functioncalls; | |
30263a73 | 61 | std::stack<defined_op*> defined_ops; |
a50de939 | 62 | std::set<std::string> valid_ops; |
87214add | 63 | const std::string *op; |
7a212aa8 | 64 | |
a50de939 | 65 | var_expanding_visitor (); |
7a212aa8 | 66 | void visit_assignment (assignment* e); |
87214add JS |
67 | void visit_pre_crement (pre_crement* e); |
68 | void visit_post_crement (post_crement* e); | |
69 | void visit_delete_statement (delete_statement* s); | |
30263a73 | 70 | void visit_defined_op (defined_op* e); |
87214add JS |
71 | |
72 | private: | |
73 | bool rewrite_lvalue(const token *tok, const std::string& eop, | |
74 | expression*& lvalue, expression*& rvalue); | |
7a212aa8 JS |
75 | }; |
76 | ||
b55bc428 | 77 | #endif // TAPSETS_H |
73267b89 JS |
78 | |
79 | /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ |