• Tejun Heo's avatar
    sched: add hooks for workqueue · 21aa9af0
    Tejun Heo authored
    Concurrency managed workqueue needs to know when workers are going to
    sleep and waking up.  Using these two hooks, cmwq keeps track of the
    current concurrency level and throttles execution of new works if it's
    too high and wakes up another worker from the sleep hook if it becomes
    too low.
    
    This patch introduces PF_WQ_WORKER to identify workqueue workers and
    adds the following two hooks.
    
    * wq_worker_waking_up(): called when a worker is woken up.
    
    * wq_worker_sleeping(): called when a worker is going to sleep and may
      return a pointer to a local task which should be woken up.  The
      returned task is woken up using try_to_wake_up_local() which is
      simplified ttwu which is called under rq lock and can only wake up
      local tasks.
    
    Both hooks are currently defined as noop in kernel/workqueue_sched.h.
    Later cmwq implementation will replace them with proper
    implementation.
    
    These hooks are hard coded as they'll always be enabled.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Ingo Molnar <mingo@elte.hu>
    21aa9af0
sched.c 216 KB