偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1747)
分类: LINUX
2010-11-08 17:26:24
unsigned int seq;
do {
seq = read_seqbegin(&the_lock);
/* Do what you need to do */
} while read_seqretry(&the_lock, seq);
struct my_stuff *stuff;
rcu_read_lock(); //禁用内核抢占并没有任何等待的延迟,直接进入原子操作。
stuff = find_the_stuff(args...);//下面两行为原子操作。
do_something_with(stuff);
rcu_read_unlock();
写操作
分配新结构,如有需要拷贝旧数据,然后替换读代码要看到的指针。资源改变完成后调用
void call_rcu(struct rcu_head *head, void(*func)(void *arg), void *arg);
func为释放旧资源的调用,arg为func执行的arg