首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux内核中使用workQueue传递/共享数据

在linux内核中使用workQueue传递/共享数据
EN

Stack Overflow用户
提问于 2014-09-28 18:06:16
回答 1查看 3.8K关注 0票数 4

有没有人能帮我理解一下“传递数据(共享或私有)”给workQueue?

1:声明一个回调/工作处理程序

代码语言:javascript
复制
static void sample_work_fn(struct work_struct *Wq)
{
...........
...........
}

2:静态填充work_struct结构

代码语言:javascript
复制
static DECLARE_WORK(sample_work, sample_work_fn);

3:调度工作队列

代码语言:javascript
复制
static void samp_sysrq(int arg)
{
        schedule_work(sample_work);
}

在这里,如果我需要使用我的工作队列传递/共享数据,怎么可能呢?

EN

回答 1

Stack Overflow用户

发布于 2014-09-30 00:57:27

谢谢本杰明

我发现"Linux transfer parameter for function in DECLARE_WORK“中的信息真的很直接,它真的帮助我理解了。此链接表示

DECLARE_WORK主要用于静态工作项,其中不需要实例数据。你想要INIT_WORK。使用它来初始化作为另一个(您选择的)结构的成员的work_struct,然后在回调中使用container_of来获取指向包含结构的指针。这种container_of模式在Linux内核中非常常见,所以最好熟悉一下它!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26083792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档