当前位置:  技术问答>linux和unix

usb驱动 使中断服务程序停止

    来源: 互联网  发布时间:2016-10-12

    本文导语:  安装usb的host驱动时,程序停在handle_IRQ_event中。 请大虾帮忙看下,真的是找不到原因: irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action) { irqreturn_t ret, retval = IRQ_NONE; unsigned int status = 0; printk("handle_IR...

安装usb的host驱动时,程序停在handle_IRQ_event中。
请大虾帮忙看下,真的是找不到原因:
irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action)
{
irqreturn_t ret, retval = IRQ_NONE;
unsigned int status = 0;
printk("handle_IRQ_event--->1n");
if (!(action->flags & IRQF_DISABLED))
{
printk("handle_IRQ_event-->local_irq_enable-->1n");
local_irq_enable_in_hardirq();    //程序停在这里
//local_irq_enable();            //如果把上面那句换掉,程序会停在这里
printk("handle_IRQ_event--->local_irq_enable-->2n");
}
do {
trace_irq_handler_entry(irq, action);
ret = action->handler(irq, action->dev_id);
trace_irq_handler_exit(irq, action, ret);
printk("handle_IRQ_event-->irqnum=%dn", irq);
switch (ret) {
case IRQ_WAKE_THREAD:
/*
 * Set result to handled so the spurious check
 * does not trigger.
 */
ret = IRQ_HANDLED;
printk("handle_IRQ_event-->ret=IRQ_WAKE_THREADn");
/*
 * Catch drivers which return WAKE_THREAD but
 * did not set up a thread function
 */
if (unlikely(!action->thread_fn)) {
warn_no_thread(irq, action);
break;
}

/*
 * Wake up the handler thread for this
 * action. In case the thread crashed and was
 * killed we just pretend that we handled the
 * interrupt. The hardirq handler above has
 * disabled the device interrupt, so no irq
 * storm is lurking.
 */
if (likely(!test_bit(IRQTF_DIED,
     &action->thread_flags))) {
set_bit(IRQTF_RUNTHREAD, &action->thread_flags);
printk("handle_IRQ_event-->set_bitn");
wake_up_process(action->thread);
}

/* Fall through to add to randomness */
case IRQ_HANDLED:
status |= action->flags;
break;

default:
break;
}

retval |= ret;
action = action->next;
} while (action);

if (status & IRQF_SAMPLE_RANDOM)
add_interrupt_randomness(irq);
local_irq_disable();

return retval;
}

|
具体停在哪里,是死循环吗

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有谁能告诉我USB设备驱动和USB gadget驱动究竟有什么不同么?
  • 有两个USB键盘怎么用自己写的USB键盘驱动程序只替换其中一个驱动?
  • usb驱动与umount的问题!读懂USB驱动的大牛过来瞧瞧啊
  • usb驱动中 hcd,pcd,device,gadget驱动有什么区别啊?
  • USB驱动程序开发中,如何读取USB设备数据??
  • linux usb驱动中的usb0端口接收数据问题
  • 关于Linux 2.6平台下,自定义的USB HID设备是系统提供驱动程序还是需要自己完成驱动程序?
  • linux USB从口设备驱动问题
  • usb 驱动读数据问题 (100分) 请有usb驱动经验的高手指点!
  • Linux下开发USB硬盘驱动
  • linux上的USB从设备驱动!
  • 关于USB驱动开发
  • USB 是根据什么来联系驱动程序的?
  • 求基于arm的usb驱动开发的书籍
  • 有没有linux下USB作为从设备的驱动程序源码
  • 求助:Linux下USB驱动的问题
  • usb 驱动开发
  • 毕业设计,急问关于usb驱动的问题!在线等待
  • Linux USB驱动使用问题
  • 移植USB驱动的小问题
  • usb接口与usb transceiver的问题
  • 提问:arm9上对usb设备usb四根线数据的截取
  • USB同一个端口,USB协议不同对应不同的总线
  • linux主机检测不到开发板(USB-USB连接)
  • usb键盘和usb鼠标对应的设备文件是哪两个?
  • [求助]关于usb-serial---------usb转串口没有设备
  • 挂载USB后,打开USB时找不到文件,都是文件夹,求解!
  • usb.c:usb 2(vend...) is not claimed by any active driver???
  • 安装usb-modeswitch时提示 找不到usb.h
  • 请教usb host和usb slave的区别
  • 请问如何在USB上安装Linux,并通过USB引导


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3