*参照元 [#o1ae00cc]
#backlinks

*説明 [#jdc0bbed]
-パス: [[linux-2.6.33/kernel/workqueue.c]]

-FIXME: これは何?
--説明


**引数 [#fe306a5d]
-struct cpu_workqueue_struct *cwq
--
--[[linux-2.6.33/cpu_workqueue_struct]]
-int cpu
--


**返り値 [#e027f9d3]
-int
--成功した場合は 0、失敗した場合は 0 以外。


**参考 [#y624c64a]


*実装 [#g5a06202]
 static int create_workqueue_thread(struct cpu_workqueue_struct *cwq, int cpu)
 {
 	struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
 	struct workqueue_struct *wq = cwq->wq;
 	const char *fmt = is_wq_single_threaded(wq) ? "%s" : "%s/%d";
 	struct task_struct *p;
 
-
--[[linux-2.6.33/MAX_RT_PRIO]]
-
--[[linux-2.6.33/sched_param]]
-
--[[linux-2.6.33/workqueue_struct]]
-
--[[linux-2.6.33/is_wq_single_threaded()]]
-
--[[linux-2.6.33/task_struct]]

 	p = kthread_create(worker_thread, cwq, fmt, wq->name, cpu);
-
--[[linux-2.6.33/worker_thread()]]
-
--[[linux-2.6.33/kthread_create()]]

 	/*
 	 * Nobody can add the work_struct to this cwq,
 	 *	if (caller is __create_workqueue)
 	 *		nobody should see this wq
 	 *	else // caller is CPU_UP_PREPARE
 	 *		cpu is not on cpu_online_map
 	 * so we can abort safely.
 	 */
 	if (IS_ERR(p))
 		return PTR_ERR(p);
-
--[[linux-2.6.33/IS_ERR()]]
-
--[[linux-2.6.33/PTR_ERR()]]

 	if (cwq->wq->rt)
 		sched_setscheduler_nocheck(p, SCHED_FIFO, &param);
 	cwq->thread = p;
 
-
--[[linux-2.6.33/SCHED_FIFO]]
-
--[[linux-2.6.33/sched_setscheduler_nocheck()]]

 	trace_workqueue_creation(cwq->thread, cpu);
 
-
--[[linux-2.6.33/trace_workqueue_creation()]]

 	return 0;
 }


*コメント [#r5e69c60]

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