USB URB

URB(USB Request Block)是USB设备驱动中描述与USB设备通信的关键数据结构,类似网络设备驱动的sk_buff。本文详细介绍了URB的结构、处理流程,包括创建、初始化、提交和结束时的处理,以及不同类型的URB(中断、批量、控制和等时)的初始化函数。此外,还提到了urb提交后的错误处理和状态标识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

URB定义:

usb 请求块(usb request block, urb)是usb设备驱动中用来描述与usb设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff结构体,是usb主机与设备通信的电波

  1. struct urb {  
  2.     /* private: usb core and host controller only fields in the urb */  
  3.     struct kref kref;        /* URB引用计数 */  
  4.     void *hcpriv;            /* host控制器的私有数据 */  
  5.     atomic_t use_count;        /* 当前提交计数 */  
  6.     atomic_t reject;        /* 提交失败计数 */  
  7.     int unlinked;            /* 连接失败代码 */  
  8.     /* public: documented fields in the urb that can be used by drivers */  
  9.     struct list_head urb_list;    /* list head for use by the urb's 
  10.                      * current owner */  
  11.     struct list_head anchor_list;    /* the URB may be anchored */  
  12.     struct usb_anchor *anchor;  
  13.     struct usb_device *dev;     /* 指向这个 urb 要发送的目标 struct usb_device 的指针,这个变量必须在这个 urb 被发送到 USB 核心之前被 USB 驱动初始化.*/  
  14.     struct usb_host_endpoint *ep;    /* (internal) poin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值