linux内核源码分析--通用函数指针

除了稍早讨论net_device 结构的列表管理字段还有一些字段用于管理一些结构确保这些结构在不需要予以删除

atomic_t refcnt

引用计数计数器变为零之前设备无法除名参见第八章

int watchdog_timeo

struct timer_list watchdog_timer

配合先前讨论tx_timeout变量这些字段实现第十一章 看门狗定时器一节讨论定时器

int (*poll)(...)

struct list_head poll_list

int quota

int weight

NAPI 功能使用对此第十章予以描述

const struct iw_handler_def *wireless_handlers

struct iw_public_data *wireless_data

其他无线设备使用参数函数指针还可以参见get_wireless_stats

struct list_head todo_list

网络设备注册除名两步骤进行todo_list用于处理第二步骤参见第八章

struct class_device class_dev

通用内核驱动程序基础架构使用

函数指针

我们在第一章看到网络代码大量使用了函数指针net_device数据结构也有不少函数指针这类函数主要用于

传输接收

在缓冲区添加或者解析链路层报头

改变配置一部分

获取统计数据

特定功能交互

前几节说明完成特定任务所需字段已经介绍了一些函数指针以下通用函数指针

struct ethtool_ops *ethtool_ops

指向一组函数指针指针用于设置或者取出不同设备参数配置参见第八章Ethtool 一节

int (*init)(...)

void (*uninit)(...)

void (*destructor)(...)

int (*open)(...)

int (*stop)(...)

同于初始化清理销毁开启以及关闭一个设备不是所有函数都会被用到参见第八章

struct net_device_stats * (*get_stats)(...)

struct iw_statistics* (*get)wireless_stats)(...)

设备驱动程序所收集一些统计数据可以使用用户空间应用程序予以显示ifconfigip

其他统计数据严格内核使用贲张稍早设备状态一节对此已经讨论这两种方法用于收集统计数据get_stats 针对一般设备get_wireless_stats 针对无线设备还可以参见稍早统计数据一节

int (*hard_start_xmit)(...)

用于传输一个参见十一章

int (*hard_header)(...)

int (*rebuild_header)(...)

int (*hard_header_cache)(...)

void (*header_cache_update)(...)

int (*hard)header_parse)(...)

int (*neigh_setup)(...)

邻居层使用参见二十七设备驱动程序提供方法以及邻居初始化两节

int (*do_ioctl)()

ioctl系统调用用于设备发出命令调用方法可以处理一些ioctl命令

void (*set_multicast_list)(...)

链路层多播一节已经知道mc_listmc_count用于管理L2多播地址列表, 这个方法用于要求设备驱动程序配置设备坚挺这些地址通常不会直接调用方法而是通过包裹函数dev_mc_upload 或者无锁版本__dev_mc_upload 一个设备无法安装多播地址列表只会将其全部开启

int (*set_mac_address)(...)

改变设备mac地址设备没有提供功能就会NULL

int (*set_config)(...)

配置驱动参数比如硬件参数irq, io_addr以及以及if_port, 较高分层参数do_ioctl 来处理使用方法设备不是很多特别是实现探测函数新设备可以drivers/net/sis900.csis900_set_config 一个好的例子及其说明

int (*change_mtu)(...)

改变设备MTU改变字段对设备驱动程序没有影响只是强制内核软件接受新的MTU根据处理分段

void (*tx_timeout)(...)

再看门定时器到期时候调用这个函数用于确认传送事都花了一段可能很长时间才完成只有定义了方法看门狗定时器才会启动参见第十一章 看门狗定时器一节更多信息

int (*accept_fastpath)(...)

快速交换一种内核功能, 允许设备驱动程序终端期间使用一个缓存路由输入流量也称为fastroute

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT进阶】Qt http编程之json解析的简单介绍

往期回顾 【QT进阶】Qt http编程之后端API测试工具postman使用介绍-CSDN博客 【QT进阶】Qt http编程之http相关类的简单介绍-CSDN博客 【QT进阶】Qt http编程之用户登录注册功能实现-CSDN博客 【QT进阶】Qt http编程之json解析的简单介绍 一、JSON字符串 1、基本概念 JSON字…

电脑便签怎么固定位置 能固定在桌面的电脑便签

在繁忙的工作中,电脑便签是我离不开的小助手。每当灵感闪现,或是需要记录待办事项时,我总会打开便签,快速地记录下来。它就像我电脑屏幕上的一块“记事板”,随时提醒我未完成的工作和即将到来的任务。 但有一段时间&a…

i管家空间不足提醒怎么关闭

i管家的空间不足提醒是为了提醒用户手机存储空间不足,可能会影响手机的正常运行。目前,这个提醒功能是无法直接关闭的。如果您希望减少这类提醒的出现,可以尝试以下几种方法: 清理手机存储:检查手机中是否有不需要的文…

Unity3D 多人战场Animation优化详解

在Unity3D中,实现多人战场动画优化是一个非常重要的任务。动画在游戏中扮演着非常重要的角色,它能够让游戏更加生动和真实。然而,在多人战场中,同时播放多个角色的动画会给游戏性能带来很大的压力。因此,我们需要采取一…

JavaWeb--JS正则表达式

目录 1. 简介 1.1. 语法 1.1.1. 使用RegExp构造函数创建正则表达式 1.1.2. 使用正则表达式字面量语法创建正则表达式 1.1.3. 正则表达式的应用 2. 修饰符 3. 方括号 4. 元字符 5. 量词 6. RegExp对象方法 7. 支持正则的String的方法 8. 正则表达式体验 8.1. 验证 …

restful请求风格的增删改查-----查询and添加

一、restful风格的介绍 restful也称之为REST ( Representational State Transfer ),可以将它理解为一种软件架构风格或设计风格,而不是一个标准。简单来说,restful风格就是把请求参数变成请求路径的一种风格。例如,传统的URL请求…

rk3568死机调试

结论 有两种死机: 一种是有异常栈,此种情况应该是由于linux的实时补丁导致的,去掉实时补丁后未复现;一种无异常栈,但是打印mmc异常:mmc0: cache flush error -110,此种情况需要加打印继续定位。无异常栈死机 无异常栈死机是由于MMC初始化失败导致,根本原因是系统启动…

iOS原生与H5交互方法

UIWebView Objective-C 调用 JavaScript 在使用UIWebView时,可以使用stringByEvaluatingJavaScriptFromString:方法来执行JavaScript代码。 示例代码: NSString *result [webView stringByEvaluatingJavaScriptFromString:"returnFunction()&q…

Kubesphere使用教程

一、简介 KubeSphere是一个开源的容器平台,它提供了Kubernetes集群的部署、运维和管理能力,并且具有友好的Web UI界面,降低了Kubernetes的使用门槛。本教程将引导你逐步了解KubeSphere的基本使用。 二、环境准备 准备至少三台服务器或虚拟…

Darknet,看过很多篇,这个最清晰了

Darknet深度学习框架:YOLO背后的强大支持 Darknet,一个由Joseph Redmon开发的轻量级神经网络框架,以其在计算机视觉任务,特别是目标检测中的卓越表现而闻名。本文将详细介绍Darknet的基本概念、结构以及它在深度学习领域的应用。…

UE4_动画基础_根运动Root Motion

学习笔记,仅供参考! 在游戏动画中,角色的碰撞胶囊体(或其他形状)通常由控制器驱动通过场景。然后来自该胶囊体的数据用于驱动动画。例如,如果胶囊体在向前移动,系统就会知道在角色上播放一个跑步…

Kivy Pyinstaller Windows 打包

各种报错 ImportErrorWhenRunningHook: Failed to import module __PyInstaller_hooks_0_kivy required by hook for module 三天美好时光啥也没干,就研究这个了。 打包成功,运行应用程序exe闪退的。终于打包成功了。 这所有的原因都是因为我爱你。如果…

请编写一个函数int fun(int*s,int t,int *k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法和详细的解析。 题干 请编写一个函…

小型架构实验模拟

一 实验需求 二 实验环境 22 机器: 做nginx 反向代理 做静态资源服务器 装 nginx keepalived filebeat 44机器: 做22 机器的备胎 装nginx keepalived 99机器:做mysql的主 装mysqld 装node 装filebeat 77机器:做mysq…

pytorch 今日小知识2——F.avg_pool2d、clamp

今天看到 def gem(self, ipts):return F.avg_pool2d(ipts.clamp(minself.eps).pow(self.p), (1, ipts.size(-1))).pow(1. / self.p) 这个函数中的F.avg_pool2d 不是很理解就查了一下 ipts.clamp(1.0e-6): 这个操作将ipts中的每个元素限制在[1.0e-6, inf)的范围内。也就是说&a…

【Python】——字典

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

【python】一文读懂python函数

【python】一文读懂python函数 文章目录 【python】一文读懂python函数(一)简单入门理解函数(二)函数的基本结构:(三)函数的默认值(四)可变参数(五)基于字典的可变参数(**可变参数)(六)函数中变量的作用域(七)lambda函数(八) 过滤函数filter()在Python中,…

谷歌Gemini 1.5 Pro国内怎么用?国内镜像来了

长期以来,许多人向我咨询是否存在一个稳定而高效的全球AI大模型测试平台,这个平台需要不仅真实可靠,而且能够提供稳定和快速的服务,不会频繁出现故障或响应缓慢的问题。然而,当我发现了AskManyAI时,我被其所…

蛋白质治病突变的计算方法(三)

3 用于识别致病突变的特征 文献中使用了几种特征来识别蛋白质中的致病突变。它们大致分为三类:(1)序列,(2)结构和(3)网络,以及它们的组合。图1说明了这三组中的一些重要属性。 图1 用于识别致病突变和热点的重要特征。 基于氨基酸序列的特性…

go下载依赖时超时timeout

go下载依赖时超时timeout go: module k8s.io/component-base/logs: Get “https://proxy.golang.org/k8s.io/component-base/logs/v/list”: dial tcp 172.217.160.113:443: i/o timeout 解决办法如下,运行命令: go env -w GO111MODULEon go env -w GO…