当前位置: 技术问答>linux和unix
发分!!
来源: 互联网 发布时间:2016-11-30
本文导语: 本帖最后由 guolele2010 于 2011-05-17 21:17:32 编辑 阅读源码时,有点问题,我想问一下,usb 设备插入后,流程是怎么样的?插入会产生中断吗? 我的理解是不会,因为插入只是hub里产生一个D-或者D+的引脚电平变化,正确...
我的理解是不会,因为插入只是hub里产生一个D-或者D+的引脚电平变化,正确应该是HUB轮循接到端口
然后检测到端口状态变化后会处理一个urb,那个urb是什么时候提交的?
usb_hcd_poll_rh_status->length>0里的代码
if (length > 0) {
/* try to complete the status urb */
spin_lock_irqsave(&hcd_root_hub_lock, flags);
urb = hcd->status_urb;
if (urb) {
hcd->poll_pending = 0;
hcd->status_urb = NULL;
urb->actual_length = length;
memcpy(urb->transfer_buffer, buffer, length);
usb_hcd_unlink_urb_from_ep(hcd, urb);
spin_unlock(&hcd_root_hub_lock);
usb_hcd_giveback_urb(hcd, urb, 0);
spin_lock(&hcd_root_hub_lock);
} else {
length = 0;
hcd->poll_pending = 1;
}
spin_unlock_irqrestore(&hcd_root_hub_lock, flags);
}
这代码调用的usb_hcd_giveback_urb,给回谁了?
|
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。