阅读:853回复:0
问个Linux下中断URB同步的问题
......
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] |
|