当前位置: 技术问答>linux和unix
linux中usb驱动的timerout问题
来源: 互联网 发布时间:2016-08-05
本文导语: 在bulk发送和接收USB数据时候.很多会调用一个usb_submit_urb函数. 请问如何设置timerout时间溢出让USB在规定的时间内无法完成就放弃该urb操作. 我没发现在哪里可以设置timerout参数啊. | 这个你的看看你的USB驱动提供...
在bulk发送和接收USB数据时候.很多会调用一个usb_submit_urb函数. 请问如何设置timerout时间溢出让USB在规定的时间内无法完成就放弃该urb操作. 我没发现在哪里可以设置timerout参数啊.
|
这个你的看看你的USB驱动提供给你的接口。
|
跟 kmalloc一样,既可以用在中断上下文,也可以用在进程上下文,也没有地方设置kmalloc的超时
usb_submit_urb也一样
usb_submit_urb也一样
|
usb_bulk_msg() 可以实现timeout
|
linux没那么不经搞吧
可以调用usb_submit_urb之后查看struct urb的status判断是否成功
就是说它也允许失败,控制权还还给你,不会一直执行下去的
可以调用usb_submit_urb之后查看struct urb的status判断是否成功
就是说它也允许失败,控制权还还给你,不会一直执行下去的
|
usb_fill_int_urb 里有一个参数指定缓冲区大小,对应struct urb里的transfer_buffer_length
我还没有分析usb_submit_urb的能力
查看代码得知usb_submit_urb调用了 usb_hcd_submit_urb
usb_hcd_submit_urb 里最后
if (atomic_read(&urb->reject))
wake_up(&usb_kill_urb_queue);
urb->reject是只能由USB核心和主机控制器访问的,被置位表示传输将失败
于是唤醒了usb_kill_urb_queue 队列
我还没有分析usb_submit_urb的能力
查看代码得知usb_submit_urb调用了 usb_hcd_submit_urb
usb_hcd_submit_urb 里最后
if (atomic_read(&urb->reject))
wake_up(&usb_kill_urb_queue);
urb->reject是只能由USB核心和主机控制器访问的,被置位表示传输将失败
于是唤醒了usb_kill_urb_queue 队列
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。