在實踐work queue的時候遇到了INIT_WORK 參數報錯
查了之後才知道參數由3個變爲了兩個。
1. 如果在初始化的時候不需要傳遞參數可以有簡單方法,就是忽略參數,
如:
void xxx_wq_func(struct work_struct *work){
在這裏寫工作;
}
- 如果是在外部的參數傳遞則要定義一個結構:
struct foo{
struct work_struct worker;
void * worker_data;
......
};
struct foo *foo;
初始化工作隊列與綁定處理函數是這樣的:
void thing(struct foo *foo)
{
...
INIT_WORK(&foo->worker, foo_work_func);
foo->worker_data = silly_data;
...
}
接下來就是處理函數:
void xxx_work_func(struct work_struct *work)
{
struct foo *foo = container_of(work, struct foo, worker);
void *silly_data = foo->worker_data;
...
}