发现在init.h中和module.h文件中同时定义了late_initcall方法
问题相关代码,请勿粘贴截图
** init.h**中定义如下
#define late_initcall(fn) __define_initcall(fn, 7)
** module.h**中定义如下
#define late_initcall(fn) module_init(fn)
运行结果及报错内容
代码驱动包中将几个ko驱动模块合并为ipk文件,运行加载发现使用late_initcall的驱动代码并没有最后运行。我怀疑是因为module.h出了问题。但是屏蔽module.h下的late_initcall会报编译错误
错误如下:error: type defaults to 'int' in declaration of 'late_initcall' [-Werror=implicit-int]
我的解答思路和尝试过的方法
我尝试过将module.h中的方法注释掉发现没有用处
还尝试过将late_initcall替换为module_init,结果运行是一样的,因此我可以断定就是使用的module.h中的定义,但是这样并不是我想要的驱动加载顺序的结果