使用udev

时间:2017-12-06 10:10:09

标签: linux-device-driver virtual udev v4l2loopback

我试图修复v4l2loopback驱动程序以使用udev(让udev自动分配稳定的设备名称)。

问题似乎是,设备驱动程序没有公开udev看似需要正确使用标准60-persistent-v4l.rules的一些字段,即:

  • ID_BUS
  • ID_SERIAL
  • ID_PATH

此外,在设备上运行udevadm test-builtin path_id并不会返回任何内容(退出代码为1)。

现在我在网上找到的任何例子都假设我想写一个USB设备驱动程序。遗憾的是,v4l2loopback设备不是virtual设备。

所以问题是:

如何将PATHSERIALBUS属性添加到虚拟设备驱动程序,以便udev看到他们?

注意:问题的确是针对修复设备驱动程序,以便它可以很好地与现有的udev规则配合使用(而不是调整udev以便它能正确识别设备)。

1 个答案:

答案 0 :(得分:0)

运行此命令以查看从linux内核发送到用户空间udev的所有内容:

{{1}}

如果显示您需要的内容,请在规则文件中使用它,否则创建一个shell脚本,从udev规则文件中调用该脚本,然后从shell脚本解析sysfs以获取您要查找的参数。这是典型的标准方式。

使用add_uevent_var()函数从内核发送环境变量。在内核主要是核心,类和总线驱动程序调用函数来创建和发送uevent。看一下这个link来注意bus anc类驱动程序。 This link也有助于更多地了解它。

虚拟设备和真实设备之间需要注意的一个重要区别是,当我们访问可以调用函数的kobject时。