Linux カーネルの attach_pid 関数を読んでいます。そのコードは次のようなものです。
{
struct pid_link *link;
link = &task->pids[type];
link->pid = pid;
hlist_add_head_rcu(&link->node, &pid->tasks[type]);
}
task->pids[type]->pid = pid のようにポインタを直接設定しない理由がわかりません。task->pids をリンク変数にコピーし、リンク変数を再度読み取るのはなぜですか? ポインターを変数にコピーして間接的に読み取るコードを多数見つけました。
同期の問題がありますか、それともコードの読み取りに適していますか?