【发布时间】:2016-08-25 13:49:02
【问题描述】:
我正在为 PCIe 卡创建 Linux 设备驱动程序。 我在创建相应的 sysfs 条目时遇到了问题。起初,我创建了一个包含所需的属性组
DEVICE_ATTR(...)
struct attribute *...
struct attribute_group ...
等等,然后我添加了 store() 和 show() 函数。 一切都很顺利,请求的类是在
中创建的/sys/bus/pci/drivers//module/drivers/pci:/0000:01:00.0
/ 问题是 /dev/ 中没有自动创建条目!
我花了几个小时在网上寻找,我发现的唯一解决方案是使用:
class_create() and then
device_create()
但这会在 /sysfs/devices/virtual/... 中创建另一个条目,恕我直言,这是丑陋的,完全没有必要。
我想要的是在 /dev/ 中有我的一组属性和相应的条目
我怎样才能做到这一点?即使是指向这样做的示例的指针也会非常有帮助(我已经找了几个小时,没有任何运气:()
提前非常感谢!!!
罗伯
答案:我在选择司机的班级时犯了一个愚蠢的错误。正确设置 pci 驱动程序解决了这个问题。
【问题讨论】:
-
你注册你的 pci 设备了吗?
-
你的意思是使用 pci_register_driver() ?是的 init()
-
那么在探测功能中也可能是你有启用设备。如果可能的话,您可以输入您遵循的日志或简单的驱动程序代码吗?
-
@RH6..确保您有注册设备。 示例..如果您的设备类型是字符设备,那么您应该使用 register_chrdev() 之类的函数来注册您的设备..
-
我在 init 中做的第一件事是 alloc_chrdev_region()。在探测器中,我在 pci_dev 上有一个 pci_enable_device(),它作为 probe() 的参数提供。 (PS:感谢您的回答!)
标签: sysfs