jollen.org

Jollen 的 Blog
Jollen's email: jollen # jollen.org
more:  Jollen's Training

再探 sys_getpriority()

.作者:jollen/
.日期:October 20, 2006 4:13 PM


getpriority() 若指定 whichPRIO_PGRP 的話,那麼便能取得 process group 裡的「最大 priority 值」。先節錄相關 kernel code 如下:

asmlinkage long sys_getpriority(int which, int who)
{
		...
		case PRIO_PGRP:
			if (!who)
				who = process_group(current);
			do_each_task_pid(who, PIDTYPE_PGID, p) {
				niceval = 20 - task_nice(p);
				if (niceval > retval)
					retval = niceval;
			} while_each_task_pid(who, PIDTYPE_PGID, p);
			break;
		...
}

接續昨天的 sys_getpriority(),讓我們再來看一下 PRIO_PGRP 參數的實作:

1. 如果 who 是 0 的話,先呼叫 process_group() 取得 group ID。
2. 使用 do_each_task_pidwhile_each_task_pid 巨集做迴圈。
3. 在迴圈裡面,呼叫 task_nice() 取得 process 的 priority,然後判斷目前的 nice 值是否大於先前的 nice 值。這麼做的用意是「找到 process group 裡最大的 nice 值 (lowest priority) 後回傳」。

跟上我們的腳步:請讀以下的文章,再看這篇日記!

Tags:

純手工打造說明:技術專欄文章為 Jollen 原創,內容皆為人工撰寫,無 AI 生成。轉載請註明出處與作者,並全文引用。轉載時請在文章開頭或結尾明顯處註明「本文出處:https://www.jollen.org,已取得原作者同意並授權使用。」
訂閱電子報:不定期 Jollen's Blog 精選文章隨 Moko365 電子報寄送;請透過 Moko365 電子報訂閱(可隨時取消)。

Copyright(c) 2001–2006 www.jollen.org. All rights reserved.
Last update: 2026-07-22