我是開發Linux驅動程序的新手。如何使用linux設備模型和/ sys文件系統?
傳統,如果我想創建字符設備,我只需要實現read
write
和ioctl
功能,並通過register_chrdev_region
相應Major device ID
註冊。然後使用mknod
創建該設備文件Major device ID
。然後在用戶空間中調用read
write
open
然後通過內核調用相應的函數。
但是現在我正在學習Linux device model
和sys filesystem
,它在內核2.6中加入。如果可能的話,我告訴,不要使用/dev filesystem
,因爲現在的Linux具有良好的設備型號處理設備和driver.This搞糊塗了,所以我會總結一下我的困惑到一些問題:
- 怎麼辦我在/ sys中創建一個char設備?更具體地說,我如何創建一個空設備,就像
/dev/null
一樣? - 如何從用戶空間調用我的char設備驅動函數?
- 我聽說
udev
是基於sys filesystem
在/dev
中創建設備文件。爲什麼?由於我被告知「如果可能,請勿使用/dev filesystem
」,爲什麼udev
使用/sys
在/dev
中創建文件? sys
中的文件是否有任何概念如char device file
或block device
?- 在
/dev
,open
write
從用戶空間將最終映射到由我定義的file operation structure
功能,那麼哪些功能會被當我打開或寫入文件/ssy
叫什麼名字?
你提到的第三項是我所關心的。你是什麼意思「設備出現時」?在我調用'register_chrdev_region''cdev_init'和'cdev_add'後,我可以從'cat/proc/devices'獲得信息,但似乎'/ sys'中沒有任何事情發生。我無法在'/ sys/dev/char'中找到我的設備的任何信息。 – demonguy 2015-04-01 09:21:39
我在第3點改進了我的答案。無論如何,當您執行'device_create()'時,如果您不這樣做,請執行此操作:)以下是一個來自網絡的隨機示例http://www.opensourceforu.com/2011/04/character-device-files-creation-operations/ – Federico 2015-04-01 13:06:39
謝謝,這正是我想要的! – demonguy 2015-04-02 03:32:52