Linux USB 通知框架详解
1. 引言
在 Linux 系统中,USB 设备的热插拔功能十分常见,而要实现不同模块之间关于 USB 设备添加或移除的有效通信,就需要一个高效的消息传递系统。本文将详细介绍 Linux USB 通知框架,包括 HCD 接口、Linux USB HCD 以及 USB 设备通知的相关内容。
2. HCD 接口与 Linux USB HCD
2.1 HCD 接口
HCD 接口框架实现了 usbcore 和 USB HCD 之间的例程,这有助于将 URB(USB 请求块)传输到 HCD。
2.2 Linux USB HCD
USB HCD 为 USB 主机控制器实现驱动程序。USB 主机控制器基于 EHCI 或 OHCI 规范,有时也会采用自定义的主机控制器实现。HCD 在硬件和 Linux USB 系统软件(即 usbcore)之间实现了必要的抽象。
3. Linux 通知链框架
3.1 通知链概述
在深入了解 Linux USB 通知框架之前,需要先了解 Linux 通知链。Linux 通知链由<kernel/notifier.c>实现,为发布 - 订阅模型提供了必要的框架。它类似于一个简单的链表数据结构,其中的函数指针成员保存着订阅者的回调函数。
3.2 通知链类型
根据执行上下文和锁保护机制,通知链可分为以下几种类型:
- Atomic
- Blocking
- Raw
- Sl