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