*参照元 [#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]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS