linux-2.6.33/worker_thread()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#v825bc70]
#backlinks
*説明 [#u521d1fc]
-パス: [[linux-2.6.33/kernel/workqueue.c]]
-ワークキューの仕事を処理するカーネルスレッドの main 関数。
--[[linux-2.6/ワークキュー]]
**引数 [#af311ac9]
-void *__cwq
--create_workqueue_thread() により、
struct cpu_workqueue_struct のポインタが渡される。
--[[linux-2.6.33/create_workqueue_thread()]]
--[[linux-2.6.33/cpu_workqueue_struct]]
**返り値 [#uab57ae0]
-int
--常に 0 を返す?
**参考 [#m7cd8ff8]
*実装 [#o54080c0]
static int worker_thread(void *__cwq)
{
struct cpu_workqueue_struct *cwq = __cwq;
DEFINE_WAIT(wait);
-
--[[linux-2.6.33/cpu_workqueue_struct]]
-
--[[linux-2.6.33/DEFINE_WAIT()]]
if (cwq->wq->freezeable)
set_freezable();
-
--[[linux-2.6.33/set_freezable()]]
for (;;) {
prepare_to_wait(&cwq->more_work, &wait, TASK_INTERRUPT...
-
--[[linux-2.6.33/TASK_INTERRUPTIBLE()]]
-
--[[linux-2.6.33/prepare_to_wait()]]
if (!freezing(current) &&
!kthread_should_stop() &&
list_empty(&cwq->worklist))
schedule();
finish_wait(&cwq->more_work, &wait);
-
--[[linux-2.6.33/current(global)]]
-
--[[linux-2.6.33/freezing()]]
-
--[[linux-2.6.33/kthread_should_stop()]]
-
--[[linux-2.6.33/list_empty()]]
-
--[[linux-2.6.33/shedule()]]
-
--[[linux-2.6.33/finish_wait()]]
try_to_freeze();
-
--[[linux-2.6.33/try_to_freeze()]]
if (kthread_should_stop())
break;
run_workqueue(cwq);
-
--[[linux-2.6.33/run_workqueue()]]
}
return 0;
}
*コメント [#v7205051]
終了行:
*参照元 [#v825bc70]
#backlinks
*説明 [#u521d1fc]
-パス: [[linux-2.6.33/kernel/workqueue.c]]
-ワークキューの仕事を処理するカーネルスレッドの main 関数。
--[[linux-2.6/ワークキュー]]
**引数 [#af311ac9]
-void *__cwq
--create_workqueue_thread() により、
struct cpu_workqueue_struct のポインタが渡される。
--[[linux-2.6.33/create_workqueue_thread()]]
--[[linux-2.6.33/cpu_workqueue_struct]]
**返り値 [#uab57ae0]
-int
--常に 0 を返す?
**参考 [#m7cd8ff8]
*実装 [#o54080c0]
static int worker_thread(void *__cwq)
{
struct cpu_workqueue_struct *cwq = __cwq;
DEFINE_WAIT(wait);
-
--[[linux-2.6.33/cpu_workqueue_struct]]
-
--[[linux-2.6.33/DEFINE_WAIT()]]
if (cwq->wq->freezeable)
set_freezable();
-
--[[linux-2.6.33/set_freezable()]]
for (;;) {
prepare_to_wait(&cwq->more_work, &wait, TASK_INTERRUPT...
-
--[[linux-2.6.33/TASK_INTERRUPTIBLE()]]
-
--[[linux-2.6.33/prepare_to_wait()]]
if (!freezing(current) &&
!kthread_should_stop() &&
list_empty(&cwq->worklist))
schedule();
finish_wait(&cwq->more_work, &wait);
-
--[[linux-2.6.33/current(global)]]
-
--[[linux-2.6.33/freezing()]]
-
--[[linux-2.6.33/kthread_should_stop()]]
-
--[[linux-2.6.33/list_empty()]]
-
--[[linux-2.6.33/shedule()]]
-
--[[linux-2.6.33/finish_wait()]]
try_to_freeze();
-
--[[linux-2.6.33/try_to_freeze()]]
if (kthread_should_stop())
break;
run_workqueue(cwq);
-
--[[linux-2.6.33/run_workqueue()]]
}
return 0;
}
*コメント [#v7205051]
ページ名: