2012-12-20 38 views
0

我面臨的一個問題,在試圖用insmod加載的LKM到RedHat的內核,但它返回我下面的錯誤睡眠()函數調用: -加載內核模塊的麻煩與紅帽

Insmod –f tmdq.o

tmdq.o: unresolved symbol sleep

爲什麼應該從LKM中的sleep()系統調用引發問題?我希望檢查在Red Hat Linux 3.2.2-5,Linux版本2.4.20-8中是否有其他名稱給sleep()。

另外,有沒有辦法瀏覽RedHat在線的源代碼,而無需下載它?

謝謝。

+0

我想我找到了答案。這是瀏覽內核代碼的地方:http://lxr.linux.no/。此外,內核2.4.20中不包括sleep和msleep的符號。我將不得不使用內核的schedule_timeout()函數來自己實現它。 – user940154

回答

0

首先,sleep()不是系統調用,它是通過使用sys_nanosleep系統調用在libc中實現的。

所以在內核中,使用msleep,mdelay或usleep_range無眠(在include/linux/delay.h)或wait_event_功能(在include/linux/wait.h)也許有msleep的

0

定義和其他變體不包含在內核2.4.20中。必須使用內核的schedule_timeout()函數自己實現它。

此外,這是其中一個可以瀏覽內核代碼:lxr.linux.no

+1

這正是sys_nanosleep系統調用在這個古老的內核中的實現方式,我真的覺得你不得不使用這樣一個過時的版本 – Raber