声明工作中函数的Linux传输参数
我试图编写一个事件工作队列,但遇到了一些问题 我使用Linux 2.6.36内核。DECLARE_WORK函数从3个参数更改为2个参数 问题是,旧的宣言是声明工作中函数的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
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
并不是必需的,所以我想它是为了节省内存而被删除的。