从Linux内核的2.6某个版本开始,内核引入了导出符号的机制。只有在内核中使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL导出的符号才能在内核模块中直接使用。然而,内核并没有导出所有的符号。例如,在3.8.0的内核中,do_page_fault就没有被导出。
而我的内核模块中需要使用do_page_fault,那么有那些方法呢?这些方法分别有什么优劣呢?
下面以do_page_fault为例,一一进行分析:
#cat /proc/kallsyms | grep "\<do_page_fault\>" | awk ‘{print $1}‘
不过,根据我的实际使用经验,/proc/kallsyms中符号的数量比Systemp.map-<kernel-version>要少一些。
获取Linux内核未导出符号的几种方式,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/bittorrent/p/3804141.html