我有3个问题:
我想弄清楚文件是否属于给定文件inode的USB设备。通过查看LXR上的最新内核源代码(2.6.33),我认为可以通过以下指针找到该信息: inode-> super_block-> block_device-> backing_dev_info-> device-> device_driver(或device_type)。 但是,我正在使用的内核 - 2.6.22.14 - 在backing_dev_info对象中没有结构设备指针。那么如何才能从inode中找出文件所属的设备? 我看到每个inode,super_block和block_device都包含一个'dev_t'类型的对象。但即使经过大量搜索,我也无法找到如何将'dev_t'转换为struct device *。有没有办法得到这个信息?
我尝试使用imajor(inode)和iminor(inode)打印设备主要和次要数字。但是,对于每个文件 - 属于hdd或usb - 它总是将主要和次要数字打印为零。为什么会发生这种情况?
我在网上搜索了USB主要数字,我发现USB的主要数字是180.但是,在多台机器上,它显示了与USB dev相关的主要数字为253.
$ ls -ltr / dev / usb *
crw-rw ---- 1 root root 253,4-04-04-04 17:20 / dev / usbmon4
crw-rw ---- 1 root root 253,3 2010-04-13 17:20 / dev / usbmon3
crw-rw ---- 1 root root 253,8 2010-04-13 17:20 / dev / usbmon8
crw-rw ---- 1 root root 253,5 2010-04-13 17:20 / dev / usbmon5
crw-rw ---- 1 root root 253,1 2010-04-13 17:20 / dev / usbmon1
crw-rw ---- 1 root root 253,7 2010-04-13 17:20 / dev / usbmon7
为什么会这样?