中断请求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,想试试行不行,没找到手机,所以就没有试,哈哈。不过这个功能也不是特别需要吧。

你可能感兴趣的:(thread,null,手机)