aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xen/symbols.h
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-07-22 16:44:33 +0000
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-07-22 16:44:33 +0000
commitc1f454ab0cce212413c558afc2c00f1ed8090f81 (patch)
tree674fe04ae76526b05123302d7d08bf60acce8dcb /xen/include/xen/symbols.h
parentb6d8dea8bfde631c3c1aa723627717c5b8712306 (diff)
downloadxen-c1f454ab0cce212413c558afc2c00f1ed8090f81.tar.gz
xen-c1f454ab0cce212413c558afc2c00f1ed8090f81.tar.bz2
xen-c1f454ab0cce212413c558afc2c00f1ed8090f81.zip
Port kallsyms to Xen, as 'symbols'.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/include/xen/symbols.h')
-rw-r--r--xen/include/xen/symbols.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/xen/include/xen/symbols.h b/xen/include/xen/symbols.h
new file mode 100644
index 0000000000..a30b82c002
--- /dev/null
+++ b/xen/include/xen/symbols.h
@@ -0,0 +1,45 @@
+#ifndef _XEN_SYMBOLS_H
+#define _XEN_SYMBOLS_H
+
+#include <xen/config.h>
+#include <xen/types.h>
+
+#define KSYM_NAME_LEN 127
+
+extern int is_kernel_text(unsigned long addr);
+extern unsigned long kernel_text_end(void);
+
+/* Lookup an address. */
+const char *symbols_lookup(unsigned long addr,
+ unsigned long *symbolsize,
+ unsigned long *offset,
+ char *namebuf);
+
+/* Replace "%s" in format with address, if found */
+extern void __print_symbol(const char *fmt, unsigned long address);
+
+/* This macro allows us to keep printk typechecking */
+static void __check_printsym_format(const char *fmt, ...)
+ __attribute__((format(printf,1,2)));
+ static inline void __check_printsym_format(const char *fmt, ...)
+{
+}
+
+/* ia64 and ppc64 use function descriptors, which contain the real address */
+#if defined(CONFIG_IA64) || defined(CONFIG_PPC64)
+#define print_fn_descriptor_symbol(fmt, addr) \
+do { \
+ unsigned long *__faddr = (unsigned long*) addr; \
+ print_symbol(fmt, __faddr[0]); \
+} while (0)
+#else
+#define print_fn_descriptor_symbol(fmt, addr) print_symbol(fmt, addr)
+#endif
+
+#define print_symbol(fmt, addr) \
+do { \
+ __check_printsym_format(fmt, ""); \
+ __print_symbol(fmt, addr); \
+} while(0)
+
+#endif /*_XEN_SYMBOLS_H*/