*参照元 [#d32e4e4b]
#backlinks

*説明 [#t85010c0]
-パス: [[linux-2.6.33/include/linux/workqueue.h]]

-ワークキューで実行する仕事を初期化する。
--[[linux-2.6/ワークキュー]]


**引数 [#x5c3aecb]
-_work
--初期化する対象となる work_struct 型の変数名
--[[linux-2.6.33/work_struct]]
-_func
--work_func_t 型の関数
--[[linux-2.6.33/work_func_t]]
-_onstack
--


**返り値 [#fdaa2be8]
-なし


**参考 [#t39980b4]


*実装 [#c93e4dd0]

**CONFIG_LOCKDEP が有効なとき [#q79da411]

 /*
  * initialize all of a work item in one go
  *
  * NOTE! No point in using "atomic_long_set()": using a direct
  * assignment of the work data initializer allows the compiler
  * to generate better code.
  */
 #ifdef CONFIG_LOCKDEP
-CONFIG_LOCKDEP が有効のとき
--[[linux-2.6.33/CONFIG_LOCKDEP]]

 #define __INIT_WORK(_work, _func, _onstack)				\
 	do {								\
 		static struct lock_class_key __key;			\
 									\
 		__init_work((_work), _onstack);				\
-
--[[linux-2.6.33/__init_work()]]

 		(_work)->data = (atomic_long_t) WORK_DATA_INIT();	\
-
--[[linux-2.6.33/WORK_DATA_INIT()]]

 		lockdep_init_map(&(_work)->lockdep_map, #_work, &__key, 0);\
-
--[[linux-2.6.33/lockdep_init_map()]]

 		INIT_LIST_HEAD(&(_work)->entry);			\
-
--[[linux-2.6.33/INIT_LIST_HEAD()]]

 		PREPARE_WORK((_work), (_func));				\
-仕事の中身を設定する。
--[[linux-2.6.33/PREPARE_WORK()]]

 	} while (0)


**CONFIG_LOCKDEP が無効のとき [#u641d800]

 #else
 #define __INIT_WORK(_work, _func, _onstack)				\
 	do {								\
 		__init_work((_work), _onstack);				\
 		(_work)->data = (atomic_long_t) WORK_DATA_INIT();	\
 		INIT_LIST_HEAD(&(_work)->entry);			\
 		PREPARE_WORK((_work), (_func));				\
 	} while (0)
 #endif


*コメント [#k60e13f5]

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