Linux工作队列是指具有进程上下文的内核级线程.我试图用它作为kthread的替代品,它没有特定的进程上下文.但是如何将数据传递到工作队列? work_struct具有类型为atomic_long_t的数据字段.我无法传递指向此字段的指针.我该怎么做?
解决方法
如果要将数据传递到工作队列函数,只需将work_struct结构嵌入到自己的数据结构中,并在工作函数中使用container_of来检索它.
对于一个简单的例子,内核是完整的 – 只需git grep work_struct.你可以看一下driver / cpufreq / cpufreq.c(handle_update函数)一个简单的例子.下面的文章最后还嵌入了一个例子,但是它不使用container_of,而是依赖于一个结构的第一个成员与其父代的地址相同的事实:
http://www.ibm.com/developerworks/linux/library/l-tasklets/index.html
原文地址:https://www.jb51.cc/linux/393282.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。