阅读我能找到的有关字符设备驱动程序的所有书籍/文章/教程/示例,它们都涵盖了如何在驱动程序代码中获取主设备号,并且都建议我通过调用alloc_chrdev_region()
.为了创建实际的设备节点,他们都告诉我mknod
手动或在脚本中调用外部驱动程序代码。一位推荐人希望我的司机打印主设备号。另一个希望我使用awk
on/proc/devices
来查找主号码。提到了该函数mknod()
,但它似乎是打算在用户态代码中使用的。
我显然错过了一些东西,因为我不明白为什么没有办法让我的驱动程序变得自给自足,即我这样做modprobe my_driver
并最终得到,比如说,/dev/my_driver
创建而无需做任何其他事情。
答案1
在 Linux 中,命令对 device_create 和 class_create 就可以实现这一目的。查看 https://stackoverflow.com/questions/5970595/create-a-device-node-in-code
答案2
Unix传统上遵循“机制,而不是政策”的传统。对于设备驱动程序,这意味着内核中的驱动程序标识只是主/次设备号。使用 mknod 命名设备(“策略*”)已留给用户空间。