0

我在尝试使用 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的源代码?

谢谢。

4

2 回答 2

0

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

此外,在这里可以浏览内核代码:lxr.linux.no

于 2012-12-21T07:37:56.723 回答
0

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

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

于 2012-12-20T07:09:16.800 回答