可加载的内核模块在RedHat中调用sleep()函数时出现问题

时间:2012-12-20 05:12:46

标签: linux redhat kernel-module

我在使用insmod尝试将LKM加载到RedHat内核时遇到了问题,但是它返回了以下错误: -

  

Insmod -f tmdq.o

     

tmdq.o:未解决的符号睡眠

为什么LKM内的sleep()系统调用会导致问题?我希望检查Red Hat Linux 3.2.2-5,Linux版本2.4.20-8中是否有其他名称给sleep()。

另外,有没有办法在线浏览RedHat的源代码,而无需下载?

感谢。

2 个答案:

答案 0 :(得分:0)

首先,sleep()不是系统调用,而是使用sys_nanosleep系统调用在libc中实现。

所以内核没有睡眠,使用msleep,mdelay或usleep_range(include / linux / delay.h)或者wait_event_函数之一(include / linux / wait.h)

答案 1 :(得分:0)

内核2.4.20中不包含msleep和其他变体的定义。必须使用内核的schedule_timeout()函数自己实现它。

此外,这是人们可以浏览内核代码的地方:lxr.linux.no