max*_*max 13 kernel linux-kernel
Linux工作队列是具有进程上下文的内核级线程.我试图用它作为kthread的替代品,它没有特定的进程上下文.但是如何将数据传递到工作队列?work_struct有一个数据字段,类型为atomic_long_t.我无法将指针传递给此字段.我该怎么做?
另外,我找不到工作队列的单个具体示例.你能建议吗?
Gnu*_*rou 20
如果要将数据传递到工作队列函数,只需将work_struct结构嵌入到自己的数据结构中,然后container_of在工作函数中使用它来检索它.
至于一个简单的例子,内核充满了它 - 只是git grep work_struct.您可以查看drivers/cpufreq/cpufreq.c(handle_update函数)一个简单的示例.下面还文章嵌入了一个例子,在结束时,但它不使用container_of,而是依赖于一个事实,即一个结构的第一部件具有相同的地址作为其父:
http://www.ibm.com/developerworks/linux/library/l-tasklets/index.html