On Fri, Jul 24, 2015 at 01:49:42PM +0800, Navy wrote:
Hi To my understanding, EXPORT_SYMBOL() is used to export a symbol in kernel/modules. The the address of the all sysbols is in /proc/kallsyms. Only symbols exported by EXPORT_SYMBOL() is listed its CRC information in Module.symvers. So I think the CRC is the key to export a symbol. I do an experiment:
---mdir | |---Mod1 | |---mod1.c | |---Makefile | |---Mod2 |---mod2.c |---Makefile
mod1.c define function *void myfunc(void)* and exported by EXPORT_SYMBOL() and the CRC info is showed in Module.symvers. mod2.c reference *myfunc* and compiled successfully. BUT when mod2.ko is insmoded, "unknown symbol" is complained. mod2.ko CAN'T BE INSMOD.
Use 'modprobe' after "properly" installing the kernel modules to the correct location, and then all will be fine. greg k-h