2023年4月27日

RCU-5——RCU案例汇总

摘要: 基于 Linux-5.10 一、经典(可抢占)RCU 1. 例子-RCU链表 假设链表节点和头结点如下: typedef struct { struct list_head link; struct rcu_head rcu; //used for call_rcu() int key; int v 阅读全文

posted @ 2023-04-27 21:10 Hello-World3 阅读(144) 评论(0) 推荐(0) 编辑

RCU-4——不可抢占RCU代码分析

摘要: 基于 Linux-5.10 一、不可抢占RCU 1. 不可抢占RCU不允许进程在读端临界区被其它进程抢占,使用函数 rcu_read_lock_sched()/rcu_read_unlock_sched() 标记读临界区。前者禁止内核抢占,后者开启内核抢占。 static inline void r 阅读全文

posted @ 2023-04-27 21:04 Hello-World3 阅读(149) 评论(0) 推荐(0) 编辑

RCU-3——经典(可抢占)RCU代码分析

摘要: 基于 Linux-5.10 一、相关数据结构 1. struct rcu_state rcu_state 用于描述RCU全局状态。 struct rcu_state { struct rcu_node node[NUM_RCU_NODES]; /* Hierarchy. */ struct rcu_ 阅读全文

posted @ 2023-04-27 20:58 Hello-World3 阅读(565) 评论(0) 推荐(0) 编辑

RCU-2——RCU初探

摘要: 一、RCU简介 RCU(Read-Copy-Update)的意思是读-复制-更新,是根据原理命名的。写者修改对象的逻辑是: 首先复制一个副本,然后更新这个副本,最后使用新的对象替换旧的对象。在写者执行复制更新的时候读者可以读数据。 写者删除对象,必须要等到所有读者结束访问,才能执行销毁操作。RCU的 阅读全文

posted @ 2023-04-27 20:37 Hello-World3 阅读(415) 评论(0) 推荐(0) 编辑

导航