转自: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.

更多相关文章

  1. 对linux字符设备的理解(整体架构)
  2. 转:——Windows和Linux进程间通信区别
  3. 【原】第一个Linux设备驱动程序hello world!
  4. linux内核模块的强制删除-结束rmmod这类disk sleep进程
  5. linux进程和线程排查 · 记一次JVM CPU高负载的排查办法
  6. Linux内存占用分析 进程内存空间
  7. linux查看硬件信息及驱动设备相关整理
  8. linux下如何杀掉D状态进程
  9. linux c (4) 进程终止-exit和_exit函数

随机推荐

  1. ffmpeg从视频中提取帧时间戳
  2. Android Web-View:将本地Javascript文件注
  3. Android各种蓝牙设备的UUID
  4. Spannable、Spanned、Editable用法及差别
  5. Androidx学习笔记(79)--- 视频播放器二(Vide
  6. Android的Intel XDK构建错误
  7. android文件读写,ndk文件读写
  8. 【Mac + Appium + Python3.6学习(五)】之
  9. Android中的模式:Builder模式的优点赏析
  10. android 关于画笔特效的问题