summaryrefslogtreecommitdiffstats
path: root/runtime/builtin_functions.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 /runtime/builtin_functions.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 'runtime/builtin_functions.h')
-rw-r--r--runtime/builtin_functions.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/runtime/builtin_functions.h b/runtime/builtin_functions.h
new file mode 100644
index 00000000..13be00fb
--- /dev/null
+++ b/runtime/builtin_functions.h
@@ -0,0 +1,60 @@
+#ifndef _BUILTIN_FUNCTIONS_
+#define _BUILTIN_FUNCTIONS_
+
+/* Builtin function definitions.
+ * Copyright (C) 2005 Red Hat Inc.
+ *
+ * This file is part of systemtap, and is free software. You can
+ * redistribute it and/or modify it under the terms of the GNU General
+ * Public License (GPL); either version 2, or (at your option) any
+ * later version.
+ */
+
+/*
+ * This file contains definitions for "builtin functions" which are
+ * registered in the systemtap translator, but given no definition.
+ * The translator emits calls to builtins exactly the same way it
+ * emits calls to functions written in the systemtap language; the
+ * only difference is that this file (or a C tapset) must supply the
+ * definition.
+ *
+ * Every builtin function "foo" called by a systemtap script is
+ * translated to a C call to a C function named "function_foo". This
+ * is the function you must provide in this file. In addition, the
+ * translator emits a
+ *
+ * #define _BUILTIN_FUNCTION_foo_
+ *
+ * symbol for each such function called, which you can use to elide
+ * function definitions which are not used by a given systemtap
+ * script.
+ */
+
+#ifdef _BUILTIN_FUNCTION_printk_
+static void
+function_printk (struct context *c)
+{
+ printk (KERN_INFO, c->locals[c->nesting].function_printk.message);
+}
+#endif /* _BUILTIN_FUNCTION_printk_ */
+
+
+#ifdef _BUILTIN_FUNCTION_log_
+static void
+function_log (struct context *c)
+{
+ _stp_log (c->locals[c->nesting].function_log.message);
+}
+#endif /* _BUILTIN_FUNCTION_log_ */
+
+
+#ifdef _BUILTIN_FUNCTION_warn_
+static void
+function_warn (struct context *c)
+{
+ _stp_warn (c->locals[c->nesting].function_warn.message);
+}
+#endif /* _BUILTIN_FUNCTION_warn_ */
+
+
+#endif /* _BUILTIN_FUNCTIONS_ */