summaryrefslogtreecommitdiffstats
path: root/tapsets.h
diff options
context:
space:
mode:
authorgraydon <graydon>2005-07-13 04:47:54 +0000
committergraydon <graydon>2005-07-13 04:47:54 +0000
commitf8220a7b945a3be7975fb2610ca1c79119594534 (patch)
treed733adba9033184c8250971ce096e51b3dade156 /tapsets.h
parent6f0257ecf703373555ef06044cc25c8083859616 (diff)
downloadsystemtap-steved-f8220a7b945a3be7975fb2610ca1c79119594534.tar.gz
systemtap-steved-f8220a7b945a3be7975fb2610ca1c79119594534.tar.xz
systemtap-steved-f8220a7b945a3be7975fb2610ca1c79119594534.zip
2005-07-12 Graydon Hoare <graydon@redhat.com>
* elaborate.cxx (semantic_pass_symbols): Only enter body if non-null. (semantic_pass_types): Likewise. (semantic_pass): Pass session to register_standard_tapsets. * translate.cxx (builtin_collector): New struct. (hookup_builtins): New function. (translate_pass): Only translate functions with bodies. (c_unparser::emit_common_header): Likewise, and call hookup_builtins. * tapsets.hh (builtin_function): New class. (register_standard_tapsets): Change parameter to session. * tapsets.cc (bultin_function::*): Implement class. (register_standard_tapsets): Register printk, log, warn. * testsuite/transok/six.stp: New test.
Diffstat (limited to 'tapsets.h')
-rw-r--r--tapsets.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/tapsets.h b/tapsets.h
index 774fa59b..e2f5a8db 100644
--- a/tapsets.h
+++ b/tapsets.h
@@ -13,8 +13,26 @@
#include "staptree.h"
#include "elaborate.h"
+
+// Helper class for describing builtin functions. Calls to builtins
+// are typechecked and emitted, but the builtin definitions are *not*
+// emitted by the translator (in fact, they have no definitions in
+// systemtap language); they are assumed to exist outside the
+// translator, in the runtime library.
+
+class
+builtin_function
+{
+ functiondecl *f;
+ token *id(std::string const & name);
+ public:
+ builtin_function(exp_type e, std::string const & name);
+ builtin_function & arg(exp_type e, std::string const & name);
+ void bind(systemtap_session & sess);
+};
+
void
-register_standard_tapsets(match_node * root);
+register_standard_tapsets(systemtap_session & sess);
#endif // TAPSETS_H