*参照元 [#qbaff3d2] #backlinks *説明 [#t86c3f3a] -パス: [[linux-2.6.33/kernel/workqueue.c]] -仕事を実行する CPU を指定して、ワークキューに仕事を追加する。 **引数 [#pf295645] -int cpu --仕事を実行する CPU -struct workqueue_struct *wq --仕事を追加したいワークキュー --[[linux-2.6.33/workqueue_struct]] -struct work_struct *work --実行する仕事。 --[[linux-2.6.33/work_struct]] **返り値 [#c2e6d3b9] -int --仕事をキューに追加した場合は 1、 キューに追加しなかった場合は 0(既にキューに追加されているなど) **参考 [#u58dce9c] *実装 [#p77e2477] /** * queue_work_on - queue work on specific cpu * @cpu: CPU number to execute work on * @wq: workqueue to use * @work: work to queue * * Returns 0 if @work was already on a queue, non-zero otherwise. * * We queue the work to a specific CPU, the caller must ensure it * can't go away. */ int queue_work_on(int cpu, struct workqueue_struct *wq, struct work_struct *work) { int ret = 0; if (!test_and_set_bit(WORK_STRUCT_PENDING, work_data_bits(work))) { - --[[linux-2.6.33/WORK_STRUCT_PENDING]] - --[[linux-2.6.33/work_data_bits()]] - --[[linux-2.6.33/test_and_set_bit()]] BUG_ON(!list_empty(&work->entry)); - --[[linux-2.6.33/BUG_ON()]] - --[[linux-2.6.33/list_empty()]] __queue_work(wq_per_cpu(wq, cpu), work); ret = 1; - --[[linux-2.6.33/wq_per_cpu()]] - --[[linux-2.6.33/__queue_work()]] } return ret; } EXPORT_SYMBOL_GPL(queue_work_on); -GPL ライセンスのモジュールにのみシンボルを公開する。 -GPL のモジュールにのみシンボルを公開する。 --[[linux-2.6.33/EXPORT_SYMBOL_GPL()]] *コメント [#r6bb2bac]