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

概要

  • kernel/sched.cにて定義
  • 他のCPUのランキューから自分のCPUのランキューにタスクを移動させる

引数

  • src_rq--他のCPUのランキュー
  • src_array--src_rqの優先度スロット
  • p--移動させるタスク
  • this_rq--現在使用しているCPUのランキュー
  • this_array--this_rqの優先度スロット
  • this_cpu--現在使用しているCPU

実装

/*

* pull_task - move a task from a remote runqueue to the local runqueue.
* Both runqueues must be locked.
*/

static inline void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t *p,

	       runqueue_t *this_rq, prio_array_t *this_array, int this_cpu)

{

	dequeue_task(p, src_array);
	src_rq->nr_running--;
  • 取り除いたのでsrc_rqの数をデクリメント
	set_task_cpu(p, this_cpu);
  • 取り除かれたpを現在使用しているCPUにマッピングする
	this_rq->nr_running++;
  • 現在使用しているCPUのランキューに登録するためthis_rqの数をインクリメント
	enqueue_task(p, this_array);
	p->timestamp = (p->timestamp - src_rq->timestamp_last_tick)
				+ this_rq->timestamp_last_tick;
  • タイムスタンプを引き継ぐ
	/*
	 * Note that idle threads have a prio of MAX_PRIO, for this test
	 * to be always true for them.
	 */
	if (TASK_PREEMPTS_CURR(p, this_rq))
		resched_task(this_rq->curr);
  • ローカルAPICのフラグを調査&設定し、必要であればプロセッサ間通信(IPI)を行い再スケジュールを要求する

}

呼出元


履歴

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

コメント



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