OpenWrt hotplug 机制分析
hotplug机制是linux内核提供的一种消息通知机制,主要用来实现内核态事件向用户态传递。OpenWrt下的ubus也类似,一个是用户态的,而hotplug是内核态的,其功能都是用来消息传递。linux早期的hotplug机制并没有现在这么复杂,在2.4内核的时候只是针对usb、pci子系统,只是简单的hotplug调用进程,后面才使用netlink机制来实现通知机制。当时我主要用hotplug机制来实现usb 3g网卡的模式转换(配合usbmodswitch),现在hotplug有更广泛的使用场景。
OpenWrt中hotplug机制基本上和传统Linux下的实现类似,只是hotplug事件监听是procd(注:早期OpenWrt采用的是hotplug2),其他系统可能是由hotplug2或其他。OpenWrt常见的按键检测、驱动加载都是基于hotplug机制来实现的。
参考资料:
http://linux-hotplug.sourceforge.net/kernel/kernel.html
https://openwrt.org/docs/techref/hotplug
https://openwrt.org/docs/guide-user/base-system/hotplug_lede