【RK3588 Linux 5.x 内核编程】-内核中断与ThreadedIRQ
内核中断与ThreadedIRQ
文章目录
- 内核中断与ThreadedIRQ
-
- 1、Threaded IRQ介绍
- 2、Threaded IRQ相关API
- 3、驱动实现
- 4、驱动验证
当 Interrupt 触发时,Interrupt handler 应该执行得非常快,它不应该运行更多的时间(它不应该执行耗时的任务)。 如果我们有执行更多任务的中断处理程序,那么我们需要将其分成上半部分和下半部分。
上半部分只是我们的中断处理程序。 如果我们想做更少的工作,那么上半部分就绰绰有余了。 在那种情况下不需要下半部分。 但是如果我们在中断命中时有更多的工作,那么我们需要下半部分。 下半部分在未来更方便的时间运行,并启用所有中断。 因此,下半部分的工作是执行中断处理程序未执行的任何与中断相关的工作。
ThreadIRQ为Linux内核下半部分处理机制之一。本文将详细介绍如何使用ThreadIRQ。
1、Threaded IRQ介绍
在我们之前的教程中看到我们介绍了Linux内核中断中的下半部分工作机制(Workqueue、softirq、Tasklets),我们必须注册这些 下半部分处理函数并要求内核调用这些下半部分处理函数。 为了进一步简化该过程,Linux 引入了线程化 IRQ。 使用这个特性,Linux 就像是,你只要给我处理函数(上半部分和下半部分),我会在合适的时间调用这些函数。 所以,有了这个线程化的 IRQ