微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux内核 – 如何使用Linux工作队列

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 举报,一经查实,本站将立刻删除。

相关推荐