作者:
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后续又更新到2010,2014,2019版本。
实验
rcu_example 是GitHub一个关于RCU调用的代码。
Be First to Comment