udev 如何获取它创建的设备的设备号?

str*_*gee 5 udev linux-kernel

聊天中的一个小交流中分离出来。

udev 的主要优点之一是您不必再担心主要和次要设备编号耗尽。但是 udev 创建的设备仍然有这些编号与之关联。udev 如何与内核配合创建具有正确主次设备号的设备文件?

Gil*_*il' 5

内核分配一个主要:次要编号,静态(在具有静态分配且尚未用完的驱动程序中)或动态(在支持动态分配并已用完其静态分配的驱动程序中)。这个数字列在内核发送给 udev 的消息中。

您可以在/sys/devices/…/uevent. 例如:

$ cat /sys/devices/virtual/mem/null/uevent 
MAJOR=1
MINOR=3
DEVNAME=null
DEVMODE=0666
$ cat /sys/block/sda/sda1/uevent 
MAJOR=8
MINOR=1
DEVNAME=sda1
DEVTYPE=partition
Run Code Online (Sandbox Code Playgroud)

udev 规则确定设备文件的名称和权限。设备编号来自内核(它必须如此,因为内核已经做出决定,而 udev 的工作是确保通过名称访问设备的应用程序将达到内核选择的编号)。