Linux USB驱动开发与HCD框架解析
1. USB请求块(URB)相关方法
在USB数据传输中,URB(USB Request Block)是关键的数据结构,以下是一些常用的URB操作方法:
-void usb_free_urb(struct urb *urb):该方法用于释放事务完成后分配的内存。需要注意的是,除非设置了URB_FREE_BUFFER传输标志,否则与URB关联的传输缓冲区不会被释放。
-struct urb *usb_get_urb(struct urb *urb):当URB从设备驱动程序传输到主机控制器驱动程序时,此方法会增加URB的引用计数。
-int usb_submit_urb(struct urb *urb, gfp_t mem_flags):该方法用于为端点提交异步传输请求,URB可以在中断上下文中提交。提交成功时返回0,失败则返回负值。
-int usb_unlink_urb(struct urb *urb):此方法用于中止或取消之前为端点提交的URB。成功取消URB后,会调用完成处理程序,并返回表示请求已取消的状态码。
-void usb_kill_urb(struct urb *urb):该方法用于取消传输请求,并等待其完成,确保所有完成处理程序都已完成,URB完全空闲并可重用。
| 方法名 | 功能 | 返回 |
|---|