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 };
|
参考文章
- 浅谈Linux内核中断下半部——工作队列(work queue)