• Tejun Heo's avatar
    workqueue: remove global_cwq · a60dc39c
    Tejun Heo authored
    global_cwq is now nothing but a container for per-cpu standard
    worker_pools.  Declare the worker pools directly as
    cpu/unbound_std_worker_pools[] and remove global_cwq.
    
    * ____cacheline_aligned_in_smp moved from global_cwq to worker_pool.
      This probably would have made sense even before this change as we
      want each pool to be aligned.
    
    * get_gcwq() is replaced with std_worker_pools() which returns the
      pointer to the standard pool array for a given CPU.
    
    * __alloc_workqueue_key() updated to use get_std_worker_pool() instead
      of open-coding pool determination.
    
    This is part of an effort to remove global_cwq and make worker_pool
    the top level abstraction, which in turn will help implementing worker
    pools with user-specified attributes.
    
    v2: Joonsoo pointed out that it'd better to align struct worker_pool
        rather than the array so that every pool is aligned.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Joonsoo Kim <js1304@gmail.com>
    a60dc39c
workqueue_internal.h 2.01 KB