爲什麼要在kernel space 和 user space, 提供一套相同接口的驅動函數

應用背景:

    數字電視芯片,linux平臺 

 

問題1:爲什麼要在kernel space 和 user space, 提供一套相同接口的驅動函數
解答: 由於設計理念的差異,一些客戶需要在kernel space 調用我們的平臺sdk api,而另外一些客戶則需要在user space 調用我們的sdk api。而這,就需要我們在在kernel space 和 user space分別提供一套函數名稱完全相同的SDK API。
  eg, designin_audio_start
(1)在kernel space,操作底層硬件,完成audio start功能。函數名稱爲designin_audio_start
(2)在user space,也存在一個相同的函數designin_audio_start,並最終調用到kernel space的designin_audio_start。

 

問題2:存在相同的函數名稱,會不會在鏈接的時候,報錯?
解答: 不會,運行在不同的空間。鏈接的時候,只會鏈接本空間相關的函數庫。


問題3:如何實現?
解答:對於/dev/audio設備標準文件接口,主要允許3種操作(open/close/ioctl).
      user space的designin_audio_getpid/designin_audio_setpid, 都是調用/dev/audio的ioctl函數,但是參數不同。
      在/dev/audio的ioctl函數中,根據參數的不同,最終調用kernel space的designin_audio_getpid/designin_audio_setpid

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章