我有一个驱动程序支持多个不相同但相似的设备。我这样做是为了在为设备编写应用程序时可以使用相同的库 API。
有没有办法指定在应用程序中使用哪个特定设备?
是否可以在 open 调用之前进行 ioctl 调用,以便设置下次调用 open 时使用哪个特定设备?
处理此问题的常用方法是/dev/
为每个设备设置一个单独的设备节点,并让您的驱动程序提供一个ioctl()
返回相应设备的标识信息(例如供应商、型号和序列号)的设备节点。这将允许用户空间应用程序区分不同的设备。根据您的确切需求,sysfs
( /sys
) 中的一些随附条目也可能有意义。
您可能想查看一些常见的现有 API 以获得想法。例如,V4L2 API 包含VIDIOC_QUERYCAP ioctl(),它为应用程序提供了足够的信息来区分离散设备。