我正在處理一個涉及內核和用戶空間代碼的大型嵌入式軟件(ARM處理器,嵌入式Linux 2.6.31,busybox)。通常首先加載一個內核模塊,守護進程和模塊建立netlink套接字。無法「模塊化」模塊
這裏的問題是,殺死守護之後,我不再能夠從內存中卸載該模塊:
% rmmod _module.ko
% rmmod: _module.ko: Resource temporarily unavailable
分析表明錯誤(返回值是-11
,即EAGAIN
?)返回try_stop_module()
在系統調用delete_module()
中調用kernel/module.c
定義。函數try_stop_module()反過來調用stop_machine(),這是我卡住的地方,因爲我不確定那裏發生了什麼。我認爲根本原因是在守護進程中的某個地方打開連接到模塊,顯然是別的東西,並沒有正確關閉/清理退出(顯然有些引用/鎖不釋放?)
有沒有人任何想法還有什麼要看和探討?
只是一個愚蠢的想法... rmmod -f ...迫使卸載? –