linux usb枚举过程分析之守护进程及其唤醒【转】
16lz
2021-01-22
转自:http://blog.csdn.net/xuelin273/article/details/38646765
usb热插拔,即usb设备可以实现即插即用,像U盘一样,插到电脑里就可以用,不用时可以直接拔除,这个动作不会影响USB设备使用性能。
在linx 系统中,usb热插拔由两部分方面共同实现,即内核空间和用户空间,内核由一个守护进程实现,用户空间由udev 程序实现。在内核空间里,有一个专门用于监控usb hub的状态的守护进程,守护进程通过等待队列实现,等待队列平时处理休眠状态,当usb hub上状态变化时(即有usb设备从usb hub上插入或拔出)时,便会去唤醒等待队列,然后去实现usb设备枚举,枚举成功后,向linux系统注册usb设备,并通过kobject_event通知用户空间,有设备插入或拔出,用户空间里有一个专门用于实现动态加载设备节点的程序udev,当它收到内核通知后,能够动态创建usb设备节点,这样便实现了usb的热插拔。
本文主要从usb设备枚举最基本的几个方面进行讲解,即usb守护进程、守护进程如何唤醒、被谁唤醒。
一.守护进程
在linux系统中,usb是一个相对比较复杂的子系统,所以usb子系统的初始化过程 也相对复杂,涉及了多个方面:usb总线初始化、usb文件系统初始化、usb hub初始化、usb设备驱动注册等。其中,在usb hub初始化usb_hub_init过程中,它除了向系统注册usb hub驱动处,还创建了一个用于监控usb root hub状态的守护进程hub_thread.更多相关文章
- 对linux字符设备的理解(整体架构)
- 转:——Windows和Linux进程间通信区别
- 【原】第一个Linux设备驱动程序hello world!
- linux内核模块的强制删除-结束rmmod这类disk sleep进程
- linux进程和线程排查 · 记一次JVM CPU高负载的排查办法
- Linux内存占用分析 进程内存空间
- linux查看硬件信息及驱动设备相关整理
- linux下如何杀掉D状态进程
- linux c (4) 进程终止-exit和_exit函数