当前位置: 技术问答>linux和unix
如何在urb回调函数中访问共享资源?
来源: 互联网 发布时间:2016-09-17
本文导语: 驱动open时,提交一定数量的in urb,然后在回调函数中将接收来的数据放到一条队列; 同时read操作也将访问这条队列,由于urb回调函数中不能做任何延时操作(中断上下文?),用自旋锁也不行,这个互斥要怎么做...
驱动open时,提交一定数量的in urb,然后在回调函数中将接收来的数据放到一条队列;
同时read操作也将访问这条队列,由于urb回调函数中不能做任何延时操作(中断上下文?),用自旋锁也不行,这个互斥要怎么做?
同时read操作也将访问这条队列,由于urb回调函数中不能做任何延时操作(中断上下文?),用自旋锁也不行,这个互斥要怎么做?
|
哦,就是中断响应的上半部和下半部的问题。
在回调函数中将要接收数据的相关参数保存下来,然后退出回调函数(这是上半部分)。退出后立即启动相关的处理函数,将数据从缓存中写到你定义的队列中(这是下半部分)。由于下半部分已经退出了回调函数,所以可以使用内核中提供的各种互斥方法(包括自旋锁)
在回调函数中将要接收数据的相关参数保存下来,然后退出回调函数(这是上半部分)。退出后立即启动相关的处理函数,将数据从缓存中写到你定义的队列中(这是下半部分)。由于下半部分已经退出了回调函数,所以可以使用内核中提供的各种互斥方法(包括自旋锁)
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。