自学内容网 自学内容网

【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)!