Linux设备驱动程序使用次要编号

时间:2012-03-28 08:22:28

标签: linux linux-kernel device-driver

/proc/devices文件中可以看到设备驱动程序的主要编号。 有没有办法列出设备驱动程序支持的次要编号? 我没有源代码,我需要一种从正在运行的Linux获取信息的方法。

2 个答案:

答案 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=16CONFIG_SERIAL_8250_RUNTIME_UARTS=16配置了我的内核,因此我将在sysfs目录中看到ttyS15的条目。这是我的配置操作导致设备驱动程序注册的内容。这可能比根据Documentation/devices.txt保留的要少。

答案 1 :(得分:-1)

Linux没有跟踪它 当使用次要编号调用open时,此编号将传递给设备驱动程序。然后司机可以随意使用它。

给定的驱动程序可以实现一个次要数字表,每个数字都指向一个状态结构。但它可能会处理它。