*参照元 [#n259db07] #backlinks *説明 [#m3e32bf5] -パス: [[linux-2.6.33/]] -パス: [[linux-2.6.33/kernel/workqueue.c]] -FIXME: これは何? --説明 **引数 [#if636949] -struct cpu_workqueue_struct *cwq -- --[[linux-2.6.33/cpu_workqueue_struct]] -struct work_struct *work -- --実行する仕事。 --[[linux-2.6.33/work_struct]] -struct list_head *head -- --[[linux-2.6.33/list_head]] **返り値 [#sce0cae2] -なし **参考 [#gacb8d4a] *実装 [#eec0d978] static void insert_work(struct cpu_workqueue_struct *cwq, struct work_struct *work, struct list_head *head) { trace_workqueue_insertion(cwq->thread, work); - --[[linux-2.6.33/trace_workqueue_insertion]] set_wq_data(work, cwq); - --[[linux-2.6.33/set_wq_data()]] /* * Ensure that we get the right work->data if we see the * result of list_add() below, see try_to_grab_pending(). */ smp_wmb(); list_add_tail(&work->entry, head); - --[[linux-2.6.33/smp_wmb()]] - --[[linux-2.6.33/list_add_tail()]] wake_up(&cwq->more_work); - --[[linux-2.6.33/wake_up()]] } *コメント [#c9c198b1]