加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 交互 > 正文

深入理解RCU实现

发布时间:2016-10-29 16:06:37 所属栏目:交互 来源:站长网
导读:副标题#e# 深入理解RCU实现 ——基于 内核2.6.21 RCU实现(lvyilong316) RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构, 读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然

                                list_replace_rcu(e, ne);

                                call_rcu(&e->rcu, audit_free_rule, e);

                                return 0;

                        }

                }

                return -EFAULT;         /* No matching rule */

        }

修改操作立即可见

    前面两种情况,读者能够容忍修改可以在一段时间后看到,也就说读者在修改后某一时间段内,仍然看到的是原来的数据。在很多情况下,读者不能容忍看到旧的数据,这种情况下,需要使用一些新措施,如System V IPC,它在每一个链表条目中增加了一个deleted字段,标记该字段是否删除,如果删除了,就设置为真,否则设置为假,当代码在遍历链表时,核对每一个条目的deleted字段,如果为真,就认为它是不存在的。

还是以系统调用审计代码为例,如果它不能容忍旧数据,那么,读端代码应该修改为:

       static enum audit_state audit_filter_task(struct task_struct *tsk)

        {

                struct audit_entry *e;

                enum audit_state   state;

                rcu_read_lock();

                list_for_each_entry_rcu(e, &audit_tsklist, list) {

                        if (audit_filter_rules(tsk, &e->rule, NULL, &state)) {

                                spin_lock(&e->lock);

                                if (e->deleted) {

                                        spin_unlock(&e->lock);

                                        rcu_read_unlock();

                                        return AUDIT_BUILD_CONTEXT;

                                }

                                rcu_read_unlock();

                                return state;

                        }

                }

                rcu_read_unlock();

                return AUDIT_BUILD_CONTEXT;

        }

    注意,对于这种情况,每一个链表条目都需要一个spinlock保护,因为删除操作将修改条目的deleted标志。此外,该函数如果搜索到条目,返回时应当保持该条目的锁。

写端的删除操作将变成:

       static inline int audit_del_rule(struct audit_rule *rule,

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读