Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240755
  • 博文数量: 32
  • 博客积分: 557
  • 博客等级: 中士
  • 技术积分: 431
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-20 23:05
文章分类

全部博文(32)

文章存档

2015年(4)

2014年(2)

2012年(4)

2011年(22)

分类: LINUX

2011-07-06 23:03:23

RCU的代码极其复杂,主要文件包括:
include/linux/rcupdate.h
kernel/rcutree.h
kernel/rcutree.c等
主要数据结构:
rcu_state/rcu_data/rcu_head等

请看附件,使用请标明出处,谢谢!
阅读(5807) | 评论(12) | 转发(0) |
给主人留下些什么吧!~~

wangjianchangdx2011-07-07 23:49:08

program = algorithm + data structure
后两者是可以转换的

algorithm: 初始化,各cpu context switch时处理,最后一个CPU的处理
ds: rcu_state, rcu_data, rcu_node-level, rcu_head
concepts related: grace preiod, quiescent state

wangjianchangdx2011-07-07 23:29:41

rcu_process_callbacks负责调用rcu_data中注册的回调函数;
而rcu_process_callbacks本身在rcu_init中被注册为softirq:
open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);

softirq静态分配,由do_softirq()函数负责调用各个softirq的action,
而do_softirq由在内核启动时启动的ksoftirqd内核线程来执行(详见ULK3)。

wangjianchangdx2011-07-06 23:31:30

Document/RCU中有一些描述,其中whatIsRCU.txt中给出了几个lwn中的链接,是RCU的实现者写的,可以一看;
这位兄弟写得相当详细,佩服~[http://blogold.chinaunix.net/u1/51562/showart_1341707.html]

wangjianchangdx2011-07-06 23:27:21

kernel/rcutree.c: rcu_init()初始化rcu机制,在系统启动时的start_kernel中被调用

这么长时间都像无头苍蝇一样乱撞,自己认真想一下,找到主线也就好了

wangjianchangdx2011-07-06 23:23:12

跟着call_back func走,所有的操作都在rcutree.c中定义,可以索引到大部分的rcu初始化,更新,invoke机制,这是旧数据结构回收的主要任务。