*参照元 [#l37b39c0]
#backlinks

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

-work_struct 型の変数を初期化するためのマクロ


**引数 [#d38e1094]
-n
--初期化する対象となる work_struct 型の変数(実体、ポインタではない)
--初期化する対象となる work_struct 型の変数名(ポインタではない)
--[[linux-2.6.33/work_struct]]
-f
--work_func_t 型の関数
--[[linux-2.6.33/work_func_t]]


**返り値 [#q311d26c]
-work_struct 型の初期値


**参考 [#hdffe370]


*実装 [#zde58c98]
 #define __WORK_INITIALIZER(n, f) {				\
 	.data = WORK_DATA_STATIC_INIT(),			\
 	.entry	= { &(n).entry, &(n).entry },			\
 	.func = (f),						\
 	__WORK_INIT_LOCKDEP_MAP(#n, &(n))			\
 	}
-data は atomic_long_t 型
--[[linux-2.6.33/atomic_long_t]]
--[[linux-2.6.33/WORK_DATA_STATIC_INIT()]]
-entry は list_head 型
--[[linux-2.6.33/list_head]]
-func は work_func_t 型
--[[linux-2.6.33/work_func_t]]
-func の後ろは lockdep_map 型の lockdep_map メンバが続く
--他のメンバ同様に .lockdep_map = ... と初期化しても良さそうだが、
lockdep_maps は CONFIG_LOCKDEP が有効でなければ存在しないため、
あえて名前を指定せずに初期化して、コンパイルエラーを回避している。
たぶんね。
--[[linux-2.6.33/__WORK_INIT_LOCKDEP_MAP()]]


*コメント [#q5840cee]

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