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