作者andytzeng (Ya-Shiuan)
看板LinuxDev
标题Re: EXPORT_SYMPOL的功用
时间Tue Dec 26 21:46:12 2006
※ 引述《omnl ()》之铭言:
: 有先GOOGLE一下 大概知道它的用处
: 我好奇的是 我在不同Module间
: 用extern一样可以达到module间互相呼叫的功能
: 哪EXPORT_SYMPOL有什麽特别的效果吗
可以查一下 export_symbol 这个 macro 会发现
#define __EXPORT_SYMBOL(sym, sec) \
extern typeof(sym) sym; \
__CRC_SYMBOL(sym, sec) \
static const char __kstrtab_##sym[] \
__attribute__((section("__ksymtab_strings"))) \
= MODULE_SYMBOL_PREFIX #sym; \
static const struct kernel_symbol __ksymtab_##sym \
__attribute_used__ \
__attribute__((section("__ksymtab" sec), unused)) \
= { (unsigned long)&sym, __kstrtab_##sym }
#define EXPORT_SYMBOL(sym) \
__EXPORT_SYMBOL(sym, "")
里面也帮你做了 extern 的动作,换言之 extern 是最基本的要求(
这样 linker 才知道要从这 variable or function 在其他的 object file)
不过他额外帮你做了很多 symbol table 的动作,包括 version 等等计算
我也不是很熟悉,请高手继续补充
自己的经验单纯 extern ,纵使使用上正常,但会出现 xxxx symbol unknown
的 kernel message
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.188.188