Linux设备驱动程序字符设备“子目录”

时间:2014-01-06 14:11:43

标签: linux-device-driver

我正在为一块硬件编写一个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
...

谢谢!

1 个答案:

答案 0 :(得分:2)

函数device_create()是驱动程序创建设备节点的方法,根据this short thread,您可以硬编码设备在调用时放置的路径。您只需要用感叹号替换路径分隔符。

来自链接线程的示例路径:

"!测试功率"将创建为:/ dev / test / power

This tutorialmy answer to another SO question可以帮助您正确使用device_create()。