搜索

1

主题

3

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
发表于 2015-7-31 16:34:20 9250 浏览 2 回复

外部中断request_irq与free_irq问题

本帖最后由 BHZ201314 于 2015-7-31 16:33 编辑

1.在一个驱动中通过request_irq()注册了5个按键中断,运行的时候可以用cat /proc/interrup 查看对应的中断号和中断名字如图

最后调用free_irq()来释放中断之后还是使用cat /proc/interrupt还是能看到中断号如图

,但是对应的中断名字已经看不到了,是空白的,这种情况是正常的吗?

2.还有释放中断后我再去按一次比如home按键 ,然后insmod 4412buttons.ko 时直接进入了中断服务程序执行了代码,这种情况也是正常的吗?


注:我的按键驱动是写成模块的, request_irq()在int __init buttons_init(void)里面,free_irq()在void __exit buttons_exit (void)里面。
中断函数:
irqreturn_t buttons_irq(int irq,void *dev_id)
{
        int pinval;
        pinval = gpio_get_value(pcdevp->gpio);
        if(pinval)
        {
                key_val = 0x80|pcdevp->keynum;
        }
        else
        {
                key_val = 0x00|pcdevp->keynum;
        }
        printk("key_val = %d!\n",key_val);
        ev_press = 1;
        wake_up_interruptible(&button_waitq);

        printk("%s button pressed!\n",pcdevp->buttons_name);
        printk("exit buttons_irq!\n");

        return IRQ_RETVAL(IRQ_HANDLED);
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

48

主题

598

帖子

1923

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1923
发表于 2015-7-31 23:02:41
你调用的这个中断号是不是被占用了
回复 点赞

使用道具 举报

1

主题

3

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
 楼主| 发表于 2015-8-1 12:28:46
TOPEET_moon 发表于 2015-7-31 23:02
你调用的这个中断号是不是被占用了

这几个中断号一直可以申请释放的,没有被占用
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

 
快速回复 返回顶部 返回列表