find_task_by_vpidを追ってみる


Rev.1を表示中。最新版はこちら

サンプルでお世話になっているfind_task_by_vpidを追ってみました。これはプロセスIDからtask_structを取得するものです。task_structにはstruct pid_link pids[PIDTYPE_MAX]が紐づいていて、この配列の添え字にそって、
PIDTYPE_PIDプロセスID
PIDTYPE_TGIDスレッドグループID
PIDTYPE_PGIDプロセスグループID
PIDTYPE_SIDセッションID
というプロセスIDリストが管理されています。またすべてのプロセスIDを管理するために、プロセスIDとプロセスIDネームスペース(プロセスIDにもネームスペースがあるみたい。)をハッシュテーブルする静的変数としてpid_hashが定義されているようです。

全プロセスIDをリストしているpid_hashから、まずpid構造体を取得します。pid構造体にはこのpidを使用しているtaskがリストされており、これからtask_strucを取得するというものでした。

流れは以下の通りです。(kernel/pid.c)
find_task_by_vpid
   find_task_by_pid_type_ns
       find_pid_ns
           pid_task


最終更新 2010/01/16 18:39:56 - north
(2010/01/16 18:39:56 作成)


検索

アクセス数
3689610
最近のコメント
コアダンプファイル - sakaia
list_head構造体 - yocto_no_yomikata
勧告ロックと強制ロック - wataash
LKMからのファイル出力 - 重松 宏昌
kprobe - ななし
ksetの実装 - スーパーコピー
カーネルスレッドとは - ノース
カーネルスレッドとは - nbyst
asmlinkageってなに? - ノース
asmlinkageってなに? - よろしく
Adsense
広告情報が設定されていません。