PFB伪代码:
struct work_struct my_work;
my_wq = alloc_workqueue();
INIT_WORK(&my_work, worker_func);
void worker_func() {
if (condition)
queue_work(my_wq, my_work);
}
这是允许的吗?
是的,完全允许在执行其功能时重新提交作品。
还允许取消分配执行功能的工作结构。工作队列的实现已经准备好了(kernel/workqueue.c):
允许从调用它的函数内部释放 struct work_struct,我们也需要考虑 lockdep ......