最近在解决一些有关hotplug的问题。找了很多资料,在一下经典的书籍里对此的解释都比较模糊或者过时,还是前同事的一本书里讲解比较详细,再次推荐给大家《深入linux设备驱动程序内核机制》其中9.2.4专门介绍了热插拔的内核机制。我的理解还很浅显,一下子介绍不了太完整详细,等有空整理一下再来完整回答,这里只记录一个小技巧。
linux中/sys是一个神奇又重要的目录,它提供了用户空间跟内核通信的一个很简答的接口。同时暴露很多内核信息给用户空间。比如bus设备就在/sys/bus里有详细的体现。当有设备hot add到机器上后,内核就会在/sys下面的对应目录上建立对象目录。比如你在pci总线上插入一块设备,就会在/sys/bus/pci的下面建立一串路径。这里想记录的一个小技巧是假如内核没有及时发现这个新插入的设备怎么通知内核去检测pci上的设备呢?方法很简单:
echo 1 > /sys/bus/pci/rescan
在pci目录下面有一个rescan文件,向这个文件写1就会通知内核重现检测pci总线发现新设备。执行完上述操作后dmesg一下查看有什么变化。
有空再完整记录。