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