notifier通知链机制

本文介绍了Linux内核中的事件通知链机制,用于在子系统间传递状态变化信息。内容涵盖通知链的目的、范围、代码位置、notifier_block数据结构、四种通知链类型以及使用流程,特别强调了notifier_block函数的返回值意义。
摘要由CSDN通过智能技术生成

1. 目的

Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notificationchain)。

2. 范围

通知链只能用在各个子系统之间,而不能在内核和用户空间进行事件的通知。

3. 代码位置

组成内核的核心系统代码均位于kernel目录下,通知链表位于kernel/notifier.c中,对应的头文件为include/linux/notifier.h。

4. 被通知数据结构

notifier_block是通知链中的主要结构:

struct notifier_block {
   
    int (*notifier_call)(struct notifier_block *, unsigned long, void *);
    struct notifier_block *next;
    int priority;
};

其中,
a. notifier_call:当相应事件发生时应该调用的函数,由被通知方提供;
b. notifier_block *next:用于链接成链表的指针;
c. priority:回调函数的优先级,一般默认为0;

5. 通知链数据结构

围绕核心数据结构notifier_block,内核定义了四种通知链类型:
a. 原子通知链( Atomic notifier chains ):通知链元素的回调函数&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值