このページを編集する際は、編集に関する方針に従ってください。

概要

  • kernel/sched.cにて定義
  • アイドルプロセスを実行中のCPUを返す

引数

  • cpu--CPU識別子
  • p--タスクディスクリプタ

実装

/*

* wake_idle() is useful especially on SMT architectures to wake a
* task onto an idle sibling if we would otherwise wake it onto a
* busy sibling.
*
* Returns the CPU we should wake onto.
*/

static int wake_idle(int cpu, task_t *p) {

	cpumask_t tmp;
	runqueue_t *rq = cpu_rq(cpu);
	struct sched_domain *sd;
	int i;
	if (idle_cpu(cpu))
		return cpu;
  • カレントプロセスがアイドルプロセスか調べる
  • カレントプロセスがアイドルプロセスではない場合、以下の処理を実行
	sd = rq->sd;
	if (!(sd->flags & SD_WAKE_IDLE))
		return cpu;
  • sd->flagsのSD_WAKE_IDLE(1000)のビットが立っていたらcpuを返して終了
	cpus_and(tmp, sd->span, p->cpus_allowed);
  • sd->span と p->cpus_allowed をAND演算を行い tmp に結果を入れる
	for_each_cpu_mask(i, tmp) {
		if (idle_cpu(i))
			return i;
  • iがアイドルプロセスか調べる
	}
	return cpu;

}

呼出元


履歴

  • 作者:ひら
  • 日付:2005/2/24
  • 対象:2.6.10
    更新日更新者更新内容

コメント



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-24 (火) 07:20:24 (3129d)