【发布时间】:2016-10-20 05:52:37
【问题描述】:
我正在阅读 LDD3,对 __init 和 __exit 函数调用中静态存储类的使用有疑问。 http://static.lwn.net/images/pdf/LDD3/ch02.pdf
"初始化函数应该声明为静态的,因为它们是 不意味着在特定文件之外可见;没有硬 但是,关于这一点的规则,因为没有函数被导出到其余的 内核,除非明确要求”
但是内核可以通过 insmod 和 rmmod 系统调用来使用 init 和 exit 函数。如果静态函数是仅对同一文件中的其他函数可见的函数,那么内核如何能够使用我们模块中定义的静态函数 __init 和 __exit ?
【问题讨论】:
-
基本上它是通过链接器完成的。特殊的
pragma将这些函数放在对象中的某个部分。核心代码在模块即将初始化的部分寻找那些函数,
标签: c linux linux-kernel driver