 cpu_workqueue_struct    kernel/workqueue .  
 .    .

/*

*   ,   :

*/

struct cpu_workqueue_struct {

spinlock_t lock; /*      */

long remove_sequence;   /*   

(   ) */
long insert_sequence;   /*     */
struct list head worklist;     /*   */
wait queue_head_t more_work;

wait queue head t work done;

struct workqueue struct *wq;   /*  

workqueue struct */
task t *thread; /*   */

int run depth;  /*    run workqueue */
};

,       ,    
 workqueue_struct.       
 cpu_workqueue_struct     , ,
    ,       
    .

   

        , -
   worker_thread ().    
         .  -
-    ,      -
  .      ,   ,
     .    
  work_struct,    <linux/workqueue .h>.
   .

struct work struct (

unsigned long pending; /*      ?*/
struct list head entry; /*     */
void (*func)(void *);   /* - */
void *data;     /*  - */
void *wq_data;  /*    */
struct timer_list timer; /* ,   
     */

};

                                       151