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

概要

引数

  • increment--nice値(プロセスの実行優先度)に加算する値

実装

/*

* sys_nice - change the priority of the current process.
* @increment: priority increment
*
* sys_setpriority is a more generic, but much slower function that
* does similar things.
*/

asmlinkage long sys_nice(int increment) {

	int retval;
	long nice;
	/*
	 * Setpriority might change our priority at the same moment.
	 * We don't have to worry. Conceptually one call occurs first
	 * and we have a single winner.
	 */
	if (increment < 0) {
		if (!capable(CAP_SYS_NICE))
			return -EPERM;
  • ケーパビリティCAP_SYS_NICEがカレントタスクで設定されている場合は1を返す
  • CAP_SYS_NICEは、nice()とsetpriority()システムコール利用制限を外す。またリアルタイムプロセスの生成を可能とすることを意味する
		if (increment < -40)
			increment = -40;
	}
	if (increment > 40)
		increment = 40;
	nice = PRIO_TO_NICE(current->static_prio) + increment;
  • 優先度値current->static_prioからnice値に変換する
    • プロセスの優先度:0〜39
    • Linuxの優先度の幅:0〜139
      • (リアルタイム:0〜99、通常の優先度:100〜139)
    • nice値(プロセスの実行優先度): -20(優先度高)〜19
    • 詳細はPRIO_TO_NICE()/linux2.6を参照
	if (nice < -20)
		nice = -20;
	if (nice > 19)
		nice = 19;
	retval = security_task_setnice(current, nice);
    • 詳細はsecurity_task_setnice()/linux2.6?を参照
	if (retval)
		return retval;
	set_user_nice(current, nice);
  • カレントタスクにniceを設定し、必要であれば再スケジュールを行う
	return 0;

}

呼出元


履歴

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

コメント/タグ?



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