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

概要

引数

第一引数

  • hoge--hoge型

実装

/**

* finish_task_switch - clean up after a task-switch
* @prev: the thread we just switched away from.
*
* We enter this with the runqueue still locked, and finish_arch_switch()
* will unlock it along with doing any other architecture-specific cleanup
* actions.
*
* Note that we may have delayed dropping an mm in context_switch(). If
* so, we finish that here outside of the runqueue lock.  (Doing it
* with the lock held can cause deadlocks; see schedule() for
* details.)
*/

static void finish_task_switch(task_t *prev)

	__releases(rq->lock)

{

	runqueue_t *rq = this_rq();
	struct mm_struct *mm = rq->prev_mm;
	unsigned long prev_task_flags;
	rq->prev_mm = NULL;
	/*
	 * A task struct has one reference for the use as "current".
	 * If a task dies, then it sets EXIT_ZOMBIE in tsk->exit_state and
	 * calls schedule one last time. The schedule call will never return,
	 * and the scheduled task must drop that reference.
	 * The test for EXIT_ZOMBIE must occur while the runqueue locks are
	 * still held, otherwise prev could be scheduled on another cpu, die
	 * there before we look at prev->state, and then the reference would
	 * be dropped twice.
	 *		Manfred Spraul <manfred@colorfullife.com>
	 */
	prev_task_flags = prev->flags;
	finish_arch_switch(rq, prev);
	if (mm)
		mmdrop(mm);
  • メモリディスクリプタmmを(参照されていないのであれば)解放する
	if (unlikely(prev_task_flags & PF_DEAD))
		put_task_struct(prev);

}

呼出元


履歴

  • 作者:hogehoge(ページを作った人の情報)
  • 日付:2004/1/1(ページの作成した日付)
  • 対象:2.6.10(対象のLinuxカーネルのバージョン)
    更新日更新者更新内容

コメント



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