有没有人能帮我理解一下“传递数据(共享或私有)”给workQueue?
1:声明一个回调/工作处理程序
static void sample_work_fn(struct work_struct *Wq)
{
...........
...........
}2:静态填充work_struct结构
static DECLARE_WORK(sample_work, sample_work_fn);3:调度工作队列
static void samp_sysrq(int arg)
{
schedule_work(sample_work);
}在这里,如果我需要使用我的工作队列传递/共享数据,怎么可能呢?
发布于 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内核中非常常见,所以最好熟悉一下它!
https://stackoverflow.com/questions/26083792
复制相似问题