声明工作中函数的Linux传输参数

声明工作中函数的Linux传输参数,linux,linux-kernel,linux-device-driver,embedded-linux,Linux,Linux Kernel,Linux Device Driver,Embedded Linux,我试图编写一个事件工作队列,但遇到了一些问题 我使用Linux 2.6.36内核。DECLARE_WORK函数从3个参数更改为2个参数 问题是,旧的宣言是 DECLARE_WORK (struct work_struct name, void (*func)(void *), void *data); 新的是 DECLARE_WORK (struct work_struct name, void (*func)(void *)); 我认为void*数据指针是用来给出func

我试图编写一个事件工作队列,但遇到了一些问题

我使用Linux 2.6.36内核。DECLARE_WORK函数从3个参数更改为2个参数

问题是,旧的宣言是

 DECLARE_WORK  (struct work_struct name,  void (*func)(void *),  void *data); 
新的是

 DECLARE_WORK  (struct work_struct name,  void (*func)(void *)); 
我认为void*数据指针是用来给出func参数的。是这样吗? 新版本的DECLARE_WORK如何做到这一点

谢谢你的帮助


Peter

声明工作
主要用于不需要实例数据的静态工作项。您想要
初始化工作
。使用此选项初始化另一个结构(由您选择)的成员的
work\u结构,然后在回调中使用
container\u of
获取指向包含结构的指针。这种
模式的
容器在Linux内核中非常常见,因此熟悉它是个好主意


您可以在
wl1271\u netstack\u work
中看到一个示例-查看和。

谢谢您的回答。所以问题
的答案是void*数据指针给出func参数。是这样吗?
是否?它是用于此目的的,但它对于
容器\u of
并不是必需的,所以我想它是为了节省内存而被删除的。