Re: EXPORT_SYMPOL的功用

看板LinuxDev作者 (Ya-Shiuan)時間18年前 (2006/12/26 21:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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
文章代碼(AID): #15aIPLVS (LinuxDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #15aIPLVS (LinuxDev)