Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 2c560ace1531870715fdfdae36fa9d75f4e63ae1 67 lines 1.9 kB view raw
1/* Rewritten and vastly simplified by Rusty Russell for in-kernel 2 * module loader: 3 * Copyright 2002 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation 4 */ 5#ifndef _LINUX_KALLSYMS_H 6#define _LINUX_KALLSYMS_H 7 8#include <linux/config.h> 9 10#define KSYM_NAME_LEN 127 11 12#ifdef CONFIG_KALLSYMS 13/* Lookup the address for a symbol. Returns 0 if not found. */ 14unsigned long kallsyms_lookup_name(const char *name); 15 16/* Lookup an address. modname is set to NULL if it's in the kernel. */ 17const char *kallsyms_lookup(unsigned long addr, 18 unsigned long *symbolsize, 19 unsigned long *offset, 20 char **modname, char *namebuf); 21 22/* Replace "%s" in format with address, if found */ 23extern void __print_symbol(const char *fmt, unsigned long address); 24 25#else /* !CONFIG_KALLSYMS */ 26 27static inline unsigned long kallsyms_lookup_name(const char *name) 28{ 29 return 0; 30} 31 32static inline const char *kallsyms_lookup(unsigned long addr, 33 unsigned long *symbolsize, 34 unsigned long *offset, 35 char **modname, char *namebuf) 36{ 37 return NULL; 38} 39 40/* Stupid that this does nothing, but I didn't create this mess. */ 41#define __print_symbol(fmt, addr) 42#endif /*CONFIG_KALLSYMS*/ 43 44/* This macro allows us to keep printk typechecking */ 45static void __check_printsym_format(const char *fmt, ...) 46__attribute__((format(printf,1,2))); 47static inline void __check_printsym_format(const char *fmt, ...) 48{ 49} 50/* ia64 and ppc64 use function descriptors, which contain the real address */ 51#if defined(CONFIG_IA64) || defined(CONFIG_PPC64) 52#define print_fn_descriptor_symbol(fmt, addr) \ 53do { \ 54 unsigned long *__faddr = (unsigned long*) addr; \ 55 print_symbol(fmt, __faddr[0]); \ 56} while (0) 57#else 58#define print_fn_descriptor_symbol(fmt, addr) print_symbol(fmt, addr) 59#endif 60 61#define print_symbol(fmt, addr) \ 62do { \ 63 __check_printsym_format(fmt, ""); \ 64 __print_symbol(fmt, addr); \ 65} while(0) 66 67#endif /*_LINUX_KALLSYMS_H*/