系统相关
首页 > 系统相关> > 用于DECLARE_WORK中功能的Linux传输参数

用于DECLARE_WORK中功能的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 * data指针用于提供func参数.那正确吗?
以及如何使用新版本的DECLARE_WORK?

谢谢您的帮助

彼得

解决方法:

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

您可以使用wl1271_netstack_work看到一个示例-查看initialization pointthe callback.

标签:embedded-linux,linux-kernel,linux-device-driver,linux
来源: https://codeday.me/bug/20191031/1979670.html