• Tejun Heo's avatar
    workqueue: introduce workqueue_attrs · 7a4e344c
    Tejun Heo authored
    Introduce struct workqueue_attrs which carries worker attributes -
    currently the nice level and allowed cpumask along with helper
    routines alloc_workqueue_attrs() and free_workqueue_attrs().
    
    Each worker_pool now carries ->attrs describing the attributes of its
    workers.  All functions dealing with cpumask and nice level of workers
    are updated to follow worker_pool->attrs instead of determining them
    from other characteristics of the worker_pool, and init_workqueues()
    is updated to set worker_pool->attrs appropriately for all standard
    pools.
    
    Note that create_worker() is updated to always perform set_user_nice()
    and use set_cpus_allowed_ptr() combined with manual assertion of
    PF_THREAD_BOUND instead of kthread_bind().  This simplifies handling
    random attributes without affecting the outcome.
    
    This patch doesn't introduce any behavior changes.
    
    v2: Missing cpumask_var_t definition caused build failure on some
        archs.  linux/cpumask.h included.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
    Reviewed-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    7a4e344c
workqueue.c 107 KB