diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-07-22 16:44:33 +0000 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-07-22 16:44:33 +0000 |
commit | c1f454ab0cce212413c558afc2c00f1ed8090f81 (patch) | |
tree | 674fe04ae76526b05123302d7d08bf60acce8dcb /xen/include/xen/symbols.h | |
parent | b6d8dea8bfde631c3c1aa723627717c5b8712306 (diff) | |
download | xen-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.h | 45 |
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*/ |