热插拔系统简介
热插拔系统用于管理、监控系统中所有热插拔设备的插入/拔出状态,从而能够让系统内部自动完成此类设备的创建/删除工作而无需用户手动处理。同时,热插拔系统还会收集热插拔相关信息,供应用程序使用。
如下图所示,SylixOS 中有一个名称为 t_hotplug 的内核线程,设备的热插拔状态通过事件的方式报告给该线程,对设备的创建/删除工作均由该线程处理。某些设备不能产生热插拔事件(如没有插拔中断检测引脚的设备),可以向系统注册热插拔检测函数,t_hotplug 线程会定期调用注册的函数以完成热插拔检测,即轮询检测(对应上图中的 poll 模块)。
系统中还有一个名为 /dev/hotplug 的虚拟设备,它负责收集相关热插拔消息,通常情况下热插拔消息来自于t_hotplug 线程,也有可能来自于设备驱动程序。应用程序可通过读取 /dev/hotplug 设备,获得自己关心的热插拔消息。
SylixOS 定义了当前常见的热插拔设备消息,如 USB、SD、PCI 等。此外,还有网络的连接与断开、电源的连接状态改变等与热插拔行为相似的消息。