我正在为一块硬件编写一个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
...
谢谢!
答案 0 :(得分:2)
函数device_create()是驱动程序创建设备节点的方法,根据this short thread,您可以硬编码设备在调用时放置的路径。您只需要用感叹号替换路径分隔符。
来自链接线程的示例路径:
"!测试功率"将创建为:/ dev / test / power
This tutorial和my answer to another SO question可以帮助您正确使用device_create()。