区块链白皮书代写
转自:http://blog.csdn.net/wuhzossibility/article/details/8079025
内核通知链1.1. 概述
Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定机制告知使用其服务其他子系统,以便其他子系统采取相应措施。为满足这样需求,内核实现了事件通知链机制(notificationchain)。
通知链只能用在各个子系统之间,而不能在内核和用户空间进行事件通知。组成内核核心系统代码均位于kernel目录下,通知链表位于kernel/notifier.c中,对应头文件为include/linux/notifier.h。通知链表机制并不复杂,实现它代码只有区区几百行。
事件通知链表是一个事件处理函数列表,每个通知链都与某个或某些事件有关,当特定事件发生时,就调用相应事件通知链中回调函数,进行相应处理。
图 1 内核通知链1.2.数据结构
如图 1中所示,Linux网络子系统一共有3个通知链:表示ipv4地址发生变化时inetaddr_chain;表示ipv6地址发生变化inet6addr_chain;还有表示设备注册、状态变化netdev_chain。
在这些链中都是一个个notifier_block结构:
[cpp] view plain copy