相关代码
错误提示:
CC [M] drivers/g200wo/fpga_config.o
Building modules, stage 2.
MODPOST 10 modules
ERROR: “__bad_udelay” [drivers/g200wo/fpga_config.ko] undefined!
make[1]: *** [__modpost] 错误 1
make: *** [modules] 错误 2
错误分析,找到udelay的来源为头文件include/linux/delay.h,该头文件未定义udelay,而是通过include文件include/asm/delay.h来获取udelay的定义。打开include/asm/delay.h可以看到udelay定义如下:
查MAX_UDELAY_MS定义在include/linux/delay.h中,值为3。
由此可知,源代码中udelay的参数为4000,大于3*1000,所以udelay实际上调用的是__bad_udelay()。此函数不存在。
这里其实是在检测参数的有效性