linux内核网络源码--通知链

内核很多子系统之间有很强依赖其中一个子系统侦测或者产生事件其他子系统可能都有兴趣为了实现这种交互需求linux使用了所谓通知

本章我们看到

通知如何声明以及网络代码定义了哪些

内核子系统如何通知注册

内核子系统如何链上产生通知信息

注意通知连只在内核子系统之间使用内核用户空间之间通知信息则是依赖其他机制第三章介绍那些

使用通知原因

假设我们如图4-1所示带有四个接口linux路由器显示了路由器五个网络之间关系还有一份简化路由表

让我们看看4-1拓扑结构几个例子网络A直接连接到RT接口eth0网络F没用直接链接RT但是RTeth3直接另一个路由器其他接口地址IP1,并且第二个路由器知道如何联系网络F其他案例都很类似简而言之有些网络直接连接其他网络需要一个或者多个附加路由器协助才能联系得到

有关路由代码如何处理这种情况详细描述参考第七部分本章焦点通知角色假设接口eth3由于网络断线使得管理命令失效或者造成硬件失败结果RT无法联系网络DEF因此应该路由表中删除谁将通知路由子系统接口失效那就是通知

上图稍微复杂例子路由子系统动态路由协议交互这种协议可以调整一个或者多个路由表使其吻合网络拓扑结构因此拓扑结构许可的时候就可以处理接口失败问题

上图RT可以通过网络A网络E联系网络F最初E是因为成本较少但是现在E已经无法联系因此路由比哦啊应该更新网络F路由网络A这种决策基础可能包括一些本地主机事件诸如设备注册删除以及路由配置中复杂因素路由协议在任何情况下管理路由比哦啊路由子系统必须其他子系统那里收到相关信息通知因而产生通知链需求

概论

通知就是一份简单的函数列表给定事件发生时候予以执行每个函数都让另一个子系统知道调用函数子系统所发生一个事件或者子系统侦测一个事件

因此没调通知链而言都有被动主动也就是所谓发布--订阅模型

被通知就是要求接收事件子系统而且提供回调函数予以调用

通知者 就是感受到一个事件调用函数子系统

所执行函数通知的子系统选取绝不是链条拥有者决定执行什么函数拥有者只是定义这份列表而已任何内核子系统可以链条注册一个回调函数接收通知信息

通知使用源码易于编写维护想象一下一个通用函数使用通知如何把一个事件通知外部子系统

if (subsystem_X_enabled)

do_something_1

if (subsystem_Y_enabled)

do_something_2

if (subsystem_Z_enabled)

do_something_3

换言之必须每个可能对一个事件感兴趣子系统引入一个条件结果每次添加一个子系统内核子系统维护就得添加一个子句

子系统维护不可能追踪每个添加内核咨询哦太难过然而每位子系统维护者都应该知道

1 自己来自其他子系统哪种事件感兴趣

2 自己知道的事件几种并且其他子系统可能感兴趣的事件又是哪几种

因此通知允许每个子系统其他咨询哦太难过共享发生事件无需知道究竟哪些子系统产生事件以及那些子系统为什么感兴趣

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PWM-GPIO驱动程序是Linux内核中的一个驱动模块,用于控制嵌入式系统中的GPIO引脚产生PWM信号。该驱动程序允许开发人员通过编程的方式来控制GPIO引脚的电平变化,从而产生不同占空比的PWM信号。 在Linux内核中,PWM-GPIO驱动程序通过向用户空间提供了相应的接口来实现PWM信号的控制。开发人员可以通过打开相应的设备节点,并使用相应的系统调用函数来设置PWM的频率、占空比等参数,从而实现对GPIO引脚的PWM信号的控制。 驱动程序的核心部分是一个PWM子系统,它与GPIO子系统紧密集成。PWM子系统负责管理PWM信号的生成和控制,而GPIO子系统负责管理GPIO引脚的配置和操作。PWM-GPIO驱动程序在这两个子系统之间起着桥梁的作用。 PWM-GPIO驱动程序的实现方式与硬件平台相关,每个平台可能有不同的具体实现。在驱动程序的初始化过程中,必须先配置GPIO引脚的功能为PWM模式,并将相应的寄存器映射到内核中,以便能够通过对寄存器的操作来控制GPIO引脚。驱动程序还需要初始化PWM子系统,为每个GPIO引脚分配相应的PWM通道,并根据需求设置PWM的频率、占空比等参数。 通过PWM-GPIO驱动程序,开发人员可以方便地利用Linux内核的功能来实现对嵌入式系统中GPIO引脚产生PWM信号的控制。这为开发PWM驱动、控制舵机、LED等应用提供了便捷的方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值