Linux内核中的原子通知链(atomic notifier)

1. 什么是原子通知链(atomic notifier)

1.1 通知链机制

linux内核通知链机制是一种订阅-发布模型,内核的很多子系统之间具有依赖性,当其中一个子系统1产生事件,子系统2有兴趣时,子系统2可以注册子系统1的通知链,当子系统1事件发生时,通知链机制使子系统2收到该事件的消息及其数据。原子通知链是通知链中的一种。

1.2 核心函数
注册:atomic_notifier_chain_register
解注册:atomic_notifier_chain_unregister
调用:atomic_notifier_call_chain

2. 原子通知链特点

  • 非阻塞性质:这种通知链执行时是原子的,不允许阻塞。它的操作是快速的、不可中断的,不会被其他任务打断。
  • 适用场景:适用于需要快速、不被打断地进行通知传递的情况。通常用于轻量级的、不涉及复杂同步或互斥问题的通知需求。

3. 原子通知链中“原子操作”的实现

atomic notifier的原子操作是通过rcu机制来实现的,来看一下call函数流程:

int __atomic_notifier_call_chain(struct atomic_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls){
    int ret;
	rcu_read_lock();
	ret = notifier_call_chain(&nh->head, val, v, nr_to_call, nr_calls);
	rcu_read_unlock();	return ret;
}

int atomic_notifier_call_chain(struct atomic_notifier_head *nh, unsigned long val, void *v){
	return __atomic_notifier_call_chain(nh, val, v, -1, NULL);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值