lsusb -t 从哪里获取数据?

lsusb -t 从哪里获取数据?

我想要命令所在的文件

lsusb -t

检索数据。我很好奇这些数据被存储在哪里。

这是快照

还有人能告诉我显示的设备 ID 有什么用吗fdisk -l

答案1

lsusb从内核提供的虚拟sys文件系统(挂载在 中)读取数据/sys;具体来说,从 USB 设备的相关目录位置读取数据。这些设备连接到不同的 PCI 总线,并且(大多数)由 检测udevd

例如,在我的计算机中,这里有一个连接到特定 PCI 总线的 USB 设备的定位示例:

/sys/devices/pci0000:00/0000:00:1d.0/usb4/4-1/

目录内容:

% print -l *
4-1:1.0
authorized
avoid_reset_quirk
bcdDevice
bConfigurationValue
bDeviceClass
bDeviceProtocol
bDeviceSubClass
bmAttributes
bMaxPacketSize0
bMaxPower
bNumConfigurations
bNumInterfaces
busnum
configuration
descriptors
dev
devnum
devpath
driver
ep_00
idProduct
idVendor
ltm_capable
maxchild
port
power
quirks
removable
remove
speed
subsystem
uevent
urbnum
version

lsusb仅从该目录的相关文件读取。

答案2

lsusb用途libudev获取您看到的设备列表。Libudev 则使用 udev 数据库和搜索/sys文件系统的组合来查找硬件信息。

相关代码存储库:

https://github.com/gregkh/lsusb

http://cgit.freedesktop.org/systemd/systemd/tree/src/libudev

答案3

抱歉,我不会帮你!如果你想找点乐子:

ldd `which lsusb`
strace lsusb -t
ltrace -l "libudev*" lsusb -t

好吧,我建议至少使用man或阅读每个命令的详细描述(如果不是整个手册) info

答案4

经过快速跟踪,我发现 lsusb 在 /var/lib/usbutils/usb.ids 中保存了与产品名称相关的 VID/PID 列表

相关内容