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

概要

  • linux2.6/kernel/sched.cにて定義
  • 引数で渡されたプロセスIDに対応するタスクのスケジューラポリシーを取得する
スケジューリングポリシー
SCHED_NORMAL0
SCHED_FIFO1
SCHED_RR2

引数

  • pid--プロセスID

実装

/**

* sys_sched_getscheduler - get the policy (scheduling class) of a thread
* @pid: the pid in question.
*/

asmlinkage long sys_sched_getscheduler(pid_t pid) {

	int retval = -EINVAL;
	task_t *p;
	if (pid < 0)
		goto out_nounlock;
	retval = -ESRCH;
	read_lock(&tasklist_lock);
  • プリエンプティブを不可にし、読み込み用ロックtasklist_lockの取得を試みる
    • ロックの取得に失敗した場合は待ち状態に入る
    • 詳細はread_lock()/linux2.6を参照
	p = find_process_by_pid(pid);
  • プロセスID pidに対応するタスクを返す
    • プロセスIDがNULLならカレントプロセスを返す
    • タスクが見つからない場合はNULLを返す
    • 詳細はfind_process_by_pid()/linux2.6を参照
	if (p) {
		retval = security_task_getscheduler(p);
    • 詳細はsecurity_task_getscheduler()/linux2.6?を参照
		if (!retval)
			retval = p->policy;
	}
	read_unlock(&tasklist_lock);
  • 読み込みロックtasklist_lockを解放した後、プリエンプション機能を有効にし可能であれば自ら積極的にプリエンプション(実行権の移譲を行うこと)する

out_nounlock:

	return retval;

}

呼出元


履歴

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

コメント/タグ?



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