03 26 |
|
有碰過kernel code的人大概多少都瞭解我標題的意思,kernel code很迷人,但很危險,稍不小心,就會被kernel panic拖進地獄
拿我最近review的code當例子,截取某一段code如下,這是一段相當簡單的kernel threading code,當kernel module被insert時,會開啟kernel thread執行thread_main這個function,當remove module時,會呼叫delete_thread把kernel thread砍掉,可以仔細看看thread_kill這段function,有沒有什麼問題
03 06 |
|
02 19 |
|
02 11 |
|
02 03 |
|
古早以前kernel對於proc資料的讀取都由read_proc這個callback函式處理,那它的prototype如下
kernel module傳給使用者的資料最終要印在page這個大小為4096bytes的空間裡,所以kernel moduel在處理使用者要讀取資料時要特別注意這個boundry,不過現在因為seq_file的出現,情勢會隨之改觀
02 02 |
|
01 23 |
|
01 22 |
|
新年快到了,先祝大家新年快樂,牛年發大財,快到了年關,也該好好輕鬆一下,回頭看看自己這一年是不是做了些足以令你自傲的豐功偉業,也希望我能繼續保持對coding的熱誠在新的一年繼續奮鬥
話說回來,有了ioctl,和proc,我們是不是還有其它可以與kernel交換資料的界面呢?沒錯,就是netlink,那什麼時候會用到netlink呢?當你設routing table或防火牆時就會用到了,kernel就是用netlink界面與route指令溝通,scsi驅動也可以看到netlink的影子,netlink有什麼好處呢?