我知道内核模块有EXPORT_SYMBOL来静态地公开它的全局变量。 我的问题是: 是否可以在运行时导出EXPORT_SYMBOL?
我正在为多个IC模块开发一个内核驱动程序。 每个IC模块(ko)都有一个全局结构列表“ A”,以添加其自己的IC检测功能。并且将有一个动作来触发对“ A”的扫描。 该设计是每个IC有一个ko,主要功能有一个ko。 例如,有m1.ko,m2.ko和mm.ko。 我将insmod m1.ko(创建“ A”并添加其自己的检测功能), insmod m2.ko(检查“ A”是否存在,如果存在,添加它自己,如果不创建“ A”并添加)和insmod mm.ko(检查“ A”存在,如果存在,则触发对“ A”的扫描,否则什么都不做)。 我可以通过kallsym_lookup_name检查内核符号“ A”,但是当我创建“ A”(如果不存在)时,我找不到动态添加内核符号的函数。
有没有一种方法可以在运行时正确添加内核符号?还是有另一种方法可以实现目标?