Linux中,驱动程序在关闭设备节点,出现错误,或者要挂起时,需要取消一个已经被调度的work。cancel_work_sync()函数取消一个已经调度的work,该函数的工作流程图如下:

  • 线程池中的delayed_work,不能通过cancel_work_sync()函数取消
  • 调用者必须确保在cancel_work_sync()函数返回之前,work最后一次进入的工作队列不会被销毁
  • 获取或者设置work的WORK_STRUCT_PENDING_BIT标志位,必须在关中断的状态下进行
Logo

更多推荐