【RK3588 Linux 5.x 内核编程】-内核中断与工作队列(Work Queue)
内核中断与工作队列(Work Queue)
文章目录
在前面的文章中,介绍了Linux内核的中断及中断处理机制。我们知道,中断不适合处理长时间任务,Linux的中断处理机制中上半部(Top Half)和下半部(Bottom Half)巧妙在将中断响应和中断任务处理分离,即,在上半部中,快速响应响应,仅执行时间关键的工作,例如确认收到中断或重置硬件。然后将中断处理任务交由下半部处理。对于下半部处理,Linux内核提供了如下处理机制:
- Work Queue
- Threaded IRQs
- SoftIRQ
- Tasklets
本文将详细介绍如何使用工作队列(Work Queue)。
1、工作队列介绍
工作队列是在 Linux 内核 2.6 版本中加入的。 工作队列是一种不同形式的延迟任务。 工作队列将任务推迟到内核线程; 下半部总是在进程上下文中运行。 因为 workqueue 允许用户创建内核线程并将工作绑定到内核线程。 因此,这将在进程上下文中运行,并且工作队列可以休眠。
- 将延时工作放到工作队列具有进程上下文的所有常见优点。
- 最重要的是,工作队列是可调度的,因此可以它可以休眠。
通常,很容易在
原文地址:https://blog.csdn.net/wujuxKkoolerter/article/details/143785821
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!