我在尝试使用 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的源代码?
谢谢。
我在尝试使用 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.4.20 中不包含 msleep 和其他变体的定义。必须使用内核的 schedule_timeout() 函数自己实现它。
此外,在这里可以浏览内核代码:lxr.linux.no
首先,sleep() 不是系统调用,它是在 libc 中使用 sys_nanosleep 系统调用实现的。
所以内核中没有睡眠,使用 msleep、mdelay 或 usleep_range (include/linux/delay.h) 或者可能是 wait_event_ 函数之一 (include/linux/wait.h)