地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

pidからtask_structを取得

pid->task_structの取得のメモ

pidを元にpid構造体を取得。 それをもとにtask_struct構造体の取得。 といった流れになる。

static struct task_struct *find_task_struct(int nr) 
{
  // 肝はここ
  struct pid *pid = find_get_pid(nr);
  if (!pid) {
    pr_warn("couldn't find pid %d's task\n", nr);
    return NULL;
  }

  return pid_task(pid, PIDTYPE_PID);
} 

find_get_pid自体は下記のような実装

linux/pid.c at master · torvalds/linux · GitHub