C 程序员都知道,要使用某个外部的函数,应当#include某个头文件,这个头文件包含了那个函数的原型(prototype)。内核的头文件在 include/下,其中include/asm是个符号链接,指向你所用内核的具体的体系结构目录,比方说我的系统是i386的,那么include /asm就指向include/asm-i386
。
内核编程中我们不能链接libc库,不能使用libc库中的函数,所以很有些麻烦。一些重要的函数,象strcpy/strcmp/snprintf等,kernel也为我们实现并导出(export)了,而我们需要#include相关的头文件,在include/linux和include/asm中,你需要自己寻找你所要使用的函数在哪个头文件中声明,并将其#include进来.
Linux中EXPORT_SYMBOL的用法
EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。