2010-11-10 65 views
3

我想了解在SMP系統上刪除模塊的問題 有沒有什麼好的解釋?用戶併發訪問

+1

你在看什麼問題或模塊? – warren 2010-11-10 21:01:07

回答

1

通常遇到的問題是,系統中某處引用了正在運行的模塊。這可以是任何東西,從一個鎖正在舉行,某種回調在飛行中 - 另一個模塊使用符號等,等等等等等012等等。

在內核中有大量的引用計數系統,應該用來幫助您製作肯定這絕不會發生。那些使用你的模塊的東西 - 或者你的模塊的一些方面 - 將會持有相關的引用計數。當這個計數非零時,內核將阻止你的表單執行「rmmod」。您可以在「lsmod」outut中看到所有已加載模塊的引用計數。

學習並明智地使用它們。

這些問題並不是特定於「SMP」 - 但是任何內核模塊。例如,如果您的模塊是字符驅動程序,並且某人打開了您的設備,那麼您不希望驅動程序在某人打開文件描述符時卸載 - 或者更糟的是 - 讀取過程中阻塞了一個進程()等待迴應。在許多情況下 - 像這樣 - 內核本身將爲您提供參考。在這種情況下,打開驅動程序的進程將在驅動程序的模塊上保存一個refcnt。