Linux 工作队列

一、工作队列

在中断的环境中我们无法直接执行带有延迟、IO等操作的函数。工作队列是一个任务列表,在工作队列启动后会不断获取队列头的工作项并执行,这个过程我们不需要关心,只需要设置工作项,并把工作项添加到工作队列即可。当任务添加到工作项之后,任务队列会按照任务加入的顺序依次执行。

二、工作项

1
2
3
4
5
6
7
8
struct work_struct {
atomic_long_t data; // 工作项需要的数据
struct list_head entry; // 用于连接下一个工作项,无需关心,由工作队列管理
work_func_t func; // 工作项需要执行的函数
#ifdef CONFIG_LOCKDEP
struct lockdep_map lockdep_map;
#endif
};

参考文章

  1. 浅谈Linux内核中断下半部——工作队列(work queue)
0%