• Tejun Heo's avatar
    workqueue: prepare for WQ_UNBOUND implementation · bdbc5dd7
    Tejun Heo authored
    In preparation of WQ_UNBOUND addition, make the following changes.
    
    * Add WORK_CPU_* constants for pseudo cpu id numbers used (currently
      only WORK_CPU_NONE) and use them instead of NR_CPUS.  This is to
      allow another pseudo cpu id for unbound cpu.
    
    * Reorder WQ_* flags.
    
    * Make workqueue_struct->cpu_wq a union which contains a percpu
      pointer, regular pointer and an unsigned long value and use
      kzalloc/kfree() in UP allocation path.  This will be used to
      implement unbound workqueues which will use only one cwq on SMPs.
    
    * Move alloc_cwqs() allocation after initialization of wq fields, so
      that alloc_cwqs() has access to wq->flags.
    
    * Trivial relocation of wq local variables in freeze functions.
    
    These changes don't cause any functional change.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    bdbc5dd7
workqueue.c 93.9 KB