什么是RCU :API

这篇文章     RCU part 3: the RCU API

作者:

Paul E. McKenney, IBM Linux Technology Center

做为 “What is RCU”系列文章的最后一篇, 第三篇文章主要介绍了RCU API设计

基本操作

rcu_read_lock()

读者在读取由RCU保护的共享数据时使用该函数标记它进入读端临界区。

rcu_read_unlock()

该函数与rcu_read_lock配对使用,用以标记读者退出读端临界区。

synchronsize_rcu()

该函数由RCU写端调用,它将阻塞写者,直到经过grace period后,即所有的读者已经完成读端临界区,写者才可以继续下一步操作。

call_rcu()

写端调用不会阻塞

链表操作

list_for_each_entry_rcu()

链表遍历

list_add_rcu()
list_add_tail_rcu()
list_del_rcu()
list_replace_rcu()
list_splice_init_rcu()

链表更新

作者对RCU判断是会在

the reader-writer-locking(读写锁), reference-counting(引用技术), and existence-guarantee constructs(存在保证结构)有更多的扩展。 

更新

文章中列的API后续又更新到201020142019版本。

实验

rcu_example 是GitHub一个关于RCU调用的代码。 

 

参考

Linux 2.6内核中新的锁机制–RCU

Be First to Comment

发表回复