【问题标题】:Creating a sysfs attribute group and the corresponding device in dev/在 dev/ 中创建一个 sysfs 属性组和对应的设备
【发布时间】: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


【解决方案1】:

你应该看看这个:

http://kroah.com/log/blog/2013/06/26/how-to-create-a-sysfs-file-correctly/

在您的情况下,请遵循总线驱动程序示例。

【讨论】:

  • 我已经解决了这个问题——我的短期记忆让我无法记住:S,但我已经解决了!无论如何感谢您的回答!
猜你喜欢
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
相关资源
最近更新 更多