• T
    workqueue: unify local CPU queueing handling · 57469821
    Tejun Heo 提交于
    Queueing functions have been using different methods to determine the
    local CPU.
    
    * queue_work() superflously uses get/put_cpu() to acquire and hold the
      local CPU across queue_work_on().
    
    * delayed_work_timer_fn() uses smp_processor_id().
    
    * queue_delayed_work() calls queue_delayed_work_on() with -1 @cpu
      which is interpreted as the local CPU.
    
    * flush_delayed_work[_sync]() were using raw_smp_processor_id().
    
    * __queue_work() interprets %WORK_CPU_UNBOUND as local CPU if the
      target workqueue is bound one but nobody uses this.
    
    This patch converts all functions to uniformly use %WORK_CPU_UNBOUND
    to indicate local CPU and use the local binding feature of
    __queue_work().  unlikely() is dropped from %WORK_CPU_UNBOUND handling
    in __queue_work().
    Signed-off-by: NTejun Heo <tj@kernel.org>
    57469821
workqueue.c 103.0 KB