【问题标题】:Linux Device Driver Character Device "Subdirectory"Linux 设备驱动程序字符设备“子目录”
【发布时间】:2014-01-06 14:11:43
【问题描述】:

我正在为提供多个独立数据“通道”的硬件编写 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
...

谢谢!

【问题讨论】:

    标签: linux-device-driver


    【解决方案1】:

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

    链接线程的示例路径:

    “test!power”将被创建为:/dev/test/power

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

    【讨论】:

    • 哇——我想不到。谢谢!
    • 在发布之前我无法对其进行测试,所以我希望它对你有用。如果没有,请回来并不接受答案,以便我知道继续寻找。我对这个问题真的很感兴趣,也永远不会猜到这种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2018-04-26
    • 2015-09-18
    • 2013-03-26
    相关资源
    最近更新 更多