【发布时间】:2015-04-01 21:02:00
【问题描述】:
我是开发 Linux 驱动程序的新手。
传统上,如果我想创建char设备,我只需要实现readwrite和ioctl函数,并通过register_chrdev_region注册它对应的Major device ID。然后使用mknod 创建那个Major device ID 的设备文件。然后在用户空间调用readwriteopen会被内核调用相应的函数。
但现在我正在研究 Linux device model 和 sys filesystem,它们是在内核 2.6 中添加的。如果可能的话,我被告知不要使用/dev filesystem,因为 linux 现在有一个很好的设备模型来处理设备和驱动程序。这让我很困惑,所以我将我的困惑总结为一些问题:
- 如何在 /sys 中创建字符设备?更具体地说,如何像
/dev/null一样创建一个空设备? - 如何从用户空间调用我的字符设备驱动程序函数?
- 听说
udev是基于sys filesystem在/dev创建设备文件。为什么?既然有人告诉我“如果可能,不要使用/dev filesystem”,为什么udev使用/sys在/dev中创建文件? -
sys中的文件是否有char device file或block device之类的概念? - 在
/dev中,来自用户空间的openwrite最终会映射到我定义的file operation structure中的函数,那么当我打开或写入/ssy中的文件时会调用哪些函数?李>
【问题讨论】:
标签: linux linux-device-driver sysfs