android底层驱动学习之工作队列work_queue相关参数
今早看了与工作队列有关的相关知识,下面总结下:
1. 什么是工作队列:
工作队列(work queue)是另外一种将工作推后执行的形式。工作队列可以把工作推后,交由一个内核线程去执行—这个下半部分总是会在进程上下文执行,但由于是内核线程,其不能访问用户空间。最重要特点的就是工作队列允许重新调度甚至是睡眠。
实际上,工作队列的本质就是将工作交给内核线程处理,因此其可以用内核线程替换。但是内核线程的创建和销毁对编程者的要求较高,而工作队列实现了内核线程的封装,不易出错,所以我们也推荐使用工作队列。
工作队列和tasklet都是可以将工作推后的形式
2.首先是不是要先来看下工作队列的数据结构,如下:
l struct work_struct //一个工作的结构体
{
atomic_long_tdata;//工作处理函数的参数
structlist_head entry;
work_func_tfunc;//工作处理函数
#ifdef CONFIG_LOCKD