简介:
简介了内核中 EXPORT_SYMBOL的含义和用法
内核中宏EXPORT_SYMBOL 用意:
module的KERNEL的函数调用刚好和用户态编译程序不同。
因为模块运行在内核空间,不能直接调用应用程序库,只能调用内核函数。 EXPORTSYMBOL宏的作用就是把内核函数的符号导出。符号的意思就是函数的 入口地址。
module不需要也不可能在连接时候resolve all the requested symbols。而是在运行时 到KERNEL中去找(由KERNEL中的函数loadmodule()中的_findsymbol 做)。 KERNEL中有 一个符号表,就是EXPORTSYMBOL的名字表。如果module 引用了一个KERNEL中的未被 EXPORTSYMBOL的符号,就找不到。模块的加载就不成功。
如果非要这样,可以用写上绝对地址的函数指针来调用未被EXPORTSYMBOL的函数。
因为模块运行在内核空间,不能直接调用应用程序库,只能调用内核函数。 EXPORTSYMBOL宏的作用就是把内核函数的符号导出。符号的意思就是函数的 入口地址。
module不需要也不可能在连接时候resolve all the requested symbols。而是在运行时 到KERNEL中去找(由KERNEL中的函数loadmodule()中的_findsymbol 做)。 KERNEL中有 一个符号表,就是EXPORTSYMBOL的名字表。如果module 引用了一个KERNEL中的未被 EXPORTSYMBOL的符号,就找不到。模块的加载就不成功。
如果非要这样,可以用写上绝对地址的函数指针来调用未被EXPORTSYMBOL的函数。
No comments:
Post a Comment