关于编写内核模块导出符号的问题
各位大大:
我在编写内核模块的时候遇到一个疑惑:是不是在模块中用EXPORT_SYMBOL导出的符号都会出现在/proc/kallsyms中呢?
我编写了下面两个内核模块
// hello.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, world\n"); return 0;}static void hello_exit(void){ printk(KERN_ALERT "Goodbye, cruel world\n");}int say_hello(void){ printk(KERN_ALERT "Want me say hello again?\n"); return 0;}EXPORT_SYMBOL(say_hello);module_init(hello_init);module_exit(hello_exit);
// greeting.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");extern int say_hello(void);static int greeting_init(void){ say_hello(); return 0;}static void greeting_exit(void){ printk("No more greetings.\n");}module_init(greeting_init);module_exit(greeting_exit);
$ cat /proc/kallsyms | grep hellof7cf1000 t hello_exit [hello]f7cf100c t hello_init [hello]f7cf1000 t cleanup_module [hello]f7cf100c t init_module [hello]fbc9f74e t br_hello_timer_expired [bridge]fbca0027 t show_hello_timer [bridge]fbca00fb t store_hello_time [bridge]fbca0264 t set_hello_time [bridge]fbca01ee t show_hello_time [bridge]