注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小白的博客

嵌入式爱好者

 
 
 

日志

 
 

struct urb结构体分析  

2012-10-14 23:37:58|  分类: 狂轰滥炸USB |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


//USB Request Block:usb请求块
struct urb {
/* private: usb core and host controller only fields in the urb */
struct kref kref; /* urb引用计数 */
void *hcpriv; /* 主控制器的私有数据 */
atomic_t use_count; /* 并发的提交计数 */
atomic_t reject; /* 提交将失败*/
int unlinked; /* unlink的错误码 */

/* public: documented fields in the urb that can be used by drivers */
struct list_head urb_list; /* list head for use by the urb's
 * current owner */
struct list_head anchor_list; /* urb链表 */
struct usb_anchor *anchor;
struct usb_device *dev; /* 指向usb设备 */
struct usb_host_endpoint *ep; /* 指向端点的数据结构,最终将取代pipe */
unsigned int pipe; /* 持有端点的信息,如:端点号、方向、类型等等 */
unsigned int stream_id; /* 对bluk流有效,指端点的流ID */
int status; /* 状态 */
unsigned int transfer_flags; /* 各种flags用来指示urb如何被提交、ublink以及操作*/
       /* 传输缓冲区,对输入端口来说,该缓冲区存储输入的数据
       *对于输出端口来说,数据从缓冲区输出
      */
void *transfer_buffer;
//当transfer_flags 使用URB_NO_TRANSFER_DMA_MAP,优先使用transfer_dma,而不是transfer_buffer
dma_addr_t transfer_dma;
struct scatterlist *sg; /* 分散/搜集buffer链表 */
int num_mapped_sgs; /* (internal) 映射的sg的入口 */
int num_sgs; /* (in) sg链表中入口的数量 */
u32 transfer_buffer_length; /* (in) buffer的长度 */
u32 actual_length; /* (return) 实际传输的长度 */
unsigned char *setup_packet; /* (in)仅用于控制传输,指向8 byte,就是usb协议里面分析的那8个控制字节*/ 
dma_addr_t setup_dma; /* (in) dma addr for setup_packet */
int start_frame; /* (modify)返回同步传输的首帧 */
int number_of_packets; /* (in) 同步传输的包的数量 */
int interval; /* (modify) 指定中断初始或者同步传输的查询周期
 * (INT/ISO) */
int error_count; /* (return) 同步传输的错误数 */
void *context; /* (in) context for completion */
usb_complete_t complete; /* (in) 完成函数 */
         //用于提供同步传输缓冲区数组,并且搜集每个缓冲区的传输状态
struct usb_iso_packet_descriptor iso_frame_desc[0];
/* (in) ISO ONLY */
};


  评论这张
 
阅读(1764)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017