プロセス記述子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関数呼び出しの調査は次のとおりです。