Linux 设备驱动程序字符设备"Subdirectory"



我正在为一个硬件编写一个 Linux 设备驱动程序,该硬件提供多个独立的数据"通道"。 系统上可能存在多个设备,每个设备提供一组通道,这些通道将表示为基本独立的字符设备。

我想知道如何在/dev 中创建表达层次结构关系的设备节点,例如:

/dev/mydevice0/chan0
/dev/mydevice0/chan1
/dev/mydevice0/chan2
/dev/mydevice0/chan3
/dev/mydevice1/chan0
/dev/mydevice1/chan1
/dev/mydevice1/chan2
/dev/mydevice1/chan3
...

如何自动创建这种层次结构? 通过"自动",我的意思是使用大多数现代 Linux 系统上可用的典型机制(即依赖 udev 是可以的,但我不想制作一些带有一堆mknod命令的特殊脚本)。 尝试这样做是否明智,或者我最好为每个通道生成一个唯一的后缀,类似于为磁盘设备所做的,例如:

/dev/mydev0c0
/dev/mydev0c1
...
/dev/mydev1c0
/dev/mydev1c1
...

谢谢!

函数 device_create() 是让驱动程序创建设备节点的方式,根据此短线程,可以在调用设备时对要放置设备的路径进行硬编码。您只需要将路径分隔符替换为感叹号即可。

链接线程的示例路径:

"test!power"将创建为:/dev/test/power

本教程和我对另一个 SO 问题的回答应该可以帮助您正确使用 device_create()。

最新更新