中断请求request_irq

今天在跟marvell沟通问题的时候,觉得有些地方的代码看得不够仔细,于是细看了一下。发现了几个请求中断的函数。

request_threaded_irq,这个函数在内核中有注释,参数有好多,大概参数有handler,这是要指定的中断处理函数,thread_fn是要在内核线程中调用的函数,还有申请中断的flag,有SHARED共享,共享时dev_id不能为空,因为要在释放irq时区别共享的中断,这个dev_id一般为某个info,ONESHOT(这个线程函数thread_fn执行前关闭这个中断)。

当handler为空时,使用默认的处理,看到代码里申请内核线程方式的中断的时候直接把handler置为NULL,中断发生应该是直接把thread_fn扔到内核线程中让它去调用,申请时用了ONESHOT,也就是调用thread_fn时关闭了这个中断。这种扔到内核线程的方法其实很不错,放到了下半部去处理。让我想起了前段时候给marvell提的问题,看到他们在中断处理中用了mutex_lock互斥锁,当时别人也没有仔细看,说这个不行,让我提个问题,结果marvell的工程师说这是在下半部里面,才发现,啊,确实是在下半部里,大家都傻B了。

再看看request_irq,原来这个函数是对request_thread_irq的封装,它给request_thread_irq的thread_fn参数传进了一个NULL,也就是只申请中断处理函数,不要thread_fn,看来这样确实有点合适啊,哈哈。

扯来扯去,扯了一大篇了,哈哈。

今天弄高通8的问题,rpc啊,弄得不知道它用rpc传了些啥数据,蛋疼。。。

对了,今天早上去的时候还想弄弄那个触摸屏按键的长按问题,本来前段时间把那个驱动的代码基本重写了一遍,后来发现还是没有实现这个功能,今天早上又突发奇想,在evkeybit上或了一个EV_REP,想试试行不行,没找到手机,所以就没有试,哈哈。不过这个功能也不是特别需要吧。

转载于:https://www.cnblogs.com/linuxkernel/archive/2011/03/23/1993088.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值