在我的驱动程序中将调用queue_delayed_work并执行操作,
queue_delayed_work(queue, work, 60000);
然后在某些条件后停止此队列:
cancel_delayed_work_sync(work);
flush_delayed_work(work);
flush_workqueue(queue);
工人职能:
static void worker(struct work_struct *work) {
printk("this is worker function!\n");
...
queue_delayed_work(queue, work, 60000);
}
但我发现在我停止工作队列(取消和冲洗)后仍然可以触发工作人员功能 它是如何发生的,我应该如何避免呢?
谢谢!
答案 0 :(得分:0)
如果您需要取消提交到共享队列的工作条目,您可以使用cancel_delayed_work。
如果要刷新共享工作队列,则需要单独的函数:
void flush_scheduled_work(void)