从/proc/devices
文件中可以看到设备驱动程序的主要编号。
有没有办法列出设备驱动程序支持的次要编号?
我没有源代码,我需要一种从正在运行的Linux获取信息的方法。
答案 0 :(得分:0)
Linux 跟踪某个驱动程序分配的区域。否则,如果没有额外的调度模块或类似的东西,在vc,serial(maj 4)和ttyaux(maj 5)区域上发生的主要号码的共享将是不可行的。在fs/char_dev.c
中,您会找到
kobj = kobj_lookup(cdev_map, inode->i_rdev, &idx);
确实如此,Linux正在查找(主要的,次要的)cdev对象,而不仅仅是(主要)。
例如,请参阅/sys/dev/char/
:
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:62 -> ../../devices/virtual/tty/tty62
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:63 -> ../../devices/virtual/tty/tty63
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:64 -> ../../devices/pnp0/00:06/tty/ttyS0
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:65 -> ../../devices/platform/serial8250/tty/ttyS1
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:66 -> ../../devices/platform/serial8250/tty/ttyS2
...
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:79 -> ../../devices/platform/serial8250/tty/ttyS15
由于我使用CONFIG_SERIAL_8250_NR_UARTS=16
,CONFIG_SERIAL_8250_RUNTIME_UARTS=16
配置了我的内核,因此我将在sysfs目录中看到ttyS15的条目。这是我的配置操作导致设备驱动程序注册的内容。这可能比根据Documentation/devices.txt
保留的要少。
答案 1 :(得分:-1)
Linux没有跟踪它
当使用次要编号调用open
时,此编号将传递给设备驱动程序。然后司机可以随意使用它。
给定的驱动程序可以实现一个次要数字表,每个数字都指向一个状态结构。但它可能会处理它。