Linux 2.6内核的新锁机制-RCU

http://www.ibm.com/developerworks/cn/linux/l-rcu/

 

函数摘要:
C代码
/*读者在读取由RCU保护的共享数据时使用该函数标记它进入读端临界区。*/ 
rcu_read_lock()  


/* 
该函数与rcu_read_lock配对使用,用以标记读者退出读端临界区。夹在这两个函数之间的代码区称为"读端临界区"(read-side critical section)。读端临界区可以嵌套,如图3,临界区2被嵌套在临界区1内。 
*/ 
rcu_read_unlock()  
 
/* 
该函数由RCU写端调用,它将阻塞写者,直到经过grace period后,即所有的读者已经完成读端临界区,写者才可以继续下一步操作。如果有多个RCU写端调用该函数,他们将在一个grace period之后全部被唤醒。 
*/ 
synchronize_rcu()  

/* 
函 数 call_rcu 也由 RCU 写端调用,它不会使写者阻塞,因而可以在中断上下文或 softirq 使用,而 synchronize_rcu、synchronize_kernel 和synchronize_shced 只能在进程上下文使用。该函数将把函数 func 挂接到 RCU回调函数链上,然后立即返回。一旦所有的 CPU 都已经完成端临界区操作,该函数将被调用来释放删除的将绝不在被应用的数据。参数 head 用于记录回调函数 func,一般该结构会作为被 RCU 保护的数据结构的一个字段,以便省去单独为该结构分配内存的操作。需要指出的是,函数 synchronize_rcu 的实现实际上使用函数call_rcu。 
*/ 
void fastcall call_rcu(struct rcu_head *head,  
                                void (*func)(struct rcu_head *rcu))  
 
/* 
写端调用,把一个指针p赋为指针v。 
*/ 
rcu_assign_pointer()  
typeof(p) rcu_assign_pointer(p, typeof(p) v);  
 
/* 
获得指针p的解引用值 
*/ 
rcu_dereference()  
typeof(p) rcu_assign_pointer(p, typeof(p) v); 

 

http://group.ednchina.com/1036/21283.aspx

http://blog.chinaunix.net/u1/51562/showart_1341707.html

http://www.360doc.com/content/10/0106/17/701200_12820595.shtml

http://blog.csdn.net/ustc_dylan/archive/2009/04/05/4049647.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值