星期一, 5月 12, 2008

Linux Driver

最近頻繁的接觸Linux Device Driver, 主要都是寫Character Driver, 因為簡單好入門.

簡單來講, 把握以下要點就可以寫出一支屬於你自己的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才是一門大學問啊!!!

沒有留言: