簡單來講, 把握以下要點就可以寫出一支屬於你自己的Linux Driver了.
- init_module和clean_module: 這兩個functions, 用C++的角度來看, init_module是constructor, 而clean_module則是de-constructor.
- file_operation: 簡單講, 其實就只是function pointer的對映而已. 你必需分別寫出當open, release, read, write, ioctl時, 你的driver要怎麼處理.
說的比做的簡單, 沒錯, 就這麼簡單, 就可以編譯出你自己的driver然後insmod到Linux裡. 但, 事實上, 即使是最簡單的Character Driver也牽扯到很多事情. 隨便舉例, blocking or non-blocking, mutex (或類似的機制)使用的時機. user-mode和kernel-mode資料的交換(i.e., copy_from_user or copy_to_user), 更進階的mmap.
寫出來正常運作只代表do the right thing, 要怎麼do the thing right才是一門大學問啊!!!
沒有留言:
張貼留言