EXPORT_SYMBOL的用法

本文深入探讨了Linux内核编程中如何使用HEAD文件导入函数原型,以及EXPORT_SYMBOL标签在导出内核函数以供模块调用方面的应用。通过实例展示了如何在不同场景下灵活运用这些技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。


Linux symbol export method:

[1] If we want export the symbol in a module, just use theEXPORT_SYMBOL(xxxx) in the C or H file.
    And compile the module by adding the compile flag -DEXPORT_SYMTAB.
    Then we can use the xxxx in the other module.


[2] If we want export some symbol in Kernel that is not in a module such as xxxx in the /arch/ppc/fec.c.
    Firstly, define the xxxx
 in the fec.c;
    Secondly, make a new file which contain the "extern" define the 
xxxx(for example, extern int xxxx
);
    Lastly, in the ppc_ksyms.c we includes the new file, and add theEXPORT_SYMBOL(
xxxx
).
    Then we can use the 
xxxx.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值