ycloud
驱动牛犊
驱动牛犊
  • 注册日期2003-02-19
  • 最后登录2003-05-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:851回复:0

问个Linux下中断URB同步的问题

楼主#
更多 发布于:2003-03-04 01:23
   ......
A:
FILL_INT_URB(...,callback,...);
usb_submit_urb(...);
B:
   ......

怎么在A.B处和callback里面加代码,才能使B下面的代码
一直不执行,直到该interrupt类型的URB处理完.

我是按下面这样做的,结果系统感觉象死锁一样,我的代码问题在哪
里?请有经验的高手指点.

static wait_queue_head_t end_wait;
...

static void callback(struct urb *urb)
{
     ...
     wake_up(&end_wait);
}
...
{
...
    DECLARE_WAITQUEUE(wait,current);
...
    init_waitqueue_head(&end_wait);
...
    FILL_INT_URB(...,callback,...);
    usb_submit_urb();
    current->state = TASK_INTERRUPTIBLE;
    add_wait_queue(&end_wait,&wait);
    schedule(...);
    current->state = TASK_RUNNING;
    remove_wait_queue(&end_wait,&wait);
...
}

thanks


[编辑 -  3/4/03 by  ycloud]
游客

返回顶部