プロセス記述子structpidを取得するカーネル関数



Kernel Function Get Process Descriptor Struct Pid



2.6.32

(1)struct pid * find_pid_ns(int nr、struct pid_namespace * ns)
機能:構造記述子pid名前空間解決プロセスとnrを取得するプロセス
いいえ:プロセスID
ns:名前空間
戻り値:ポインタプロセス記述子
ヘッダー:#incldue


(2)静的インラインstruct pid * get_pid(struct pid * pid)
機能:プロセス記述子のpid参照カウントがインクリメントされます
pid:プロセス記述子ポインター
戻り値:プロセス記述子ポインタを返します
ヘッダー:#include
コア実装:(2.6.32)
静的インラインstructpid * get_pid(struct pid * pid)
{{
if(pid)
atomic_inc(&pid-> count)//参照カウントをインクリメントします
pidを返す
}

(3)struct pid * find_get_pid(pid_t nr)
機能:取得した記述子の数pidプロセスプロセスとプロセス記述子の参照数に1を加えたもの
パラメータ:プロセスID
戻り値:プロセス記述子
ヘッダー:#include
コア実装:(2.6.32)
struct pid * find_get_pid(pid_t nr)
{{
struct pid * pid
rcu_read_lock()// RCU読み取りロックロック
pid = get_pid(find_vpid(nr))//参照カウントをインクリメントするための呼び出しget_pid
rcu_read_unlock()// RCU読み取りロック解除
pidを返す
}

(4)struct pid * find_vpid(int nr)
機能:プロセスIDのプロセスに従って取得された記述子
いいえ:プロセスID
戻り値:プロセス記述子
ヘッダー:#include
コア実装:(2.6.32)
struct pid * find_vpid(int nr)
{{
//プロセス記述子find_pid_nsを取得するための直接呼び出し
find_pid_ns(nr、current-> nsproxy-> pid_ns)を返します



}

例は次のとおりです。





4関数呼び出しの調査は次のとおりです。