我在讀LKMPG(See Section 4.1.4. Unregistering A Device),我不清楚何時使用try_module_get/module_put
函數。一些LKMPG的例子使用它們,有些則不。Linux內核模塊:什麼時候使用try_module_get/module_put
爲了增加混淆,try_module_get
在2.6.24源文件中的193個文件中出現了282次,而在Linux Device Drivers (LDD3)和Essential Linux Device Drivers中,它們甚至不出現在單個代碼示例中。
我想也許他們是綁在老register_chrdev
接口(由CDEV接口2.6取代),但他們只一起出現在同一個文件中8次:
find -type f -name *.c | xargs grep -l try_module_get | sort -u | xargs grep -l register_chrdev | sort -u | grep -c .
因此,它是適當的時使用這些函數,並且它們與特定接口或一組環境的使用有關係嗎?
編輯
我裝從LKMPG的sched.c例子,嘗試了以下實驗:
[email protected]:~/kernel-source/lkmpg/2.6.24$ tail /proc/sched -f &
Timer called 5041 times so far
[1] 14594
[email protected]:~$ lsmod | grep sched
sched 2868 1
[email protected]:~$ sudo rmmod sched
ERROR: Module sched is in use
這使我相信,內核現在它是自己的會計和獲取/看跌期權可能已經過時。任何人都可以驗證此?
有在第14章try_module_get'的'一個發生在第'引用計數manipulation'(頁367) – 2011-02-08 18:24:58
我說的是LDD書在我之前的評論 – 2011-02-08 18:32:36