为什么将指针复制到变量并再次读取?

时间:2013-01-15 01:59:48

标签: linux-kernel

我在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复制到链接变量并再次读取链接变量? 我发现许多代码将指针复制到变量中并间接读取。

是否有同步问题或是否有利于代码阅读?

1 个答案:

答案 0 :(得分:1)

当调用hlist_add_head_rcu()时,可能只是让我们再次取消引用&task->pids[type]。但智能编译器本身应该能够做到这一点。