Linux Kernel 界這幾天最大的新聞莫過於 Linus Maintain 的 2.6.23 將正式納入了 User Space Driver API 了吧.
主要的重點在於
This interface allows the ability to write the majority of a driver in userspace with only a very small shell of a driver in the kernel itself. It uses a char device and sysfs to interact with a userspace process to process interrupts and control memory accesses.
可以用 sysfs 和 char device 去填寫記憶體和處理 Interrupt.
還沒有處理 DMA, 所以像是 Network Driver 或是 Disk Controller 之類的 Driver 如果要在上面執行會有效能上的問題.
大部份的 Close Source Driver 都是提供某些特定的版本的 Linux 使用, 一但使用者升級 Linux, 那 Driver 就失效了.
以後若是 Driver 使用User Space API, 那些 Closed Source Driver 也可以一起升級(當然, gcc toolchain 也是另一個問題就是了)
而 Embedded System 內很多都是這樣的 Closed Source (我自己也是在做類似的事情呀)
不管是 Kernel Binary API or User Space API, 這些爭議也是吵了好久,
論點也很多, 本來 User Space API 啟動以後, Kernel Developers 想要將 Non-GPL module 趕出核心, (請見:Linus 不贊成移掉對 non-GPL module 的 support)
不過最後還是被 Linus 擋下來了.
至於長期的影響力, 我認為對 Linux 社群是正向的力量, 雖然短期來看是 Closed Source
但是若是能夠增加 Linux 的使用者人數, 接下來會做的事情就是, 使用者
1. 逼迫 Hardware 公司 Open Source
2. 逼迫 Hardware 公司提供更好的服務, 否則就轉向其他家公司購買 Service.
這個最明白的例子就是 ATi 和 nVidia. 由於之前 ATi 一直對 Linux Driver 不太友善, 所以大家轉向 nVidia 的懷抱. 因為 nVidia 對 Linux 的 Support 比 ATi 好
如果你是想要組一台新電腦, 希望玩一下 Linux, 你顯示卡會不會優先選擇 nVidia?
3. 成立 Open Source Hardware Company.. 老實說我想成立耶, 意著內洽 🙂
Ref.
Linux kernel 2.6.23 to have stable userspace driver API(原始出處)
Kernel Summit 2006: The user-space API
[Tags] Linux , Kernel, User Space API [/Tags]
發佈留言